packetfu 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -2
- data/.gitignore +1 -0
- data/LICENSE.txt +1 -1
- data/bench/after-2012-07-28.txt +25 -0
- data/bench/before-2012-07-28.txt +25 -0
- data/bench/benchit.rb +68 -0
- data/bench/calc_delta.rb +17 -0
- data/bench/octets.rb +22 -0
- data/bench/octets_after.txt +8 -0
- data/bench/octets_after_refactor.txt +8 -0
- data/bench/octets_before.txt +8 -0
- data/lib/packetfu.rb +8 -3
- data/lib/packetfu/packet.rb +2 -2
- data/lib/packetfu/pcap.rb +20 -4
- data/lib/packetfu/protos/arp.rb +7 -160
- data/lib/packetfu/protos/arp/header.rb +160 -0
- data/lib/packetfu/protos/arp/mixin.rb +38 -0
- data/lib/packetfu/protos/eth.rb +5 -247
- data/lib/packetfu/protos/eth/header.rb +247 -0
- data/lib/packetfu/protos/eth/mixin.rb +20 -0
- data/lib/packetfu/protos/hsrp.rb +13 -123
- data/lib/packetfu/protos/hsrp/header.rb +120 -0
- data/lib/packetfu/protos/hsrp/mixin.rb +31 -0
- data/lib/packetfu/protos/icmp.rb +10 -97
- data/lib/packetfu/protos/icmp/header.rb +93 -0
- data/lib/packetfu/protos/icmp/mixin.rb +17 -0
- data/lib/packetfu/protos/ip.rb +7 -295
- data/lib/packetfu/protos/ip/header.rb +335 -0
- data/lib/packetfu/protos/ip/mixin.rb +43 -0
- data/lib/packetfu/protos/ipv6.rb +7 -191
- data/lib/packetfu/protos/ipv6/header.rb +190 -0
- data/lib/packetfu/protos/ipv6/mixin.rb +31 -0
- data/lib/packetfu/protos/tcp.rb +13 -939
- data/lib/packetfu/protos/tcp/ecn.rb +42 -0
- data/lib/packetfu/protos/tcp/flags.rb +83 -0
- data/lib/packetfu/protos/tcp/header.rb +307 -0
- data/lib/packetfu/protos/tcp/hlen.rb +40 -0
- data/lib/packetfu/protos/tcp/mixin.rb +48 -0
- data/lib/packetfu/protos/tcp/option.rb +323 -0
- data/lib/packetfu/protos/tcp/options.rb +106 -0
- data/lib/packetfu/protos/tcp/reserved.rb +42 -0
- data/lib/packetfu/protos/udp.rb +12 -110
- data/lib/packetfu/protos/udp/header.rb +107 -0
- data/lib/packetfu/protos/udp/mixin.rb +23 -0
- data/lib/packetfu/utils.rb +24 -24
- data/lib/packetfu/version.rb +1 -1
- data/packetfu.gemspec +2 -2
- data/test/test_ip.rb +0 -19
- data/test/test_octets.rb +18 -21
- data/test/test_tcp.rb +10 -0
- data/test/test_udp.rb +17 -0
- 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
|
-
|
14
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
48
|
-
|
49
|
-
|
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:
|
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:
|
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.
|
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:
|