IPv6Packet is used to construct IPv6 Packets. They contain an EthHeader and an IPv6Header, and in the distant, unknowable future, will take interesting IPv6ish payloads.

This mostly complete, but not very useful. It’s intended primarily as an example protocol.

Parameters

  :eth
    A pre-generated EthHeader object.
  :ip
    A pre-generated IPHeader object.
  :flavor
    TODO: Sets the "flavor" of the IPv6 packet. No idea what this will look like, haven't done much IPv6 fingerprinting.
  :config
    A hash of return address details, often the output of Utils.whoami?
Methods
C
N
P
R
Attributes
[RW] eth_header
[RW] ipv6_header
Class Public methods
can_parse?(str)
# File lib/packetfu/protos/ipv6.rb, line 211
                def self.can_parse?(str)
                        return false unless EthPacket.can_parse? str
                        return false unless str.size >= 54
                        return false unless str[12,2] == "\x86\xdd"
                        true
                end
new(args={})
# File lib/packetfu/protos/ipv6.rb, line 227
                def initialize(args={})
                        @eth_header = (args[:eth] || EthHeader.new)
                        @ipv6_header = (args[:ipv6]  || IPv6Header.new)
                        @eth_header.eth_proto = 0x86dd
                        @eth_header.body=@ipv6_header
                        @headers = [@eth_header, @ipv6_header]
                        super
                end
Instance Public methods
peek(args={})

Peek provides summary data on packet contents.

# File lib/packetfu/protos/ipv6.rb, line 237
                def peek(args={})
                        peek_data = ["6  "]
                        peek_data << "%-5d" % self.to_s.size
                        peek_data << "%-31s" % self.ipv6_saddr
                        peek_data << "-> "
                        peek_data << "%-31s" % self.ipv6_daddr
                        peek_data << "  N:"
                        peek_data << self.ipv6_next.to_s(16)
                        peek_data.join
                end
read(str=nil,args={})
# File lib/packetfu/protos/ipv6.rb, line 218
                def read(str=nil,args={})
                        raise "Cannot parse `#{str}'" unless self.class.can_parse?(str)
                        @eth_header.read(str)
                        @ipv6_header.read(str[14,str.size])
                        @eth_header.body = @ipv6_header
                        super(args)
                        self
                end