packetgen 3.3.3 → 4.1.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 +4 -4
- data/README.md +38 -22
- data/lib/packetgen/capture.rb +2 -2
- data/lib/packetgen/config.rb +0 -1
- data/lib/packetgen/deprecation.rb +14 -8
- data/lib/packetgen/header/arp.rb +17 -18
- data/lib/packetgen/header/asn1_base.rb +2 -1
- data/lib/packetgen/header/base.rb +42 -40
- data/lib/packetgen/header/bootp.rb +35 -37
- data/lib/packetgen/header/dhcp/option.rb +21 -21
- data/lib/packetgen/header/dhcp/options.rb +3 -3
- data/lib/packetgen/header/dhcp.rb +8 -9
- data/lib/packetgen/header/dhcpv6/duid.rb +16 -16
- data/lib/packetgen/header/dhcpv6/option.rb +83 -61
- data/lib/packetgen/header/dhcpv6/options.rb +4 -4
- data/lib/packetgen/header/dhcpv6/relay.rb +6 -5
- data/lib/packetgen/header/dhcpv6.rb +17 -18
- data/lib/packetgen/header/dns/name.rb +21 -16
- data/lib/packetgen/header/dns/opt.rb +5 -2
- data/lib/packetgen/header/dns/option.rb +14 -14
- data/lib/packetgen/header/dns/qdsection.rb +3 -3
- data/lib/packetgen/header/dns/question.rb +7 -8
- data/lib/packetgen/header/dns/rr.rb +56 -43
- data/lib/packetgen/header/dns/rrsection.rb +6 -6
- data/lib/packetgen/header/dns.rb +103 -90
- data/lib/packetgen/header/dot11/control.rb +12 -12
- data/lib/packetgen/header/dot11/data.rb +25 -24
- data/lib/packetgen/header/dot11/element.rb +4 -4
- data/lib/packetgen/header/dot11/management.rb +21 -18
- data/lib/packetgen/header/dot11/sub_mngt.rb +40 -53
- data/lib/packetgen/header/dot11.rb +117 -122
- data/lib/packetgen/header/dot1q.rb +12 -13
- data/lib/packetgen/header/dot1x.rb +13 -13
- data/lib/packetgen/header/eap/fast.rb +4 -4
- data/lib/packetgen/header/eap/md5.rb +16 -8
- data/lib/packetgen/header/eap/tls.rb +18 -19
- data/lib/packetgen/header/eap/ttls.rb +22 -21
- data/lib/packetgen/header/eap.rb +73 -48
- data/lib/packetgen/header/eth.rb +41 -27
- data/lib/packetgen/header/gre.rb +33 -11
- data/lib/packetgen/header/http/headers.rb +7 -6
- data/lib/packetgen/header/http/request.rb +38 -29
- data/lib/packetgen/header/http/response.rb +35 -27
- data/lib/packetgen/header/http/verbs.rb +1 -3
- data/lib/packetgen/header/icmp.rb +14 -14
- data/lib/packetgen/header/icmpv6.rb +10 -9
- data/lib/packetgen/header/igmp.rb +26 -15
- data/lib/packetgen/header/igmpv3/group_record.rb +18 -13
- data/lib/packetgen/header/igmpv3/mq.rb +16 -18
- data/lib/packetgen/header/igmpv3/mr.rb +5 -5
- data/lib/packetgen/header/igmpv3.rb +12 -11
- data/lib/packetgen/header/ip/addr.rb +19 -15
- data/lib/packetgen/header/ip/option.rb +47 -36
- data/lib/packetgen/header/ip/options.rb +1 -1
- data/lib/packetgen/header/ip.rb +77 -95
- data/lib/packetgen/header/ipv6/addr.rb +28 -27
- data/lib/packetgen/header/ipv6/extension.rb +13 -11
- data/lib/packetgen/header/ipv6/hop_by_hop.rb +32 -13
- data/lib/packetgen/header/ipv6.rb +42 -35
- data/lib/packetgen/header/llc.rb +28 -21
- data/lib/packetgen/header/mdns.rb +10 -3
- data/lib/packetgen/header/mld.rb +15 -13
- data/lib/packetgen/header/mldv2/mcast_address_record.rb +17 -12
- data/lib/packetgen/header/mldv2/mlq.rb +22 -24
- data/lib/packetgen/header/mldv2/mlr.rb +8 -8
- data/lib/packetgen/header/mldv2.rb +1 -1
- data/lib/packetgen/header/ospfv2/db_description.rb +17 -18
- data/lib/packetgen/header/ospfv2/hello.rb +18 -17
- data/lib/packetgen/header/ospfv2/ls_ack.rb +6 -7
- data/lib/packetgen/header/ospfv2/ls_request.rb +14 -13
- data/lib/packetgen/header/ospfv2/ls_update.rb +9 -9
- data/lib/packetgen/header/ospfv2/lsa.rb +79 -60
- data/lib/packetgen/header/ospfv2/lsa_header.rb +12 -11
- data/lib/packetgen/header/ospfv2.rb +49 -46
- data/lib/packetgen/header/ospfv3/db_description.rb +20 -22
- data/lib/packetgen/header/ospfv3/hello.rb +17 -16
- data/lib/packetgen/header/ospfv3/ipv6_prefix.rb +22 -20
- data/lib/packetgen/header/ospfv3/ls_ack.rb +7 -8
- data/lib/packetgen/header/ospfv3/ls_request.rb +18 -18
- data/lib/packetgen/header/ospfv3/ls_update.rb +10 -10
- data/lib/packetgen/header/ospfv3/lsa.rb +62 -51
- data/lib/packetgen/header/ospfv3/lsa_header.rb +12 -11
- data/lib/packetgen/header/ospfv3.rb +54 -52
- data/lib/packetgen/header/sctp/chunk.rb +80 -56
- data/lib/packetgen/header/sctp/error.rb +174 -202
- data/lib/packetgen/header/sctp/padded32.rb +3 -3
- data/lib/packetgen/header/sctp/parameter.rb +89 -136
- data/lib/packetgen/header/sctp.rb +19 -8
- data/lib/packetgen/header/snmp.rb +108 -7
- data/lib/packetgen/header/tcp/option.rb +52 -39
- data/lib/packetgen/header/tcp/options.rb +13 -5
- data/lib/packetgen/header/tcp.rb +83 -65
- data/lib/packetgen/header/tftp.rb +31 -25
- data/lib/packetgen/header/udp.rb +21 -19
- data/lib/packetgen/header.rb +23 -18
- data/lib/packetgen/headerable.rb +21 -5
- data/lib/packetgen/inspect.rb +3 -8
- data/lib/packetgen/packet.rb +146 -71
- data/lib/packetgen/pcap.rb +15 -4
- data/lib/packetgen/pcapng/block.rb +20 -18
- data/lib/packetgen/pcapng/epb.rb +13 -15
- data/lib/packetgen/pcapng/file.rb +44 -111
- data/lib/packetgen/pcapng/idb.rb +11 -12
- data/lib/packetgen/pcapng/shb.rb +15 -16
- data/lib/packetgen/pcapng/spb.rb +9 -11
- data/lib/packetgen/pcapng/unknown_block.rb +6 -17
- data/lib/packetgen/pcapng.rb +6 -4
- data/lib/packetgen/pcaprub_wrapper.rb +17 -1
- data/lib/packetgen/proto.rb +5 -1
- data/lib/packetgen/unknown_packet.rb +5 -5
- data/lib/packetgen/utils/arp_spoofer.rb +18 -19
- data/lib/packetgen/utils.rb +4 -3
- data/lib/packetgen/version.rb +1 -1
- data/lib/packetgen.rb +12 -5
- metadata +29 -38
- data/lib/packetgen/types/abstract_tlv.rb +0 -278
- data/lib/packetgen/types/array.rb +0 -287
- data/lib/packetgen/types/cstring.rb +0 -109
- data/lib/packetgen/types/enum.rb +0 -171
- data/lib/packetgen/types/fieldable.rb +0 -66
- data/lib/packetgen/types/fields.rb +0 -622
- data/lib/packetgen/types/int.rb +0 -473
- data/lib/packetgen/types/int_string.rb +0 -102
- data/lib/packetgen/types/length_from.rb +0 -54
- data/lib/packetgen/types/oui.rb +0 -52
- data/lib/packetgen/types/string.rb +0 -97
- data/lib/packetgen/types/tlv.rb +0 -161
- data/lib/packetgen/types.rb +0 -26
@@ -20,7 +20,7 @@ module PacketGen
|
|
20
20
|
|
21
21
|
def initialize
|
22
22
|
@headers = [].freeze
|
23
|
-
@binary_str =
|
23
|
+
@binary_str = ::String.new # Return empty string with encoding ASCII-8BIT, so BINARY
|
24
24
|
end
|
25
25
|
|
26
26
|
# Unknown packet, so unknown protocol.
|
@@ -30,7 +30,7 @@ module PacketGen
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Get packet body
|
33
|
-
# @return [
|
33
|
+
# @return [String]
|
34
34
|
def body
|
35
35
|
@binary_str
|
36
36
|
end
|
@@ -40,7 +40,7 @@ module PacketGen
|
|
40
40
|
# @param [String] str
|
41
41
|
# @return [void]
|
42
42
|
def body=(str)
|
43
|
-
@binary_str =
|
43
|
+
@binary_str = str.b
|
44
44
|
end
|
45
45
|
|
46
46
|
# Write packet to a PCapNG file on disk.
|
@@ -56,7 +56,7 @@ module PacketGen
|
|
56
56
|
# @param [String] binary_str
|
57
57
|
# @return [self]
|
58
58
|
def parse(binary_str, _first_header: nil)
|
59
|
-
@binary_str =
|
59
|
+
@binary_str = binary_str.b
|
60
60
|
self
|
61
61
|
end
|
62
62
|
|
@@ -66,7 +66,7 @@ module PacketGen
|
|
66
66
|
str << Inspect.inspect_body(body)
|
67
67
|
end
|
68
68
|
|
69
|
-
# equality if {#to_s}
|
69
|
+
# equality if {#to_s} are equal
|
70
70
|
# @return [Boolean]
|
71
71
|
def ==(other)
|
72
72
|
to_s == other.to_s
|
@@ -22,15 +22,15 @@ module PacketGen
|
|
22
22
|
# @author Sylvain Daubert
|
23
23
|
# @since 2.1.3
|
24
24
|
class ARPSpoofer
|
25
|
-
# @param [
|
25
|
+
# @param [Numeric,nil] timeout spoof will happen for this amount
|
26
26
|
# of time
|
27
|
-
# @param [
|
27
|
+
# @param [Numeric] interval time between 2 ARP packets
|
28
28
|
# @param [String,nil] iface network interface on which do spoofing.
|
29
29
|
# Defaults to {PacketGen.default_iface}
|
30
30
|
def initialize(timeout: nil, interval: 1.0, iface: nil)
|
31
31
|
@timeout = timeout
|
32
32
|
@timeout = @timeout.to_f if @timeout
|
33
|
-
@interval = interval
|
33
|
+
@interval = interval.to_f
|
34
34
|
@iface = iface || PacketGen.default_iface
|
35
35
|
@targets = {}
|
36
36
|
@arp_packets = {}
|
@@ -56,19 +56,19 @@ module PacketGen
|
|
56
56
|
# @param [String] target_ip target IP address
|
57
57
|
# @return [void]
|
58
58
|
def remove(target_ip)
|
59
|
-
@targets.delete
|
60
|
-
@arp_packets.delete
|
59
|
+
@targets.delete(target_ip)
|
60
|
+
@arp_packets.delete(target_ip)
|
61
61
|
end
|
62
62
|
|
63
63
|
# Get registered targets (all targets, registered with {#add} and {#start})
|
64
|
-
# @return [Array<String>] list of
|
64
|
+
# @return [Array<String>] list of registeres IP addresses
|
65
65
|
def registered_targets
|
66
66
|
@targets.keys
|
67
67
|
end
|
68
68
|
|
69
69
|
# Get active targets (registered with {#start}, or all after using
|
70
70
|
# {#start_all})
|
71
|
-
# @return [Array<String>] list of
|
71
|
+
# @return [Array<String>] list of active IP addresses
|
72
72
|
def active_targets
|
73
73
|
@arp_packets.keys
|
74
74
|
end
|
@@ -83,23 +83,23 @@ module PacketGen
|
|
83
83
|
# an ARP request is made to get it.
|
84
84
|
# @return [void]
|
85
85
|
def start(target_ip, spoofed_ip, options={})
|
86
|
-
add
|
87
|
-
activate
|
86
|
+
add(target_ip, spoofed_ip, options)
|
87
|
+
activate(target_ip)
|
88
88
|
end
|
89
89
|
|
90
90
|
# Stop spoofing on given target
|
91
91
|
# @param [String] target_ip target IP address
|
92
92
|
# @return [void]
|
93
93
|
def stop(target_ip)
|
94
|
-
deactivate
|
95
|
-
remove
|
94
|
+
deactivate(target_ip)
|
95
|
+
remove(target_ip)
|
96
96
|
end
|
97
97
|
|
98
98
|
# Start spoofing on all targets added with {#add}.
|
99
99
|
# @return [void]
|
100
100
|
def start_all
|
101
101
|
@targets.each_key do |target_ip|
|
102
|
-
activate
|
102
|
+
activate(target_ip)
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -107,7 +107,7 @@ module PacketGen
|
|
107
107
|
# @return [void]
|
108
108
|
def stop_all
|
109
109
|
@targets.each_key do |target_ip|
|
110
|
-
deactivate
|
110
|
+
deactivate(target_ip)
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
@@ -115,9 +115,7 @@ module PacketGen
|
|
115
115
|
# @param [String] target_ip target IP address
|
116
116
|
# @return [Boolean]
|
117
117
|
def active?(target_ip)
|
118
|
-
|
119
|
-
return unless @targets.key?(target_ip)
|
120
|
-
# rubocop:enable Style/ReturnNilInPredicateMethodDefinition
|
118
|
+
return false unless @targets.key?(target_ip)
|
121
119
|
|
122
120
|
@targets[target_ip][:active]
|
123
121
|
end
|
@@ -126,6 +124,7 @@ module PacketGen
|
|
126
124
|
# was set on {#initialize}.
|
127
125
|
def wait
|
128
126
|
@spoof_thread.join
|
127
|
+
@spoof_thread = nil
|
129
128
|
end
|
130
129
|
|
131
130
|
private
|
@@ -143,7 +142,7 @@ module PacketGen
|
|
143
142
|
# Create spoof thread
|
144
143
|
def create_spoof_thread
|
145
144
|
@spoof_thread = Thread.new(@queue, @timeout, @interval) do |queue, timeout, interval|
|
146
|
-
while timeout.nil? || timeout
|
145
|
+
while timeout.nil? || timeout.positive?
|
147
146
|
packets = queue.pop unless queue.empty?
|
148
147
|
send_packets_on_wire(packets) unless packets.empty?
|
149
148
|
timeout -= interval if timeout
|
@@ -161,9 +160,9 @@ module PacketGen
|
|
161
160
|
# @param [String] target_ip
|
162
161
|
# @return [void]
|
163
162
|
def deactivate(target_ip)
|
164
|
-
@arp_packets.delete
|
163
|
+
@arp_packets.delete(target_ip)
|
165
164
|
if @arp_packets.empty?
|
166
|
-
@spoof_thread
|
165
|
+
@spoof_thread&.kill
|
167
166
|
@spoof_thread = nil
|
168
167
|
else
|
169
168
|
@queue << @arp_packets.values
|
data/lib/packetgen/utils.rb
CHANGED
@@ -31,9 +31,9 @@ module PacketGen
|
|
31
31
|
# @private
|
32
32
|
IP_PATH = '/usr/bin/ip'
|
33
33
|
# @private
|
34
|
-
ARP_LINE_RE = /\((\d+\.\d+\.\d+\.\d+)\) at (([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})(?: \[ether\])? on (\w+)
|
34
|
+
ARP_LINE_RE = /\((\d+\.\d+\.\d+\.\d+)\) at (([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})(?: \[ether\])? on (\w+)/
|
35
35
|
# @private
|
36
|
-
IP_LINE_RE = /^(\d+\.\d+\.\d+\.\d+) dev (\w+) lladdr (([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})
|
36
|
+
IP_LINE_RE = /^(\d+\.\d+\.\d+\.\d+) dev (\w+) lladdr (([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2})/
|
37
37
|
|
38
38
|
# Get local ARP cache
|
39
39
|
# @return [Hash] key: IP address, value: array containing MAC address and
|
@@ -168,7 +168,8 @@ module PacketGen
|
|
168
168
|
def self.mitm(target1, target2, options={}, &block)
|
169
169
|
options = { iface: PacketGen.default_iface }.merge(options)
|
170
170
|
|
171
|
-
|
171
|
+
spoofer_options = options.slice(:timeout, :interval, :iface)
|
172
|
+
spoofer = Utils::ARPSpoofer.new(**spoofer_options.compact)
|
172
173
|
spoofer.add target1, target2, options
|
173
174
|
spoofer.add target2, target1, options
|
174
175
|
|
data/lib/packetgen/version.rb
CHANGED
data/lib/packetgen.rb
CHANGED
@@ -8,10 +8,12 @@
|
|
8
8
|
# This program is published under MIT license.
|
9
9
|
|
10
10
|
require 'packetgen/version'
|
11
|
+
require 'bin_struct'
|
11
12
|
require 'interfacez'
|
12
13
|
|
13
14
|
# PacketGen is a network packet generator and analyzor.
|
14
15
|
# @author Sylvain Daubert
|
16
|
+
# @author LemonTree
|
15
17
|
module PacketGen
|
16
18
|
# Base exception class for PacketGen exceptions
|
17
19
|
class Error < StandardError; end
|
@@ -32,12 +34,15 @@ module PacketGen
|
|
32
34
|
# @return [Headerable]
|
33
35
|
attr_reader :hdr
|
34
36
|
|
37
|
+
# @param [Headerable] prev_hdr
|
38
|
+
# @param [Headerable] hdr
|
35
39
|
def initialize(prev_hdr, hdr)
|
36
40
|
super()
|
37
41
|
@prev_hdr = prev_hdr
|
38
42
|
@hdr = hdr
|
39
43
|
end
|
40
44
|
|
45
|
+
# @return [String]
|
41
46
|
def message
|
42
47
|
"#{prev_hdr.class} knowns no layer association with #{hdr.protocol_name}. " \
|
43
48
|
"Try #{prev_hdr.class}.bind_layer(#{hdr.class}, " \
|
@@ -91,8 +96,10 @@ module PacketGen
|
|
91
96
|
# Force binary encoding for +str+
|
92
97
|
# @param [String] str
|
93
98
|
# @return [String] binary encoded string
|
99
|
+
# @deprecated Use +String#b+ instead.
|
94
100
|
def self.force_binary(str)
|
95
|
-
|
101
|
+
Deprecation.deprecated(self, :force_binary, 'String#b')
|
102
|
+
str.b
|
96
103
|
end
|
97
104
|
|
98
105
|
# Get default network interface (ie. first non-loopback declared interface)
|
@@ -100,12 +107,13 @@ module PacketGen
|
|
100
107
|
def self.default_iface
|
101
108
|
return @default_iface if defined? @default_iface
|
102
109
|
|
103
|
-
|
110
|
+
Interfacez.raw_interface_addresses.each do |iface|
|
104
111
|
next unless iface.broadaddr
|
105
112
|
next unless Interfacez.ipv4_address_of(iface.name)
|
106
113
|
next unless Interfacez.ipv6_address_of(iface.name)
|
107
114
|
|
108
|
-
|
115
|
+
@default_iface = iface.name
|
116
|
+
break
|
109
117
|
end
|
110
118
|
end
|
111
119
|
|
@@ -118,7 +126,7 @@ module PacketGen
|
|
118
126
|
# Shortcut to get a header class
|
119
127
|
# @example builtin class
|
120
128
|
# # same as PacketGen::Header::Dot11:Data.new(id: 0xfedc)
|
121
|
-
# dot11 = PacketGen.header('Dot11::Data', id: 0xfedc)
|
129
|
+
# dot11 = PacketGen.header('Dot11::Data', id: 0xfedc)
|
122
130
|
# @example plugin class
|
123
131
|
# require 'packet-plugin-smb'
|
124
132
|
# # same as PacketGen::Plugin::SMB::CloseRequest.new(fid: 0x1234)
|
@@ -133,7 +141,6 @@ end
|
|
133
141
|
|
134
142
|
require 'packetgen/deprecation'
|
135
143
|
require 'packetgen/inspect'
|
136
|
-
require 'packetgen/types'
|
137
144
|
require 'packetgen/pcapng'
|
138
145
|
require 'packetgen/pcap'
|
139
146
|
require 'packetgen/packet'
|
metadata
CHANGED
@@ -1,77 +1,84 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packetgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LemonTree55
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-03-08 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
13
|
+
name: bin_struct
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
16
|
- - "~>"
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
18
|
+
version: 0.5.0
|
20
19
|
type: :runtime
|
21
20
|
prerelease: false
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
23
22
|
requirements:
|
24
23
|
- - "~>"
|
25
24
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
25
|
+
version: 0.5.0
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
27
|
+
name: digest-crc
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
30
|
- - "~>"
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
32
|
+
version: '0'
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
37
36
|
requirements:
|
38
37
|
- - "~>"
|
39
38
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
39
|
+
version: '0'
|
41
40
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
41
|
+
name: interfacez
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - "~>"
|
46
45
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 0.13.1
|
46
|
+
version: '1.0'
|
51
47
|
type: :runtime
|
52
48
|
prerelease: false
|
53
49
|
version_requirements: !ruby/object:Gem::Requirement
|
54
50
|
requirements:
|
55
51
|
- - "~>"
|
56
52
|
- !ruby/object:Gem::Version
|
57
|
-
version: '0
|
58
|
-
|
53
|
+
version: '1.0'
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: pcaprub
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.13.
|
60
|
+
version: 0.13.0
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.13.0
|
61
68
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
69
|
+
name: rasn1
|
63
70
|
requirement: !ruby/object:Gem::Requirement
|
64
71
|
requirements:
|
65
72
|
- - "~>"
|
66
73
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
74
|
+
version: '0.14'
|
68
75
|
type: :runtime
|
69
76
|
prerelease: false
|
70
77
|
version_requirements: !ruby/object:Gem::Requirement
|
71
78
|
requirements:
|
72
79
|
- - "~>"
|
73
80
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0'
|
81
|
+
version: '0.14'
|
75
82
|
description: |
|
76
83
|
PacketGen is a network packet manipulation library. It allows reading, parsing
|
77
84
|
and sending network packets with fun.
|
@@ -197,24 +204,10 @@ files:
|
|
197
204
|
- lib/packetgen/pcapng/unknown_block.rb
|
198
205
|
- lib/packetgen/pcaprub_wrapper.rb
|
199
206
|
- lib/packetgen/proto.rb
|
200
|
-
- lib/packetgen/types.rb
|
201
|
-
- lib/packetgen/types/abstract_tlv.rb
|
202
|
-
- lib/packetgen/types/array.rb
|
203
|
-
- lib/packetgen/types/cstring.rb
|
204
|
-
- lib/packetgen/types/enum.rb
|
205
|
-
- lib/packetgen/types/fieldable.rb
|
206
|
-
- lib/packetgen/types/fields.rb
|
207
|
-
- lib/packetgen/types/int.rb
|
208
|
-
- lib/packetgen/types/int_string.rb
|
209
|
-
- lib/packetgen/types/length_from.rb
|
210
|
-
- lib/packetgen/types/oui.rb
|
211
|
-
- lib/packetgen/types/string.rb
|
212
|
-
- lib/packetgen/types/tlv.rb
|
213
207
|
- lib/packetgen/unknown_packet.rb
|
214
208
|
- lib/packetgen/utils.rb
|
215
209
|
- lib/packetgen/utils/arp_spoofer.rb
|
216
210
|
- lib/packetgen/version.rb
|
217
|
-
homepage:
|
218
211
|
licenses:
|
219
212
|
- MIT
|
220
213
|
metadata:
|
@@ -223,7 +216,6 @@ metadata:
|
|
223
216
|
bug_tracker_uri: https://github.com/lemontree55/packetgen/issues
|
224
217
|
documentation_uri: https://www.rubydoc.info/gems/packetgen
|
225
218
|
wiki_uri: https://github.com/lemontree55/packetgen/wiki
|
226
|
-
post_install_message:
|
227
219
|
rdoc_options:
|
228
220
|
- "--title"
|
229
221
|
- PacketGen - network packet dissector
|
@@ -237,15 +229,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
229
|
requirements:
|
238
230
|
- - ">="
|
239
231
|
- !ruby/object:Gem::Version
|
240
|
-
version:
|
232
|
+
version: 3.0.0
|
241
233
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
234
|
requirements:
|
243
235
|
- - ">="
|
244
236
|
- !ruby/object:Gem::Version
|
245
237
|
version: '0'
|
246
238
|
requirements: []
|
247
|
-
rubygems_version: 3.
|
248
|
-
signing_key:
|
239
|
+
rubygems_version: 3.6.2
|
249
240
|
specification_version: 4
|
250
241
|
summary: Network packet generator and dissector
|
251
242
|
test_files: []
|