packetfu 1.1.10 → 1.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +2 -0
  4. data/.gitignore +3 -0
  5. data/.travis.yml +8 -0
  6. data/CONTRIBUTING.md +47 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +1 -1
  9. data/README.rdoc +35 -30
  10. data/Rakefile +4 -4
  11. data/bench/octets.rb +9 -9
  12. data/examples/100kpackets.rb +12 -12
  13. data/examples/ackscan.rb +16 -16
  14. data/examples/arp.rb +35 -35
  15. data/examples/arphood.rb +36 -36
  16. data/examples/dissect_thinger.rb +6 -6
  17. data/examples/new-simple-stats.rb +23 -23
  18. data/examples/packetfu-shell.rb +25 -25
  19. data/examples/simple-sniffer.rb +9 -9
  20. data/examples/simple-stats.rb +23 -23
  21. data/examples/slammer.rb +3 -3
  22. data/gem-public_cert.pem +21 -0
  23. data/lib/packetfu.rb +149 -127
  24. data/lib/packetfu/capture.rb +169 -169
  25. data/lib/packetfu/config.rb +52 -52
  26. data/lib/packetfu/inject.rb +56 -56
  27. data/lib/packetfu/packet.rb +531 -528
  28. data/lib/packetfu/pcap.rb +579 -579
  29. data/lib/packetfu/protos/arp.rb +90 -90
  30. data/lib/packetfu/protos/arp/header.rb +158 -158
  31. data/lib/packetfu/protos/arp/mixin.rb +36 -36
  32. data/lib/packetfu/protos/eth.rb +44 -44
  33. data/lib/packetfu/protos/eth/header.rb +243 -243
  34. data/lib/packetfu/protos/eth/mixin.rb +3 -3
  35. data/lib/packetfu/protos/hsrp.rb +69 -69
  36. data/lib/packetfu/protos/hsrp/header.rb +107 -107
  37. data/lib/packetfu/protos/hsrp/mixin.rb +29 -29
  38. data/lib/packetfu/protos/icmp.rb +71 -71
  39. data/lib/packetfu/protos/icmp/header.rb +82 -82
  40. data/lib/packetfu/protos/icmp/mixin.rb +14 -14
  41. data/lib/packetfu/protos/invalid.rb +49 -49
  42. data/lib/packetfu/protos/ip.rb +69 -69
  43. data/lib/packetfu/protos/ip/header.rb +291 -291
  44. data/lib/packetfu/protos/ip/mixin.rb +40 -40
  45. data/lib/packetfu/protos/ipv6.rb +50 -50
  46. data/lib/packetfu/protos/ipv6/header.rb +188 -188
  47. data/lib/packetfu/protos/ipv6/mixin.rb +29 -29
  48. data/lib/packetfu/protos/tcp.rb +176 -176
  49. data/lib/packetfu/protos/tcp/ecn.rb +35 -35
  50. data/lib/packetfu/protos/tcp/flags.rb +74 -74
  51. data/lib/packetfu/protos/tcp/header.rb +268 -268
  52. data/lib/packetfu/protos/tcp/hlen.rb +32 -32
  53. data/lib/packetfu/protos/tcp/mixin.rb +46 -46
  54. data/lib/packetfu/protos/tcp/option.rb +321 -321
  55. data/lib/packetfu/protos/tcp/options.rb +95 -95
  56. data/lib/packetfu/protos/tcp/reserved.rb +35 -35
  57. data/lib/packetfu/protos/udp.rb +159 -123
  58. data/lib/packetfu/protos/udp/header.rb +91 -91
  59. data/lib/packetfu/protos/udp/mixin.rb +3 -3
  60. data/lib/packetfu/structfu.rb +280 -280
  61. data/lib/packetfu/utils.rb +292 -225
  62. data/lib/packetfu/version.rb +41 -41
  63. data/packetfu.gemspec +14 -3
  64. data/spec/arp_spec.rb +191 -0
  65. data/spec/eth_spec.rb +148 -0
  66. data/spec/icmp_spec.rb +97 -0
  67. data/spec/ip_spec.rb +78 -0
  68. data/spec/ipv6_spec.rb +81 -0
  69. data/spec/packet_spec.rb +61 -59
  70. data/spec/packet_subclasses_spec.rb +9 -10
  71. data/spec/packetfu_spec.rb +55 -62
  72. data/spec/sample3.pcap +0 -0
  73. data/spec/spec_helper.rb +44 -0
  74. data/spec/structfu_spec.rb +270 -271
  75. data/spec/tcp_spec.rb +76 -77
  76. data/spec/udp_spec.rb +32 -0
  77. data/spec/utils_spec.rb +95 -0
  78. data/test/all_tests.rb +14 -17
  79. data/test/func_lldp.rb +3 -3
  80. data/test/ptest.rb +2 -2
  81. data/test/test_capture.rb +45 -45
  82. data/test/test_eth.rb +70 -68
  83. data/test/test_hsrp.rb +9 -9
  84. data/test/test_inject.rb +18 -18
  85. data/test/test_invalid.rb +16 -16
  86. data/test/test_octets.rb +23 -21
  87. data/test/test_packet.rb +156 -154
  88. data/test/test_pcap.rb +172 -170
  89. data/test/test_structfu.rb +99 -97
  90. data/test/test_tcp.rb +322 -320
  91. data/test/test_udp.rb +78 -76
  92. metadata +108 -44
  93. metadata.gz.sig +2 -0
  94. data/spec/ethpacket_spec.rb +0 -74
  95. data/test/test_arp.rb +0 -135
  96. data/test/test_icmp.rb +0 -62
  97. data/test/test_ip.rb +0 -50
  98. data/test/test_ip6.rb +0 -68
@@ -1,96 +1,98 @@
1
1
  #!/usr/bin/env ruby
2
+ # -*- coding: binary -*-
3
+
2
4
  require 'test/unit'
3
5
  $:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
4
6
  require 'packetfu'
5
7
 
6
8
  class String
7
- def bin
8
- self.scan(/../).map {|x| x.to_i(16).chr}.join
9
- end
9
+ def bin
10
+ self.scan(/../).map {|x| x.to_i(16).chr}.join
11
+ end
10
12
  end
11
13
 
12
14
  class UDPTest < Test::Unit::TestCase
13
- include PacketFu
15
+ include PacketFu
14
16
 
15
- def test_udp_header_new
16
- u = UDPHeader.new
17
- assert_kind_of UDPHeader, u
18
- assert_equal(8, u.to_s.size)
19
- assert_equal("\x00\x00\x00\x00\x00\x08\x00\x00", u.to_s)
20
- end
17
+ def test_udp_header_new
18
+ u = UDPHeader.new
19
+ assert_kind_of UDPHeader, u
20
+ assert_equal(8, u.to_s.size)
21
+ assert_equal("\x00\x00\x00\x00\x00\x08\x00\x00", u.to_s)
22
+ end
21
23
 
22
- def test_udp_peek
23
- u = UDPPacket.new
24
- u.ip_saddr = "10.20.30.40"
25
- u.ip_daddr = "50.60.70.80"
26
- u.udp_src = 53
27
- u.udp_dport = 1305
28
- u.payload = "abcdefghijklmnopqrstuvwxyz"
29
- u.recalc
30
- puts "\n"
31
- puts "UDP Peek format: "
32
- puts u.peek
33
- assert (u.peek.size <= 80)
34
- end
24
+ def test_udp_peek
25
+ u = UDPPacket.new
26
+ u.ip_saddr = "10.20.30.40"
27
+ u.ip_daddr = "50.60.70.80"
28
+ u.udp_src = 53
29
+ u.udp_dport = 1305
30
+ u.payload = "abcdefghijklmnopqrstuvwxyz"
31
+ u.recalc
32
+ puts "\n"
33
+ puts "UDP Peek format: "
34
+ puts u.peek
35
+ assert (u.peek.size <= 80)
36
+ end
35
37
 
36
- def test_udp_pcap
37
- u = UDPPacket.new
38
- assert_kind_of UDPPacket, u
39
- u.recalc
40
- u.to_f('udp_test.pcap','a')
41
- u.ip_saddr = "10.20.30.40"
42
- u.ip_daddr = "50.60.70.80"
43
- u.payload = "+some fakey-fake udp packet"
44
- u.udp_src = 1205
45
- u.udp_dst = 13013
46
- u.recalc
47
- u.to_f('udp_test.pcap','a')
48
- end
38
+ def test_udp_pcap
39
+ u = UDPPacket.new
40
+ assert_kind_of UDPPacket, u
41
+ u.recalc
42
+ u.to_f('udp_test.pcap','a')
43
+ u.ip_saddr = "10.20.30.40"
44
+ u.ip_daddr = "50.60.70.80"
45
+ u.payload = "+some fakey-fake udp packet"
46
+ u.udp_src = 1205
47
+ u.udp_dst = 13013
48
+ u.recalc
49
+ u.to_f('udp_test.pcap','a')
50
+ end
49
51
 
50
- def test_udp_read
51
- sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
52
- pkt = Packet.parse(sample_packet)
53
- assert_kind_of UDPPacket, pkt
54
- assert_equal(0x8bf8, pkt.udp_sum.to_i)
55
- pkt.to_f('udp_test.pcap','a')
56
- end
52
+ def test_udp_read
53
+ sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
54
+ pkt = Packet.parse(sample_packet)
55
+ assert_kind_of UDPPacket, pkt
56
+ assert_equal(0x8bf8, pkt.udp_sum.to_i)
57
+ pkt.to_f('udp_test.pcap','a')
58
+ end
57
59
 
58
- def test_udp_checksum
59
- sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
60
- pkt = Packet.parse(sample_packet)
61
- assert_kind_of UDPPacket, pkt
62
- pkt.recalc
63
- assert_equal(0x8bf8, pkt.udp_sum.to_i)
64
- pkt.to_f('udp_test.pcap','a')
65
- end
60
+ def test_udp_checksum
61
+ sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
62
+ pkt = Packet.parse(sample_packet)
63
+ assert_kind_of UDPPacket, pkt
64
+ pkt.recalc
65
+ assert_equal(0x8bf8, pkt.udp_sum.to_i)
66
+ pkt.to_f('udp_test.pcap','a')
67
+ end
66
68
 
67
- def test_udp_read_strip
68
- str = "01005e7ffffa100ba9eb63400800450000a12d7c0000011159b446a5fb7ceffffffacdf3076c008d516e4d2d534541524348202a20485454502f312e310d0a486f73743a3233392e3235352e3235352e3235303a313930300d0a53543a75726e3a736368656d61732d75706e702d6f72673a6465766963653a496e7465726e6574476174657761794465766963653a310d0a4d616e3a22737364703a646973636f766572220d0a4d583a330d0a0d0a".bin
69
- str << "0102".bin # Tacking on a couple extra bites tht we'll strip off.
70
- not_stripped = UDPPacket.new
71
- not_stripped.read(str)
72
- assert_equal 135, not_stripped.udp_header.body.length
73
- stripped = UDPPacket.new
74
- stripped.read(str, :strip => true)
75
- assert_equal 133, stripped.udp_header.body.length
76
- end
69
+ def test_udp_read_strip
70
+ str = "01005e7ffffa100ba9eb63400800450000a12d7c0000011159b446a5fb7ceffffffacdf3076c008d516e4d2d534541524348202a20485454502f312e310d0a486f73743a3233392e3235352e3235352e3235303a313930300d0a53543a75726e3a736368656d61732d75706e702d6f72673a6465766963653a496e7465726e6574476174657761794465766963653a310d0a4d616e3a22737364703a646973636f766572220d0a4d583a330d0a0d0a".bin
71
+ str << "0102".bin # Tacking on a couple extra bites tht we'll strip off.
72
+ not_stripped = UDPPacket.new
73
+ not_stripped.read(str)
74
+ assert_equal 135, not_stripped.udp_header.body.length
75
+ stripped = UDPPacket.new
76
+ stripped.read(str, :strip => true)
77
+ assert_equal 133, stripped.udp_header.body.length
78
+ end
77
79
 
78
- def test_udp_alter
79
- sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
80
- pkt = Packet.parse(sample_packet)
81
- assert_kind_of UDPPacket, pkt
82
- pkt.payload = pkt.payload.gsub(/metasploit/,"MeatPistol")
83
- pkt.recalc
84
- assert_equal(0x8341, pkt.udp_sum)
85
- pkt.to_f('udp_test.pcap','a')
86
- end
80
+ def test_udp_alter
81
+ sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
82
+ pkt = Packet.parse(sample_packet)
83
+ assert_kind_of UDPPacket, pkt
84
+ pkt.payload = pkt.payload.gsub(/metasploit/,"MeatPistol")
85
+ pkt.recalc
86
+ assert_equal(0x8341, pkt.udp_sum)
87
+ pkt.to_f('udp_test.pcap','a')
88
+ end
87
89
 
88
- def test_udp_reread
89
- sample_packet = PacketFu::UDPPacket.new
90
- pkt = Packet.parse(sample_packet.to_s)
91
- assert sample_packet.is_udp?
92
- assert pkt.is_udp?
93
- end
90
+ def test_udp_reread
91
+ sample_packet = PacketFu::UDPPacket.new
92
+ pkt = Packet.parse(sample_packet.to_s)
93
+ assert sample_packet.is_udp?
94
+ assert pkt.is_udp?
95
+ end
94
96
 
95
97
 
96
98
  end
metadata CHANGED
@@ -1,65 +1,121 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packetfu
3
3
  version: !ruby/object:Gem::Version
4
- version: !binary |-
5
- MS4xLjEw
6
- prerelease:
4
+ version: 1.1.11
7
5
  platform: ruby
8
6
  authors:
9
7
  - Tod Beardsley
10
8
  autorequire:
11
9
  bindir: bin
12
- cert_chain: []
13
- date: 2014-01-12 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQ0wCwYDVQQDDAR0b2Ri
14
+ MRgwFgYKCZImiZPyLGQBGRYIcGFja2V0ZnUxEzARBgoJkiaJk/IsZAEZFgNjb20w
15
+ HhcNMTUwODI1MTQ1MzQ2WhcNMTYwODI0MTQ1MzQ2WjA+MQ0wCwYDVQQDDAR0b2Ri
16
+ MRgwFgYKCZImiZPyLGQBGRYIcGFja2V0ZnUxEzARBgoJkiaJk/IsZAEZFgNjb20w
17
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDl/jdqB/u4WnnAV7ds6U7r
18
+ kffHRJCMc1+s0lvjnWMnZuegjJkuElm0jNQnkUzNqhJGI2NVDc1COoT6VHsEPRi8
19
+ uD8po+7pisLwqUHIyx8PFu+pGSRGawEgAPT5DfEf9MwGTob1G9vm1Hv7rTMN+S1X
20
+ nMIxpFwiMilhLKdoTEZAo0moFbWEVK4ZuEaNkPXGxFKEdnpyb8Fi+/akzwWtwRp1
21
+ ByJktlF3YIZgAimvY/PtV0V1n+Mktoz+706EUDe/ZnD8M+o6orzqryCiQrqdzJyk
22
+ cPv7u1RuG1VPC8mK5TmB9lqlMPi/hxbjC4LfhJsZYoO1AF6baZ8HzqCISInBLwyd
23
+ AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBS/B6/d
24
+ CN84yx061Q/xqilGxY4qqTAcBgNVHREEFTATgRF0b2RiQHBhY2tldGZ1LmNvbTAc
25
+ BgNVHRIEFTATgRF0b2RiQHBhY2tldGZ1LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEA
26
+ Oz/R618bt2/QxwL1wM6bP/yb+xNd/DR8aOUeKZwarfWuo6zhVY03qiydlElHU0YJ
27
+ Rl0/JGQIHNVUzIr3J/QXv225LUECYTejPKC8LcELdfjSfUwzTd75zrGisL0//a4m
28
+ +Zcv8PSfdOCug3jj5EDMVZe/sX7G4vEqM81SaQaUYFltKGk2YUrlYJsNGW6Yp4As
29
+ c4y7lD0Rc4OsaoWT5ozhFBJv1qSuoL1y1qySsVazbc0jYjxm6HkVWqOd1cO5zO74
30
+ AFvBtuFFTUDdrs3M/q6ktx295osXr2XpaygJmhkMLj81xoIX9G8eEjPc/XQWDlI1
31
+ ma/kCj5vaQ3hma/0DsajCg==
32
+ -----END CERTIFICATE-----
33
+ date: 2015-08-25 00:00:00.000000000 Z
14
34
  dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: network_interface
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0.0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0.0'
15
49
  - !ruby/object:Gem::Dependency
16
50
  name: pcaprub
17
51
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
52
  requirements:
20
- - - ! '>='
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '0.12'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
21
61
  - !ruby/object:Gem::Version
22
- version: 0.9.2
62
+ version: '0.12'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.3'
23
70
  type: :development
24
71
  prerelease: false
25
72
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
73
  requirements:
28
- - - ! '>='
74
+ - - "~>"
29
75
  - !ruby/object:Gem::Version
30
- version: 0.9.2
76
+ version: '10.3'
31
77
  - !ruby/object:Gem::Dependency
32
78
  name: rspec
33
79
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
80
  requirements:
36
- - - ! '>='
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '3.0'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '3.0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-its
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
37
96
  - !ruby/object:Gem::Version
38
- version: 2.6.2
97
+ version: '1.2'
39
98
  type: :development
40
99
  prerelease: false
41
100
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
101
  requirements:
44
- - - ! '>='
102
+ - - "~>"
45
103
  - !ruby/object:Gem::Version
46
- version: 2.6.2
104
+ version: '1.2'
47
105
  - !ruby/object:Gem::Dependency
48
106
  name: sdoc
49
107
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
108
  requirements:
52
- - - ! '>='
109
+ - - "~>"
53
110
  - !ruby/object:Gem::Version
54
- version: 0.2.0
111
+ version: 0.4.1
55
112
  type: :development
56
113
  prerelease: false
57
114
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
115
  requirements:
60
- - - ! '>='
116
+ - - "~>"
61
117
  - !ruby/object:Gem::Version
62
- version: 0.2.0
118
+ version: 0.4.1
63
119
  description: PacketFu is a mid-level packet manipulation library for Ruby. With it,
64
120
  users can read, parse, and write network packets with the level of ease and fun
65
121
  they expect from Ruby. Note that this gem does not automatically require pcaprub,
@@ -68,12 +124,15 @@ email: todb@packetfu.com
68
124
  executables: []
69
125
  extensions: []
70
126
  extra_rdoc_files:
71
- - .document
127
+ - ".document"
72
128
  - README.rdoc
73
129
  files:
74
- - .document
75
- - .gitignore
76
- - .mailmap
130
+ - ".document"
131
+ - ".gitignore"
132
+ - ".mailmap"
133
+ - ".travis.yml"
134
+ - CONTRIBUTING.md
135
+ - Gemfile
77
136
  - INSTALL.rdoc
78
137
  - LICENSE.txt
79
138
  - README.rdoc
@@ -103,6 +162,7 @@ files:
103
162
  - examples/simple-stats.rb
104
163
  - examples/slammer.rb
105
164
  - examples/uniqpcap.rb
165
+ - gem-public_cert.pem
106
166
  - lib/packetfu.rb
107
167
  - lib/packetfu/capture.rb
108
168
  - lib/packetfu/config.rb
@@ -148,14 +208,22 @@ files:
148
208
  - lib/packetfu/version.rb
149
209
  - packetfu.gemspec
150
210
  - setup.rb
151
- - spec/ethpacket_spec.rb
211
+ - spec/arp_spec.rb
212
+ - spec/eth_spec.rb
213
+ - spec/icmp_spec.rb
214
+ - spec/ip_spec.rb
215
+ - spec/ipv6_spec.rb
152
216
  - spec/packet_spec.rb
153
217
  - spec/packet_subclasses_spec.rb
154
218
  - spec/packetfu_spec.rb
155
219
  - spec/sample.pcap
156
220
  - spec/sample2.pcap
221
+ - spec/sample3.pcap
222
+ - spec/spec_helper.rb
157
223
  - spec/structfu_spec.rb
158
224
  - spec/tcp_spec.rb
225
+ - spec/udp_spec.rb
226
+ - spec/utils_spec.rb
159
227
  - spec/vlan-pcapr.cap
160
228
  - test/all_tests.rb
161
229
  - test/func_lldp.rb
@@ -165,15 +233,11 @@ files:
165
233
  - test/sample2.pcap
166
234
  - test/sample_hsrp_pcapr.cap
167
235
  - test/sample_lldp.pcap
168
- - test/test_arp.rb
169
236
  - test/test_capture.rb
170
237
  - test/test_eth.rb
171
238
  - test/test_hsrp.rb
172
- - test/test_icmp.rb
173
239
  - test/test_inject.rb
174
240
  - test/test_invalid.rb
175
- - test/test_ip.rb
176
- - test/test_ip6.rb
177
241
  - test/test_octets.rb
178
242
  - test/test_packet.rb
179
243
  - test/test_pcap.rb
@@ -184,48 +248,48 @@ files:
184
248
  homepage: https://github.com/todb/packetfu
185
249
  licenses:
186
250
  - BSD
251
+ metadata: {}
187
252
  post_install_message:
188
253
  rdoc_options: []
189
254
  require_paths:
190
255
  - lib
191
256
  required_ruby_version: !ruby/object:Gem::Requirement
192
- none: false
193
257
  requirements:
194
- - - ! '>='
258
+ - - ">="
195
259
  - !ruby/object:Gem::Version
196
260
  version: '0'
197
261
  required_rubygems_version: !ruby/object:Gem::Requirement
198
- none: false
199
262
  requirements:
200
- - - ! '>='
263
+ - - ">="
201
264
  - !ruby/object:Gem::Version
202
265
  version: '0'
203
266
  requirements: []
204
267
  rubyforge_project: packetfu
205
- rubygems_version: 1.8.24
268
+ rubygems_version: 2.4.6
206
269
  signing_key:
207
- specification_version: 3
270
+ specification_version: 4
208
271
  summary: PacketFu is a mid-level packet manipulation library.
209
272
  test_files:
210
- - spec/ethpacket_spec.rb
273
+ - spec/arp_spec.rb
274
+ - spec/eth_spec.rb
275
+ - spec/icmp_spec.rb
276
+ - spec/ip_spec.rb
277
+ - spec/ipv6_spec.rb
211
278
  - spec/packet_spec.rb
212
279
  - spec/packet_subclasses_spec.rb
213
280
  - spec/packetfu_spec.rb
214
281
  - spec/structfu_spec.rb
215
282
  - spec/tcp_spec.rb
216
- - test/test_arp.rb
283
+ - spec/udp_spec.rb
284
+ - spec/utils_spec.rb
217
285
  - test/test_capture.rb
218
286
  - test/test_eth.rb
219
287
  - test/test_hsrp.rb
220
- - test/test_icmp.rb
221
288
  - test/test_inject.rb
222
289
  - test/test_invalid.rb
223
- - test/test_ip.rb
224
- - test/test_ip6.rb
225
290
  - test/test_octets.rb
226
291
  - test/test_packet.rb
227
292
  - test/test_pcap.rb
228
293
  - test/test_structfu.rb
229
294
  - test/test_tcp.rb
230
295
  - test/test_udp.rb
231
- has_rdoc:
@@ -0,0 +1,2 @@
1
+ �F2���+��> �\>N�u�
2
+ ��?h��j ���H^�^d���3��W���k�`ˉH����'��I��
@@ -1,74 +0,0 @@
1
- $:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
2
- require 'packetfu'
3
-
4
- include PacketFu
5
-
6
- describe EthPacket, "when read from a pcap file" do
7
-
8
- before :all do
9
- parsed_packets = PcapFile.read_packets(File.join(File.dirname(__FILE__),"sample.pcap"))
10
- @eth_packet = parsed_packets.first
11
- end
12
-
13
- context "is a regular ethernet packet" do
14
-
15
- subject { @eth_packet }
16
-
17
- it "should be an EthPacket kind of packet" do
18
- subject.should be_kind_of EthPacket
19
- end
20
-
21
- it "should have a dest mac address" do
22
- subject.eth_daddr.should == "00:03:2f:1a:74:de"
23
- end
24
-
25
- it "should have a source mac address" do
26
- subject.eth_saddr.should == "00:1b:11:51:b7:ce"
27
- end
28
-
29
- its(:size) { should == 78 }
30
-
31
- it "should have a payload in its first header" do
32
- subject.headers.first.body.should_not be_nil
33
- end
34
-
35
- context "an EthPacket's first header" do
36
-
37
- subject { @eth_packet.headers.first }
38
-
39
- it "should be 64 bytes" do
40
- subject.body.sz.should == 64
41
- end
42
-
43
- context "EthHeader struct members" do
44
- if RUBY_VERSION =~ /^1\.8/
45
- its(:members) { should include :eth_dst.to_s }
46
- its(:members) { should include :eth_src.to_s }
47
- its(:members) { should include :eth_proto.to_s }
48
- its(:members) { should include :body.to_s }
49
- else
50
- its(:members) { should include :eth_dst }
51
- its(:members) { should include :eth_src }
52
- its(:members) { should include :eth_proto }
53
- its(:members) { should include :body }
54
- end
55
- end
56
-
57
- end
58
-
59
- end
60
-
61
- context "isn't a regular Ethernet packet" do
62
-
63
- subject {
64
- parsed_packets = PcapFile.read_packets(File.join(File.dirname(__FILE__),"vlan-pcapr.cap"))
65
- parsed_packets.first
66
- }
67
-
68
- it "should not be an EthPacket" do
69
- subject.should_not be_kind_of EthPacket
70
- end
71
-
72
- end
73
-
74
- end