packetgen 2.4.0 → 2.5.0
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.
- checksums.yaml +5 -5
- data/.travis.yml +13 -4
- data/lib/packetgen.rb +3 -1
- data/lib/packetgen/capture.rb +2 -0
- data/lib/packetgen/config.rb +1 -0
- data/lib/packetgen/header.rb +5 -0
- data/lib/packetgen/header/arp.rb +2 -0
- data/lib/packetgen/header/asn1_base.rb +2 -0
- data/lib/packetgen/header/base.rb +16 -0
- data/lib/packetgen/header/bootp.rb +2 -0
- data/lib/packetgen/header/crypto.rb +2 -0
- data/lib/packetgen/header/dhcp.rb +2 -0
- data/lib/packetgen/header/dhcp/option.rb +3 -0
- data/lib/packetgen/header/dhcp/options.rb +2 -0
- data/lib/packetgen/header/dhcpv6.rb +109 -0
- data/lib/packetgen/header/dhcpv6/duid.rb +147 -0
- data/lib/packetgen/header/dhcpv6/option.rb +391 -0
- data/lib/packetgen/header/dhcpv6/options.rb +29 -0
- data/lib/packetgen/header/dhcpv6/relay.rb +48 -0
- data/lib/packetgen/header/dns.rb +10 -2
- data/lib/packetgen/header/dns/name.rb +7 -0
- data/lib/packetgen/header/dns/opt.rb +6 -0
- data/lib/packetgen/header/dns/option.rb +7 -0
- data/lib/packetgen/header/dns/qdsection.rb +7 -1
- data/lib/packetgen/header/dns/question.rb +7 -0
- data/lib/packetgen/header/dns/rr.rb +7 -0
- data/lib/packetgen/header/dns/rrsection.rb +7 -0
- data/lib/packetgen/header/dot11.rb +4 -2
- data/lib/packetgen/header/dot11/control.rb +2 -0
- data/lib/packetgen/header/dot11/data.rb +2 -0
- data/lib/packetgen/header/dot11/element.rb +2 -0
- data/lib/packetgen/header/dot11/management.rb +2 -0
- data/lib/packetgen/header/dot11/sub_mngt.rb +2 -0
- data/lib/packetgen/header/dot1q.rb +2 -0
- data/lib/packetgen/header/dot1x.rb +3 -1
- data/lib/packetgen/header/eap.rb +3 -1
- data/lib/packetgen/header/eap/fast.rb +2 -0
- data/lib/packetgen/header/eap/md5.rb +2 -0
- data/lib/packetgen/header/eap/tls.rb +2 -0
- data/lib/packetgen/header/eap/ttls.rb +2 -0
- data/lib/packetgen/header/esp.rb +7 -0
- data/lib/packetgen/header/eth.rb +2 -0
- data/lib/packetgen/header/gre.rb +4 -9
- data/lib/packetgen/header/http/headers.rb +2 -0
- data/lib/packetgen/header/http/request.rb +3 -1
- data/lib/packetgen/header/http/response.rb +3 -1
- data/lib/packetgen/header/icmp.rb +4 -11
- data/lib/packetgen/header/icmpv6.rb +4 -11
- data/lib/packetgen/header/igmp.rb +4 -11
- data/lib/packetgen/header/igmpv3.rb +4 -11
- data/lib/packetgen/header/igmpv3/group_record.rb +2 -0
- data/lib/packetgen/header/igmpv3/mq.rb +2 -0
- data/lib/packetgen/header/igmpv3/mr.rb +2 -0
- data/lib/packetgen/header/ike.rb +13 -6
- data/lib/packetgen/header/ike/auth.rb +2 -0
- data/lib/packetgen/header/ike/cert.rb +2 -0
- data/lib/packetgen/header/ike/certreq.rb +2 -0
- data/lib/packetgen/header/ike/id.rb +2 -0
- data/lib/packetgen/header/ike/ke.rb +2 -0
- data/lib/packetgen/header/ike/nonce.rb +2 -0
- data/lib/packetgen/header/ike/notify.rb +7 -0
- data/lib/packetgen/header/ike/payload.rb +9 -0
- data/lib/packetgen/header/ike/sa.rb +11 -4
- data/lib/packetgen/header/ike/sk.rb +7 -0
- data/lib/packetgen/header/ike/ts.rb +2 -0
- data/lib/packetgen/header/ike/vendor_id.rb +2 -0
- data/lib/packetgen/header/ip.rb +48 -11
- data/lib/packetgen/header/ip/addr.rb +8 -0
- data/lib/packetgen/header/ip/option.rb +2 -0
- data/lib/packetgen/header/ip/options.rb +2 -0
- data/lib/packetgen/header/ipv6.rb +5 -3
- data/lib/packetgen/header/ipv6/addr.rb +8 -0
- data/lib/packetgen/header/ipv6/extension.rb +2 -0
- data/lib/packetgen/header/ipv6/hop_by_hop.rb +2 -0
- data/lib/packetgen/header/llc.rb +2 -0
- data/lib/packetgen/header/mld.rb +2 -0
- data/lib/packetgen/header/mldv2.rb +4 -2
- data/lib/packetgen/header/mldv2/mcast_address_record.rb +3 -1
- data/lib/packetgen/header/mldv2/mlq.rb +2 -0
- data/lib/packetgen/header/mldv2/mlr.rb +4 -2
- data/lib/packetgen/header/ospfv2.rb +249 -0
- data/lib/packetgen/header/ospfv2/db_description.rb +105 -0
- data/lib/packetgen/header/ospfv2/hello.rb +104 -0
- data/lib/packetgen/header/ospfv2/ls_ack.rb +55 -0
- data/lib/packetgen/header/ospfv2/ls_request.rb +90 -0
- data/lib/packetgen/header/ospfv2/ls_update.rb +72 -0
- data/lib/packetgen/header/ospfv2/lsa.rb +252 -0
- data/lib/packetgen/header/ospfv2/lsa_header.rb +122 -0
- data/lib/packetgen/header/ospfv3.rb +216 -0
- data/lib/packetgen/header/ospfv3/db_description.rb +114 -0
- data/lib/packetgen/header/ospfv3/hello.rb +104 -0
- data/lib/packetgen/header/ospfv3/ipv6_prefix.rb +103 -0
- data/lib/packetgen/header/ospfv3/ls_ack.rb +51 -0
- data/lib/packetgen/header/ospfv3/ls_request.rb +108 -0
- data/lib/packetgen/header/ospfv3/ls_update.rb +74 -0
- data/lib/packetgen/header/ospfv3/lsa.rb +252 -0
- data/lib/packetgen/header/ospfv3/lsa_header.rb +123 -0
- data/lib/packetgen/header/snmp.rb +2 -0
- data/lib/packetgen/header/tcp.rb +14 -14
- data/lib/packetgen/header/tcp/option.rb +7 -1
- data/lib/packetgen/header/tcp/options.rb +7 -0
- data/lib/packetgen/header/tftp.rb +2 -0
- data/lib/packetgen/header/udp.rb +6 -14
- data/lib/packetgen/inspect.rb +5 -1
- data/lib/packetgen/packet.rb +3 -1
- data/lib/packetgen/pcapng.rb +2 -0
- data/lib/packetgen/pcapng/block.rb +2 -0
- data/lib/packetgen/pcapng/epb.rb +2 -0
- data/lib/packetgen/pcapng/file.rb +2 -0
- data/lib/packetgen/pcapng/idb.rb +2 -0
- data/lib/packetgen/pcapng/shb.rb +2 -0
- data/lib/packetgen/pcapng/spb.rb +2 -0
- data/lib/packetgen/pcapng/unknown_block.rb +2 -0
- data/lib/packetgen/proto.rb +2 -0
- data/lib/packetgen/types/array.rb +3 -0
- data/lib/packetgen/types/cstring.rb +3 -1
- data/lib/packetgen/types/enum.rb +2 -0
- data/lib/packetgen/types/fields.rb +8 -4
- data/lib/packetgen/types/int.rb +3 -1
- data/lib/packetgen/types/int_string.rb +2 -0
- data/lib/packetgen/types/oui.rb +2 -0
- data/lib/packetgen/types/string.rb +3 -0
- data/lib/packetgen/types/tlv.rb +8 -0
- data/lib/packetgen/utils.rb +6 -4
- data/lib/packetgen/utils/arp_spoofer.rb +2 -0
- data/lib/packetgen/version.rb +3 -1
- metadata +25 -3
data/lib/packetgen/types/enum.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
4
4
|
# This program is published under MIT license.
|
5
5
|
|
6
|
+
# frozen_string_literal: true
|
7
|
+
|
6
8
|
module PacketGen
|
7
9
|
module Types
|
8
10
|
|
@@ -71,7 +73,7 @@ module PacketGen
|
|
71
73
|
# # a size field
|
72
74
|
# define_field :body_size, PacketGen::Type::Int16
|
73
75
|
# # String field which length is taken from body_size field
|
74
|
-
# define_field :body, PacketGen::Type::String, builder: ->(obj) {
|
76
|
+
# define_field :body, PacketGen::Type::String, builder: ->(obj, type) { type.new('', length_from: obj[:body_size]) }
|
75
77
|
# # 16-bit enumeration type. As :default not specified, default to first value of enum
|
76
78
|
# define_field :type_class, PacketGen::Type::Int16Enum, enum: { 'class1' => 1, 'class2' => 2}
|
77
79
|
#
|
@@ -120,7 +122,7 @@ module PacketGen
|
|
120
122
|
# # 16-bit value
|
121
123
|
# define_field :value2, Types::Int16
|
122
124
|
# # specific class, may use a specific constructor
|
123
|
-
# define_field :value3, MyClass, builder: ->(obj) {
|
125
|
+
# define_field :value3, MyClass, builder: ->(obj, type) { type.new(obj) }
|
124
126
|
# end
|
125
127
|
#
|
126
128
|
# bs = BinaryStruct.new
|
@@ -306,7 +308,9 @@ module PacketGen
|
|
306
308
|
end
|
307
309
|
|
308
310
|
value = options[field] || default
|
309
|
-
if
|
311
|
+
if value.class <= type
|
312
|
+
@fields[field] = value
|
313
|
+
elsif type < Types::Enum
|
310
314
|
case value
|
311
315
|
when ::String
|
312
316
|
@fields[field].value = value
|
@@ -423,7 +427,7 @@ module PacketGen
|
|
423
427
|
# Return object as a hash
|
424
428
|
# @return [Hash] keys: attributes, values: attribute values
|
425
429
|
def to_h
|
426
|
-
Hash[fields.map { |f| [f, @fields[f]] }]
|
430
|
+
Hash[fields.map { |f| [f, @fields[f].to_human] }]
|
427
431
|
end
|
428
432
|
|
429
433
|
# Used to set body as value of body object.
|
data/lib/packetgen/types/int.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
5
5
|
# This program is published under MIT license.
|
6
6
|
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
7
9
|
module PacketGen
|
8
10
|
module Types
|
9
11
|
|
@@ -151,7 +153,7 @@ module PacketGen
|
|
151
153
|
def to_s
|
152
154
|
up8 = to_i >> 16
|
153
155
|
down16 = to_i & 0xffff
|
154
|
-
if @endian == :
|
156
|
+
if @endian == :big
|
155
157
|
[up8, down16].pack('Cn')
|
156
158
|
else
|
157
159
|
[down16, up8].pack('vC')
|
data/lib/packetgen/types/oui.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
5
5
|
# This program is published under MIT license.
|
6
6
|
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
7
9
|
module PacketGen
|
8
10
|
module Types
|
9
11
|
|
@@ -44,6 +46,7 @@ module PacketGen
|
|
44
46
|
end
|
45
47
|
|
46
48
|
alias sz length
|
49
|
+
alias to_human to_s
|
47
50
|
end
|
48
51
|
end
|
49
52
|
end
|
data/lib/packetgen/types/tlv.rb
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# This file is part of PacketGen
|
3
|
+
# See https://github.com/sdaubert/packetgen for more informations
|
4
|
+
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
5
|
+
# This program is published under MIT license.
|
6
|
+
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
1
9
|
module PacketGen
|
2
10
|
module Types
|
3
11
|
|
data/lib/packetgen/utils.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
# See https://github.com/sdaubert/packetgen for more informations
|
3
3
|
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
4
4
|
# This program is published under MIT license.
|
5
|
+
|
6
|
+
# frozen_string_literal: true
|
5
7
|
require_relative 'config'
|
6
8
|
require_relative 'utils/arp_spoofer'
|
7
9
|
|
@@ -135,10 +137,10 @@ module PacketGen
|
|
135
137
|
my_mac = Config.instance.hwaddr(options[:iface])
|
136
138
|
my_ip = Config.instance.ipaddr(options[:iface])
|
137
139
|
capture = Capture.new(iface: options[:iface],
|
138
|
-
filter: "((ip src #{target1} and not ip dst #{my_ip}) or"
|
139
|
-
" (ip src #{target2} and not ip dst #{my_ip}) or"
|
140
|
-
" (ip dst #{target1} and not ip src #{my_ip}) or"
|
141
|
-
" (ip dst #{target2} and not ip src #{my_ip}))"
|
140
|
+
filter: "((ip src #{target1} and not ip dst #{my_ip}) or" \
|
141
|
+
" (ip src #{target2} and not ip dst #{my_ip}) or" \
|
142
|
+
" (ip dst #{target1} and not ip src #{my_ip}) or" \
|
143
|
+
" (ip dst #{target2} and not ip src #{my_ip}))" \
|
142
144
|
" and ether dst #{my_mac}")
|
143
145
|
|
144
146
|
spoofer.start_all
|
data/lib/packetgen/version.rb
CHANGED
@@ -3,10 +3,12 @@
|
|
3
3
|
# Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
|
4
4
|
# This program is published under MIT license.
|
5
5
|
|
6
|
+
# frozen_string_literal: true
|
7
|
+
|
6
8
|
# PacketGen is a network packet generator and analyzor.
|
7
9
|
#
|
8
10
|
# @author Sylvain Daubert
|
9
11
|
module PacketGen
|
10
12
|
# PacketGen version
|
11
|
-
VERSION = '2.
|
13
|
+
VERSION = '2.5.0'
|
12
14
|
end
|
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.
|
4
|
+
version: 2.5.0
|
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-02
|
11
|
+
date: 2018-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pcaprub
|
@@ -155,6 +155,11 @@ files:
|
|
155
155
|
- lib/packetgen/header/dhcp.rb
|
156
156
|
- lib/packetgen/header/dhcp/option.rb
|
157
157
|
- lib/packetgen/header/dhcp/options.rb
|
158
|
+
- lib/packetgen/header/dhcpv6.rb
|
159
|
+
- lib/packetgen/header/dhcpv6/duid.rb
|
160
|
+
- lib/packetgen/header/dhcpv6/option.rb
|
161
|
+
- lib/packetgen/header/dhcpv6/options.rb
|
162
|
+
- lib/packetgen/header/dhcpv6/relay.rb
|
158
163
|
- lib/packetgen/header/dns.rb
|
159
164
|
- lib/packetgen/header/dns/name.rb
|
160
165
|
- lib/packetgen/header/dns/opt.rb
|
@@ -217,6 +222,23 @@ files:
|
|
217
222
|
- lib/packetgen/header/mldv2/mcast_address_record.rb
|
218
223
|
- lib/packetgen/header/mldv2/mlq.rb
|
219
224
|
- lib/packetgen/header/mldv2/mlr.rb
|
225
|
+
- lib/packetgen/header/ospfv2.rb
|
226
|
+
- lib/packetgen/header/ospfv2/db_description.rb
|
227
|
+
- lib/packetgen/header/ospfv2/hello.rb
|
228
|
+
- lib/packetgen/header/ospfv2/ls_ack.rb
|
229
|
+
- lib/packetgen/header/ospfv2/ls_request.rb
|
230
|
+
- lib/packetgen/header/ospfv2/ls_update.rb
|
231
|
+
- lib/packetgen/header/ospfv2/lsa.rb
|
232
|
+
- lib/packetgen/header/ospfv2/lsa_header.rb
|
233
|
+
- lib/packetgen/header/ospfv3.rb
|
234
|
+
- lib/packetgen/header/ospfv3/db_description.rb
|
235
|
+
- lib/packetgen/header/ospfv3/hello.rb
|
236
|
+
- lib/packetgen/header/ospfv3/ipv6_prefix.rb
|
237
|
+
- lib/packetgen/header/ospfv3/ls_ack.rb
|
238
|
+
- lib/packetgen/header/ospfv3/ls_request.rb
|
239
|
+
- lib/packetgen/header/ospfv3/ls_update.rb
|
240
|
+
- lib/packetgen/header/ospfv3/lsa.rb
|
241
|
+
- lib/packetgen/header/ospfv3/lsa_header.rb
|
220
242
|
- lib/packetgen/header/snmp.rb
|
221
243
|
- lib/packetgen/header/tcp.rb
|
222
244
|
- lib/packetgen/header/tcp/option.rb
|
@@ -268,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
290
|
version: '0'
|
269
291
|
requirements: []
|
270
292
|
rubyforge_project:
|
271
|
-
rubygems_version: 2.6
|
293
|
+
rubygems_version: 2.7.6
|
272
294
|
signing_key:
|
273
295
|
specification_version: 4
|
274
296
|
summary: Network packet generator and analyzor
|