Module: PacketGen

Defined in:
lib/packetgen.rb,
lib/packetgen/proto.rb,
lib/packetgen/types.rb,
lib/packetgen/utils.rb,
lib/packetgen/config.rb,
lib/packetgen/header.rb,
lib/packetgen/packet.rb,
lib/packetgen/pcapng.rb,
lib/packetgen/capture.rb,
lib/packetgen/inspect.rb,
lib/packetgen/version.rb,
lib/packetgen/header/ip.rb,
lib/packetgen/types/int.rb,
lib/packetgen/types/oui.rb,
lib/packetgen/types/tlv.rb,
lib/packetgen/header/arp.rb,
lib/packetgen/header/dns.rb,
lib/packetgen/header/dns.rb,
lib/packetgen/header/eap.rb,
lib/packetgen/header/eth.rb,
lib/packetgen/header/gre.rb,
lib/packetgen/header/llc.rb,
lib/packetgen/header/mld.rb,
lib/packetgen/header/tcp.rb,
lib/packetgen/header/tcp.rb,
lib/packetgen/header/udp.rb,
lib/packetgen/headerable.rb,
lib/packetgen/pcapng/epb.rb,
lib/packetgen/pcapng/idb.rb,
lib/packetgen/pcapng/shb.rb,
lib/packetgen/pcapng/spb.rb,
lib/packetgen/types/enum.rb,
lib/packetgen/deprecation.rb,
lib/packetgen/header/base.rb,
lib/packetgen/header/dhcp.rb,
lib/packetgen/header/icmp.rb,
lib/packetgen/header/igmp.rb,
lib/packetgen/header/ipv6.rb,
lib/packetgen/header/ipv6.rb,
lib/packetgen/header/mdns.rb,
lib/packetgen/header/snmp.rb,
lib/packetgen/header/tftp.rb,
lib/packetgen/pcapng/file.rb,
lib/packetgen/types/array.rb,
lib/packetgen/header/bootp.rb,
lib/packetgen/header/dot11.rb,
lib/packetgen/header/dot1q.rb,
lib/packetgen/header/dot1x.rb,
lib/packetgen/header/mldv2.rb,
lib/packetgen/pcapng/block.rb,
lib/packetgen/types/fields.rb,
lib/packetgen/types/string.rb,
lib/packetgen/header/dhcpv6.rb,
lib/packetgen/header/dns/rr.rb,
lib/packetgen/header/icmpv6.rb,
lib/packetgen/header/igmpv3.rb,
lib/packetgen/header/ospfv2.rb,
lib/packetgen/header/ospfv3.rb,
lib/packetgen/types/cstring.rb,
lib/packetgen/header/dns/opt.rb,
lib/packetgen/header/eap/md5.rb,
lib/packetgen/header/eap/tls.rb,
lib/packetgen/header/ip/addr.rb,
lib/packetgen/header/dns/name.rb,
lib/packetgen/header/eap/fast.rb,
lib/packetgen/header/eap/ttls.rb,
lib/packetgen/header/asn1_base.rb,
lib/packetgen/header/igmpv3/mq.rb,
lib/packetgen/header/igmpv3/mr.rb,
lib/packetgen/header/ip/option.rb,
lib/packetgen/header/ipv6/addr.rb,
lib/packetgen/header/mldv2/mlq.rb,
lib/packetgen/header/mldv2/mlr.rb,
lib/packetgen/types/int_string.rb,
lib/packetgen/header/dns/option.rb,
lib/packetgen/header/dot11/data.rb,
lib/packetgen/header/http/verbs.rb,
lib/packetgen/header/ip/options.rb,
lib/packetgen/header/ospfv2/lsa.rb,
lib/packetgen/header/ospfv3/lsa.rb,
lib/packetgen/header/tcp/option.rb,
lib/packetgen/types/length_from.rb,
lib/packetgen/utils/arp_spoofer.rb,
lib/packetgen/header/dhcp/option.rb,
lib/packetgen/header/dhcpv6/duid.rb,
lib/packetgen/header/tcp/options.rb,
lib/packetgen/types/abstract_tlv.rb,
lib/packetgen/header/dhcp/options.rb,
lib/packetgen/header/dhcpv6/relay.rb,
lib/packetgen/header/dns/question.rb,
lib/packetgen/header/http/headers.rb,
lib/packetgen/header/http/request.rb,
lib/packetgen/header/ospfv2/hello.rb,
lib/packetgen/header/ospfv3/hello.rb,
lib/packetgen/header/dhcpv6/option.rb,
lib/packetgen/header/dns/qdsection.rb,
lib/packetgen/header/dns/rrsection.rb,
lib/packetgen/header/dot11/control.rb,
lib/packetgen/header/dot11/element.rb,
lib/packetgen/header/http/response.rb,
lib/packetgen/header/ospfv2/ls_ack.rb,
lib/packetgen/header/ospfv3/ls_ack.rb,
lib/packetgen/pcapng/unknown_block.rb,
lib/packetgen/header/dhcpv6/options.rb,
lib/packetgen/header/dot11/sub_mngt.rb,
lib/packetgen/header/ipv6/extension.rb,
lib/packetgen/header/ipv6/hop_by_hop.rb,
lib/packetgen/header/dot11/management.rb,
lib/packetgen/header/ospfv2/ls_update.rb,
lib/packetgen/header/ospfv3/ls_update.rb,
lib/packetgen/header/ospfv2/ls_request.rb,
lib/packetgen/header/ospfv2/lsa_header.rb,
lib/packetgen/header/ospfv3/ls_request.rb,
lib/packetgen/header/ospfv3/lsa_header.rb,
lib/packetgen/header/ospfv3/ipv6_prefix.rb,
lib/packetgen/header/igmpv3/group_record.rb,
lib/packetgen/header/ospfv2/db_description.rb,
lib/packetgen/header/ospfv3/db_description.rb,
lib/packetgen/header/mldv2/mcast_address_record.rb

Overview

frozen_string_literal: true

Defined Under Namespace

Modules: Deprecation, Header, Headerable, Inspect, PcapNG, Proto, Types, Utils Classes: Capture, Config, Error, FormatError, Packet, ParseError, WireError

Constant Summary collapse

VERSION =

PacketGen version

'3.1.1'

Class Method Summary collapse

Class Method Details

.capture(**kwargs) {|packet| ... } ⇒ Array<Packet>

Yield Parameters:

Returns:

See Also:



48
49
50
# File 'lib/packetgen.rb', line 48

def self.capture(**kwargs)
  Packet.capture(kwargs) { |packet| yield packet if block_given? }
end

.default_ifaceString

Get default network interface (ie. first non-loopback declared interface)

Returns:

  • (String)


76
77
78
# File 'lib/packetgen.rb', line 76

def self.default_iface
  Interfacez.default
end

.force_binary(str) ⇒ String

Force binary encoding for str

Parameters:

  • str (String)

Returns:

  • (String)

    binary encoded string



70
71
72
# File 'lib/packetgen.rb', line 70

def self.force_binary(str)
  str.dup.force_encoding(Encoding::BINARY)
end

.gen(protocol, options = {}) ⇒ Packet

Shortcut for PacketGen::Packet.gen

Parameters:

  • protocol (String)

    base protocol for packet

  • options (Hash) (defaults to: {})

    specific options for protocol

Returns:



31
32
33
# File 'lib/packetgen.rb', line 31

def self.gen(protocol, options={})
  Packet.gen protocol, options
end

.header(protocol, options = {}) ⇒ Header::Base

Shortcut to get a header class

Examples:

builtin class

# same as PacketGen::Header::Dot11:Data.new(id: 0xfedc)
dot11 = PacketGen.header('Dot11::Data', id: 0xfedc)  #=> PacketGen::Header::Dot11:Data

plugin class

require 'packet-plugin-smb'
# same as PacketGen::Plugin::SMB::CloseRequest.new(fid: 0x1234)
smbclose = PacketGen.header('SMB::CloseRequest', fid: 0x1234)

Parameters:

  • protocol (String)

    protocol from which generate a header

  • options (Hash) (defaults to: {})

    specific options for protocol

Returns:



91
92
93
# File 'lib/packetgen.rb', line 91

def self.header(protocol, options={})
  Header.get_header_class_by_name(protocol).new(options)
end

.parse(binary_str, first_header: nil) ⇒ Packet

Parameters:

  • binary_str (String)
  • first_header (String) (defaults to: nil)

    First protocol header

Returns:



39
40
41
# File 'lib/packetgen.rb', line 39

def self.parse(binary_str, first_header: nil)
  Packet.parse binary_str, first_header: first_header
end

.read(filename) ⇒ Array<Packet>

Shortcut for PacketGen::Packet.read

Parameters:

  • filename (String)

    PcapNG file

Returns:



55
56
57
# File 'lib/packetgen.rb', line 55

def self.read(filename)
  Packet.read filename
end

.write(filename, packets) ⇒ void

This method returns an undefined value.

Shortcut for PacketGen::Packet.write

Parameters:

  • filename (String)
  • packets (Array<Packet>)

    packets to write



63
64
65
# File 'lib/packetgen.rb', line 63

def self.write(filename, packets)
  Packet.write filename, packets
end