packetfu 1.1.5 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/.document +5 -2
  2. data/.gitignore +1 -0
  3. data/LICENSE.txt +1 -1
  4. data/bench/after-2012-07-28.txt +25 -0
  5. data/bench/before-2012-07-28.txt +25 -0
  6. data/bench/benchit.rb +68 -0
  7. data/bench/calc_delta.rb +17 -0
  8. data/bench/octets.rb +22 -0
  9. data/bench/octets_after.txt +8 -0
  10. data/bench/octets_after_refactor.txt +8 -0
  11. data/bench/octets_before.txt +8 -0
  12. data/lib/packetfu.rb +8 -3
  13. data/lib/packetfu/packet.rb +2 -2
  14. data/lib/packetfu/pcap.rb +20 -4
  15. data/lib/packetfu/protos/arp.rb +7 -160
  16. data/lib/packetfu/protos/arp/header.rb +160 -0
  17. data/lib/packetfu/protos/arp/mixin.rb +38 -0
  18. data/lib/packetfu/protos/eth.rb +5 -247
  19. data/lib/packetfu/protos/eth/header.rb +247 -0
  20. data/lib/packetfu/protos/eth/mixin.rb +20 -0
  21. data/lib/packetfu/protos/hsrp.rb +13 -123
  22. data/lib/packetfu/protos/hsrp/header.rb +120 -0
  23. data/lib/packetfu/protos/hsrp/mixin.rb +31 -0
  24. data/lib/packetfu/protos/icmp.rb +10 -97
  25. data/lib/packetfu/protos/icmp/header.rb +93 -0
  26. data/lib/packetfu/protos/icmp/mixin.rb +17 -0
  27. data/lib/packetfu/protos/ip.rb +7 -295
  28. data/lib/packetfu/protos/ip/header.rb +335 -0
  29. data/lib/packetfu/protos/ip/mixin.rb +43 -0
  30. data/lib/packetfu/protos/ipv6.rb +7 -191
  31. data/lib/packetfu/protos/ipv6/header.rb +190 -0
  32. data/lib/packetfu/protos/ipv6/mixin.rb +31 -0
  33. data/lib/packetfu/protos/tcp.rb +13 -939
  34. data/lib/packetfu/protos/tcp/ecn.rb +42 -0
  35. data/lib/packetfu/protos/tcp/flags.rb +83 -0
  36. data/lib/packetfu/protos/tcp/header.rb +307 -0
  37. data/lib/packetfu/protos/tcp/hlen.rb +40 -0
  38. data/lib/packetfu/protos/tcp/mixin.rb +48 -0
  39. data/lib/packetfu/protos/tcp/option.rb +323 -0
  40. data/lib/packetfu/protos/tcp/options.rb +106 -0
  41. data/lib/packetfu/protos/tcp/reserved.rb +42 -0
  42. data/lib/packetfu/protos/udp.rb +12 -110
  43. data/lib/packetfu/protos/udp/header.rb +107 -0
  44. data/lib/packetfu/protos/udp/mixin.rb +23 -0
  45. data/lib/packetfu/utils.rb +24 -24
  46. data/lib/packetfu/version.rb +1 -1
  47. data/packetfu.gemspec +2 -2
  48. data/test/test_ip.rb +0 -19
  49. data/test/test_octets.rb +18 -21
  50. data/test/test_tcp.rb +10 -0
  51. data/test/test_udp.rb +17 -0
  52. metadata +79 -50
data/test/test_tcp.rb CHANGED
@@ -302,6 +302,16 @@ class TCPPacketTest < Test::Unit::TestCase
302
302
  pkt.to_f('tcp_test.pcap','a')
303
303
  end
304
304
 
305
+ def test_tcp_read_strip
306
+ str = "e0f8472161a600254ba0760608004500004403554000400651d0c0a83207c0a832370224c1d22d94847f0b07c4ba8018ffff30ba00000101080a8731821433564b8c01027165000000000000200000000000".bin
307
+ str << "0102".bin # Tacking on a couple extra bites tht we'll strip off.
308
+ not_stripped = TCPPacket.new
309
+ not_stripped.read(str)
310
+ assert_equal 18, not_stripped.tcp_header.body.length
311
+ stripped = TCPPacket.new
312
+ stripped.read(str, :strip => true)
313
+ assert_equal 16, stripped.tcp_header.body.length
314
+ end
305
315
  end
306
316
 
307
317
  class TCPPacketTest < Test::Unit::TestCase
data/test/test_udp.rb CHANGED
@@ -3,6 +3,12 @@ require 'test/unit'
3
3
  $:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
4
4
  require 'packetfu'
5
5
 
6
+ class String
7
+ def bin
8
+ self.scan(/../).map {|x| x.to_i(16).chr}.join
9
+ end
10
+ end
11
+
6
12
  class UDPTest < Test::Unit::TestCase
7
13
  include PacketFu
8
14
 
@@ -58,6 +64,17 @@ class UDPTest < Test::Unit::TestCase
58
64
  pkt.to_f('udp_test.pcap','a')
59
65
  end
60
66
 
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
77
+
61
78
  def test_udp_alter
62
79
  sample_packet = PcapFile.new.file_to_array(:f => 'sample.pcap')[0]
63
80
  pkt = Packet.parse(sample_packet)
metadata CHANGED
@@ -1,65 +1,73 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: packetfu
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.6
4
5
  prerelease:
5
- version: 1.1.5
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Tod Beardsley
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-12-05 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: pcaprub
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &12628060 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
23
21
  version: 0.9.2
24
22
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rspec
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *12628060
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &12627260 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
34
32
  version: 2.6.2
35
33
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: sdoc
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *12627260
36
+ - !ruby/object:Gem::Dependency
37
+ name: sdoc
38
+ requirement: &12626240 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
45
43
  version: 0.2.0
46
44
  type: :development
47
- version_requirements: *id003
48
- description: PacketFu is a mid-level packet manipulation library for Ruby. With it, users can read, parse, and write network packets with the level of ease and fun they expect from Ruby. Note that this gem does not automatically require pcaprub, since users may install pcaprub through non-gem means.
49
- email: todb@planb-security.net
45
+ prerelease: false
46
+ version_requirements: *12626240
47
+ description: PacketFu is a mid-level packet manipulation library for Ruby. With it,
48
+ users can read, parse, and write network packets with the level of ease and fun
49
+ they expect from Ruby. Note that this gem does not automatically require pcaprub,
50
+ since users may install pcaprub through non-gem means.
51
+ email: todb@packetfu.com
50
52
  executables: []
51
-
52
53
  extensions: []
53
-
54
- extra_rdoc_files:
54
+ extra_rdoc_files:
55
55
  - .document
56
56
  - README.rdoc
57
- files:
57
+ files:
58
58
  - .document
59
59
  - .gitignore
60
60
  - INSTALL.rdoc
61
61
  - LICENSE.txt
62
62
  - README.rdoc
63
+ - bench/after-2012-07-28.txt
64
+ - bench/before-2012-07-28.txt
65
+ - bench/benchit.rb
66
+ - bench/calc_delta.rb
67
+ - bench/octets.rb
68
+ - bench/octets_after.txt
69
+ - bench/octets_after_refactor.txt
70
+ - bench/octets_before.txt
63
71
  - examples/100kpackets.rb
64
72
  - examples/ackscan.rb
65
73
  - examples/arp.rb
@@ -84,14 +92,36 @@ files:
84
92
  - lib/packetfu/packet.rb
85
93
  - lib/packetfu/pcap.rb
86
94
  - lib/packetfu/protos/arp.rb
95
+ - lib/packetfu/protos/arp/header.rb
96
+ - lib/packetfu/protos/arp/mixin.rb
87
97
  - lib/packetfu/protos/eth.rb
98
+ - lib/packetfu/protos/eth/header.rb
99
+ - lib/packetfu/protos/eth/mixin.rb
88
100
  - lib/packetfu/protos/hsrp.rb
101
+ - lib/packetfu/protos/hsrp/header.rb
102
+ - lib/packetfu/protos/hsrp/mixin.rb
89
103
  - lib/packetfu/protos/icmp.rb
104
+ - lib/packetfu/protos/icmp/header.rb
105
+ - lib/packetfu/protos/icmp/mixin.rb
90
106
  - lib/packetfu/protos/invalid.rb
91
107
  - lib/packetfu/protos/ip.rb
108
+ - lib/packetfu/protos/ip/header.rb
109
+ - lib/packetfu/protos/ip/mixin.rb
92
110
  - lib/packetfu/protos/ipv6.rb
111
+ - lib/packetfu/protos/ipv6/header.rb
112
+ - lib/packetfu/protos/ipv6/mixin.rb
93
113
  - lib/packetfu/protos/tcp.rb
114
+ - lib/packetfu/protos/tcp/ecn.rb
115
+ - lib/packetfu/protos/tcp/flags.rb
116
+ - lib/packetfu/protos/tcp/header.rb
117
+ - lib/packetfu/protos/tcp/hlen.rb
118
+ - lib/packetfu/protos/tcp/mixin.rb
119
+ - lib/packetfu/protos/tcp/option.rb
120
+ - lib/packetfu/protos/tcp/options.rb
121
+ - lib/packetfu/protos/tcp/reserved.rb
94
122
  - lib/packetfu/protos/udp.rb
123
+ - lib/packetfu/protos/udp/header.rb
124
+ - lib/packetfu/protos/udp/mixin.rb
95
125
  - lib/packetfu/structfu.rb
96
126
  - lib/packetfu/utils.rb
97
127
  - lib/packetfu/version.rb
@@ -125,33 +155,31 @@ files:
125
155
  - test/test_udp.rb
126
156
  - test/vlan-pcapr.cap
127
157
  homepage: https://github.com/todb/packetfu
128
- licenses:
158
+ licenses:
129
159
  - BSD
130
160
  post_install_message:
131
161
  rdoc_options: []
132
-
133
- require_paths:
162
+ require_paths:
134
163
  - lib
135
- required_ruby_version: !ruby/object:Gem::Requirement
164
+ required_ruby_version: !ruby/object:Gem::Requirement
136
165
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- version: "0"
141
- required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ! '>='
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
171
  none: false
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: "0"
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
147
176
  requirements: []
148
-
149
177
  rubyforge_project: packetfu
150
- rubygems_version: 1.8.10
178
+ rubygems_version: 1.8.15
151
179
  signing_key:
152
180
  specification_version: 3
153
181
  summary: PacketFu is a mid-level packet manipulation library.
154
- test_files:
182
+ test_files:
155
183
  - test/test_arp.rb
156
184
  - test/test_eth.rb
157
185
  - test/test_hsrp.rb
@@ -166,3 +194,4 @@ test_files:
166
194
  - test/test_structfu.rb
167
195
  - test/test_tcp.rb
168
196
  - test/test_udp.rb
197
+ has_rdoc: