packetgen 2.8.6 → 2.8.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/packetgen/header/bootp.rb +4 -11
- data/lib/packetgen/header/dns.rb +13 -17
- data/lib/packetgen/header/eap/tls.rb +7 -15
- data/lib/packetgen/header/eap/ttls.rb +10 -16
- data/lib/packetgen/header/ike.rb +2 -12
- data/lib/packetgen/header/ike/cert.rb +0 -18
- data/lib/packetgen/header/ike/certreq.rb +4 -12
- data/lib/packetgen/header/ike/notify.rb +5 -11
- data/lib/packetgen/header/ip.rb +12 -13
- data/lib/packetgen/header/ipv6.rb +10 -14
- data/lib/packetgen/header/snmp.rb +12 -12
- data/lib/packetgen/header/tcp.rb +12 -16
- data/lib/packetgen/types/fields.rb +12 -3
- data/lib/packetgen/version.rb +1 -1
- data/packetgen.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9619d169e7a064e415e479dd208f15339f59700baf805bbc7a79437967c1cd5
|
4
|
+
data.tar.gz: 4d1ceeeee51b56dab91331e43672b7fe15ddeb87971bb36bc5670399f2e55080
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0a27dd879ec6c9362bade001b6f6701686f80a589d2dd75478f5894dbaf8bd5b766f00f692437dca4ecbf96ceb830d4fcfeaef2e2354bccec7addd76f4b7ab8
|
7
|
+
data.tar.gz: bfb2b7de3b541c85cd1d367b4d8976d78d47c9872cabafd46cba12751926128f6a664c687520b28b7224af8439829219f9f6ad5a950de5878c9ee6f1d9b14243
|
@@ -132,18 +132,11 @@ module PacketGen
|
|
132
132
|
|
133
133
|
# @return [String]
|
134
134
|
def inspect
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
str << if (attr == :chaddr) && (self.hlen == 6)
|
141
|
-
Inspect.inspect_attribute(attr, Eth::MacAddr.new.read(self[:chaddr][0, 6]), 1)
|
142
|
-
else
|
143
|
-
Inspect.inspect_attribute(attr, self[attr], 1)
|
144
|
-
end
|
135
|
+
super do |attr|
|
136
|
+
next unless (attr == :chaddr) && (self.hlen == 6)
|
137
|
+
|
138
|
+
Inspect.inspect_attribute(attr, Eth::MacAddr.new.read(self[:chaddr][0, 6]))
|
145
139
|
end
|
146
|
-
str
|
147
140
|
end
|
148
141
|
|
149
142
|
# Invert opcode, if known
|
data/lib/packetgen/header/dns.rb
CHANGED
@@ -250,24 +250,20 @@ module PacketGen
|
|
250
250
|
|
251
251
|
# @return [String]
|
252
252
|
def inspect
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
else
|
267
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
268
|
-
end
|
253
|
+
super do |attr|
|
254
|
+
next unless attr == :u16
|
255
|
+
|
256
|
+
flags = %i[qr aa tc rd ra].select! { |flag| send "#{flag}?" }
|
257
|
+
.map(&:to_s).join(',')
|
258
|
+
str = Inspect.shift_level
|
259
|
+
str << Inspect::FMT_ATTR % ['Flags', 'flags', flags]
|
260
|
+
opcode = '%-16s (%u)' % [OPCODES.key(self.opcode), self.opcode]
|
261
|
+
str << Inspect.shift_level
|
262
|
+
str << Inspect::FMT_ATTR % ['Integer', 'opcode', opcode]
|
263
|
+
rcode = '%-16s (%u)' % [RCODES.key(self.rcode), self.rcode]
|
264
|
+
str << Inspect.shift_level
|
265
|
+
str << Inspect::FMT_ATTR % ['Integer', 'rcode', rcode]
|
269
266
|
end
|
270
|
-
str
|
271
267
|
end
|
272
268
|
end
|
273
269
|
|
@@ -47,23 +47,15 @@ module PacketGen
|
|
47
47
|
|
48
48
|
# @return [String]
|
49
49
|
def inspect
|
50
|
-
|
51
|
-
|
52
|
-
next if attr == :body
|
53
|
-
next unless present?(attr)
|
50
|
+
super do |attr|
|
51
|
+
next unless attr == :flags
|
54
52
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''),
|
61
|
-
attr, value]
|
62
|
-
else
|
63
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
64
|
-
end
|
53
|
+
str = Inspect.shift_level
|
54
|
+
value = %i[l m s].map { |f| send("#{f}?") ? f.to_s : '.' }.join
|
55
|
+
value = '%-16s (0x%02x)' % [value, self.flags]
|
56
|
+
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''),
|
57
|
+
attr, value]
|
65
58
|
end
|
66
|
-
str
|
67
59
|
end
|
68
60
|
end
|
69
61
|
end
|
@@ -51,24 +51,18 @@ module PacketGen
|
|
51
51
|
|
52
52
|
# @return [String]
|
53
53
|
def inspect
|
54
|
-
|
55
|
-
|
56
|
-
next if attr == :body
|
57
|
-
next unless is_present?(attr)
|
54
|
+
super do |attr|
|
55
|
+
next unless attr == :flags
|
58
56
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
else
|
68
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
69
|
-
end
|
57
|
+
shift = Inspect.shift_level
|
58
|
+
str = shift.dup
|
59
|
+
value = %i[l m s].map { |f| send("#{f}?") ? f.to_s : '.' }.join
|
60
|
+
value = '%-16s (0x%02x)' % [value, self.flags]
|
61
|
+
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''),
|
62
|
+
attr, value]
|
63
|
+
str << shift
|
64
|
+
str << Inspect::FMT_ATTR % ['', 'version', self.version]
|
70
65
|
end
|
71
|
-
str
|
72
66
|
end
|
73
67
|
end
|
74
68
|
end
|
data/lib/packetgen/header/ike.rb
CHANGED
@@ -189,28 +189,18 @@ module PacketGen
|
|
189
189
|
|
190
190
|
# @return [String]
|
191
191
|
def inspect
|
192
|
-
|
193
|
-
fields.each do |attr|
|
194
|
-
next if attr == :body
|
195
|
-
|
192
|
+
super do |attr|
|
196
193
|
case attr
|
197
194
|
when :flags
|
198
195
|
str_flags = ''.dup
|
199
196
|
%w[r v i].each do |flag|
|
200
197
|
str_flags << (send("flag_#{flag}?") ? flag.upcase : '.')
|
201
198
|
end
|
202
|
-
str
|
199
|
+
str = Inspect.shift_level
|
203
200
|
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''), attr,
|
204
201
|
str_flags]
|
205
|
-
when :exchange_type
|
206
|
-
str << Inspect.shift_level(2)
|
207
|
-
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''), attr,
|
208
|
-
human_exchange_type]
|
209
|
-
else
|
210
|
-
str << Inspect.inspect_attribute(attr, self[attr], 2)
|
211
202
|
end
|
212
203
|
end
|
213
|
-
str
|
214
204
|
end
|
215
205
|
|
216
206
|
# Toggle +I+ and +R+ flags.
|
@@ -68,24 +68,6 @@ module PacketGen
|
|
68
68
|
def human_encoding
|
69
69
|
self[:encoding].to_human
|
70
70
|
end
|
71
|
-
|
72
|
-
# @return [String]
|
73
|
-
def inspect
|
74
|
-
str = Inspect.dashed_line(self.class, 1)
|
75
|
-
fields.each do |attr|
|
76
|
-
case attr
|
77
|
-
when :body
|
78
|
-
next
|
79
|
-
when :encoding
|
80
|
-
str << Inspect.shift_level(1)
|
81
|
-
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''), attr,
|
82
|
-
human_encoding]
|
83
|
-
else
|
84
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
str
|
88
|
-
end
|
89
71
|
end
|
90
72
|
end
|
91
73
|
|
@@ -52,19 +52,11 @@ module PacketGen
|
|
52
52
|
|
53
53
|
# @return [String]
|
54
54
|
def inspect
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
next
|
60
|
-
when :content
|
61
|
-
str << Inspect.shift_level(1)
|
62
|
-
str << Inspect::FMT_ATTR % ['hashes', :content, human_content]
|
63
|
-
else
|
64
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
65
|
-
end
|
55
|
+
super do |attr|
|
56
|
+
next unless attr == :content
|
57
|
+
str = Inspect.shift_level
|
58
|
+
str << Inspect::FMT_ATTR % ['hashes', :content, human_content]
|
66
59
|
end
|
67
|
-
str
|
68
60
|
end
|
69
61
|
end
|
70
62
|
end
|
@@ -160,19 +160,13 @@ module PacketGen
|
|
160
160
|
|
161
161
|
# @return [String]
|
162
162
|
def inspect
|
163
|
-
|
164
|
-
|
165
|
-
next if attr == :body
|
163
|
+
super do |attr|
|
164
|
+
next unless attr == :protocol
|
166
165
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
send("human_#{attr}")]
|
171
|
-
else
|
172
|
-
str << Inspect.inspect_attribute(attr, self[attr], 1)
|
173
|
-
end
|
166
|
+
str = Inspect.shift_level
|
167
|
+
str << Inspect::FMT_ATTR % [self[attr].class.to_s.sub(/.*::/, ''), attr,
|
168
|
+
human_protocol]
|
174
169
|
end
|
175
|
-
str
|
176
170
|
end
|
177
171
|
end
|
178
172
|
end
|
data/lib/packetgen/header/ip.rb
CHANGED
@@ -235,26 +235,25 @@ module PacketGen
|
|
235
235
|
|
236
236
|
# @return [String]
|
237
237
|
def inspect
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
238
|
+
super do |attr|
|
239
|
+
case attr
|
240
|
+
when :u8
|
241
|
+
shift = Inspect.shift_level
|
242
|
+
str = Inspect.inspect_attribute(attr, self[attr])
|
243
|
+
str << shift << Inspect::FMT_ATTR % ['', 'version', version]
|
244
|
+
str << shift << Inspect::FMT_ATTR % ['', 'ihl', ihl]
|
245
|
+
when :frag
|
246
|
+
shift = Inspect.shift_level
|
247
|
+
str = Inspect.inspect_attribute(attr, self[attr])
|
248
248
|
flags = flag_rsv? ? %w[RSV] : []
|
249
249
|
flags << 'DF' if flag_df?
|
250
250
|
flags << 'MF' if flag_mf?
|
251
251
|
flags_str = flags.empty? ? 'none' : flags.join(',')
|
252
|
-
str << shift
|
252
|
+
str << shift << Inspect::FMT_ATTR % ['', 'flags', flags_str]
|
253
253
|
foff = Inspect.int_dec_hex(fragment_offset, 4)
|
254
|
-
str << shift
|
254
|
+
str << shift << Inspect::FMT_ATTR % ['', 'frag_offset', foff]
|
255
255
|
end
|
256
256
|
end
|
257
|
-
str
|
258
257
|
end
|
259
258
|
|
260
259
|
# Check version field
|
@@ -137,21 +137,17 @@ module PacketGen
|
|
137
137
|
|
138
138
|
# @return [String]
|
139
139
|
def inspect
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
fl_value = Inspect.int_dec_hex(flow_label, 5)
|
151
|
-
str << shift + Inspect::FMT_ATTR % ['', 'flow_label', fl_value]
|
152
|
-
end
|
140
|
+
super do |attr|
|
141
|
+
next unless attr == :u32
|
142
|
+
|
143
|
+
str = Inspect.inspect_attribute(attr, self[attr])
|
144
|
+
shift = Inspect.shift_level
|
145
|
+
str << shift + Inspect::FMT_ATTR % ['', 'version', version]
|
146
|
+
tclass = Inspect.int_dec_hex(traffic_class, 2)
|
147
|
+
str << shift + Inspect::FMT_ATTR % ['', 'tclass', tclass]
|
148
|
+
fl_value = Inspect.int_dec_hex(flow_label, 5)
|
149
|
+
str << shift + Inspect::FMT_ATTR % ['', 'flow_label', fl_value]
|
153
150
|
end
|
154
|
-
str
|
155
151
|
end
|
156
152
|
|
157
153
|
# Check version field
|
@@ -113,7 +113,7 @@ module PacketGen
|
|
113
113
|
sequence :pdu,
|
114
114
|
implicit: SNMP::PDU_GET, constructed: true,
|
115
115
|
content: [integer(:id, value: 0),
|
116
|
-
|
116
|
+
integer(:error, value: 0, enum: ERRORS),
|
117
117
|
integer(:error_index, value: 0),
|
118
118
|
model(:varbindlist, VariableBindings)]
|
119
119
|
end
|
@@ -162,13 +162,13 @@ module PacketGen
|
|
162
162
|
implicit: SNMP::PDU_TRAPv1, constructed: true,
|
163
163
|
content: [objectid(:enterprise),
|
164
164
|
octet_string(:agent_addr),
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
165
|
+
integer(:generic_trap, enum: { 'cold_start' => 0,
|
166
|
+
'warm_start' => 1,
|
167
|
+
'link_down' => 2,
|
168
|
+
'link_up' => 3,
|
169
|
+
'auth_failure' => 4,
|
170
|
+
'egp_neighbor_loss' => 5,
|
171
|
+
'specific' => 6 }),
|
172
172
|
integer(:specific_trap),
|
173
173
|
integer(:timestamp),
|
174
174
|
model(:varbindlist, VariableBindings)]
|
@@ -243,8 +243,8 @@ module PacketGen
|
|
243
243
|
end
|
244
244
|
|
245
245
|
sequence :message,
|
246
|
-
content: [
|
247
|
-
|
246
|
+
content: [integer(:version, value: 'v2c',
|
247
|
+
enum: { 'v1' => 0, 'v2c' => 1, 'v2' => 2, 'v3' => 3 }),
|
248
248
|
octet_string(:community, value: 'public'),
|
249
249
|
model(:data, PDUs)]
|
250
250
|
|
@@ -280,13 +280,13 @@ module PacketGen
|
|
280
280
|
|
281
281
|
def inspect
|
282
282
|
str = super
|
283
|
-
str << Inspect.shift_level
|
283
|
+
str << Inspect.shift_level
|
284
284
|
if self[:data].chosen.nil?
|
285
285
|
str << Inspect::FMT_ATTR % [self[:data].type, :data, '']
|
286
286
|
else
|
287
287
|
data = self[:data]
|
288
288
|
str << Inspect::FMT_ATTR % [data.type, :data, data.chosen_value.type]
|
289
|
-
str << Inspect.dashed_line('ASN.1 content'
|
289
|
+
str << Inspect.dashed_line('ASN.1 content')
|
290
290
|
str << data.chosen_value.inspect(1)
|
291
291
|
begin
|
292
292
|
str << Inspect.inspect_body(self[:message].to_der, 'ASN.1 DER')
|
data/lib/packetgen/header/tcp.rb
CHANGED
@@ -206,24 +206,20 @@ module PacketGen
|
|
206
206
|
|
207
207
|
# @return [String]
|
208
208
|
def inspect
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
flags
|
220
|
-
%w[ns cwr ece urg ack psh rst syn fin].each do |fl|
|
221
|
-
flags << (send("flag_#{fl}?") ? fl[0].upcase : '.')
|
222
|
-
end
|
223
|
-
str << shift + Inspect::FMT_ATTR % ['', 'flags', flags]
|
209
|
+
super do |attr|
|
210
|
+
next unless attr == :u16
|
211
|
+
|
212
|
+
shift = Inspect.shift_level
|
213
|
+
str = Inspect.inspect_attribute(attr, self[attr])
|
214
|
+
doff = Inspect.int_dec_hex(data_offset, 1)
|
215
|
+
str<< shift << Inspect::FMT_ATTR % ['', 'data_offset', doff]
|
216
|
+
str << shift << Inspect::FMT_ATTR % ['', 'reserved', reserved]
|
217
|
+
flags = ''.dup
|
218
|
+
%w[ns cwr ece urg ack psh rst syn fin].each do |fl|
|
219
|
+
flags << (send("flag_#{fl}?") ? fl[0].upcase : '.')
|
224
220
|
end
|
221
|
+
str << shift << Inspect::FMT_ATTR % ['', 'flags', flags]
|
225
222
|
end
|
226
|
-
str
|
227
223
|
end
|
228
224
|
|
229
225
|
# Invert source and destination port numbers
|
@@ -356,7 +356,9 @@ module PacketGen
|
|
356
356
|
@fields = {}
|
357
357
|
@optional_fields = {}
|
358
358
|
|
359
|
-
self.class.class_eval { @field_defs }
|
359
|
+
field_defs = self.class.class_eval { @field_defs }
|
360
|
+
self.class.fields.each do |field|
|
361
|
+
ary = field_defs[field]
|
360
362
|
type, default, builder, optional, enum, field_options = ary
|
361
363
|
default = default.to_proc.call(self) if default.is_a?(Proc)
|
362
364
|
@fields[field] = if builder
|
@@ -480,7 +482,13 @@ module PacketGen
|
|
480
482
|
self
|
481
483
|
end
|
482
484
|
|
483
|
-
# Common inspect method for headers
|
485
|
+
# Common inspect method for headers.
|
486
|
+
#
|
487
|
+
# A block may be given to differently format some attributes. This
|
488
|
+
# may be used by subclasses to handle specific fields.
|
489
|
+
# @yieldparam attr [Symbol] attribute to inspect
|
490
|
+
# @yieldreturn [String,nil] the string to print for +attr+, or +nil+
|
491
|
+
# to let +inspect+ generate it
|
484
492
|
# @return [String]
|
485
493
|
def inspect
|
486
494
|
str = Inspect.dashed_line(self.class, 1)
|
@@ -488,7 +496,8 @@ module PacketGen
|
|
488
496
|
next if attr == :body
|
489
497
|
next unless present?(attr)
|
490
498
|
|
491
|
-
|
499
|
+
result = yield(attr)if block_given?
|
500
|
+
str << (result || Inspect.inspect_attribute(attr, self[attr], 1))
|
492
501
|
end
|
493
502
|
str
|
494
503
|
end
|
data/lib/packetgen/version.rb
CHANGED
data/packetgen.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_dependency 'interfacez', '~>1.0'
|
28
28
|
spec.add_dependency 'pcaprub', '~>0.12.4'
|
29
|
-
spec.add_dependency 'rasn1', '~>0.5', '>= 0.6.
|
29
|
+
spec.add_dependency 'rasn1', '~>0.5', '>= 0.6.6'
|
30
30
|
|
31
31
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
32
32
|
spec.add_development_dependency 'rake', '~> 12.3'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packetgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Daubert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: interfacez
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
version: '0.5'
|
48
48
|
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 0.6.
|
50
|
+
version: 0.6.6
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
version: '0.5'
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.6.
|
60
|
+
version: 0.6.6
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: bundler
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|