/spec/lib/rex/proto/ntp/modes_spec.rb

https://github.com/debbiemezyene/metasploit-framework · Ruby · 83 lines · 71 code · 10 blank · 2 comment · 6 complexity · 64587983dd82349ba1a0e12ab2db165f MD5 · raw file

  1. # -*- coding: binary -*-
  2. #
  3. require 'rex/proto/ntp/modes'
  4. describe "Rex::Proto::NTP mode message handling" do
  5. before do
  6. @payload = 'R7' * 7
  7. end
  8. describe Rex::Proto::NTP::NTPControl do
  9. before do
  10. @control_raw = "\x1e\x05\x12\x34\x12\x34\x12\x34\x00\x00\x00\x0e" + @payload
  11. @control = Rex::Proto::NTP::NTPControl.new
  12. @control.version = 3
  13. @control.response = 0
  14. @control.more = 0
  15. @control.operation = 5
  16. @control.sequence = 0x1234
  17. @control.association_id = 0x1234
  18. @control.status = 0x1234
  19. @control.payload_offset = 0
  20. @control.payload_size = 14
  21. @control.payload = @payload
  22. end
  23. it 'Generates control NTP messages correctly' do
  24. @control_raw.should == @control.to_s
  25. end
  26. it 'Parses control NTP messages correctly' do
  27. parsed_raw = Rex::Proto::NTP::NTPControl.new(@control_raw)
  28. @control.should == parsed_raw
  29. end
  30. end
  31. describe Rex::Proto::NTP::NTPGeneric do
  32. before do
  33. @generic_raw = "\xcc\x12\x34\x56" + @payload
  34. @generic = Rex::Proto::NTP::NTPGeneric.new
  35. @generic.li = 3
  36. @generic.version = 1
  37. @generic.mode = 4
  38. @generic.stratum = 0x12
  39. @generic.poll = 0x34
  40. @generic.precision = 0x56
  41. @generic.payload = @payload
  42. end
  43. it 'Generates generic NTP messages correctly' do
  44. @generic_raw.should == @generic.to_s
  45. end
  46. it 'Parses generic NTP messages correctly' do
  47. parsed_raw = Rex::Proto::NTP::NTPGeneric.new(@generic_raw)
  48. @generic.should == parsed_raw
  49. end
  50. end
  51. describe Rex::Proto::NTP::NTPPrivate do
  52. before do
  53. @private_raw = "\x1f\x5a\x01\x99\x00\x00\x00\x00" + @payload
  54. @private = Rex::Proto::NTP::NTPPrivate.new
  55. @private.response = 0
  56. @private.more = 0
  57. @private.version = 3
  58. @private.mode = 7
  59. @private.auth = 0
  60. @private.sequence = 90
  61. @private.implementation = 1
  62. @private.request_code = 153
  63. @private.payload = @payload
  64. end
  65. it 'Generates private NTP messages correctly' do
  66. @private_raw.should == @private.to_s
  67. end
  68. it 'Parses private NTP messages correctly' do
  69. parsed_raw = Rex::Proto::NTP::NTPPrivate.new(@private_raw)
  70. @private.should == parsed_raw
  71. end
  72. end
  73. end