class PacketFu::EthPacket
EthPacket
is used to construct Ethernet packets. They contain an Ethernet header, and that’s about it.
Example¶ ↑
require 'packetfu' eth_pkt = PacketFu::EthPacket.new eth_pkt.eth_saddr="00:1c:23:44:55:66" eth_pkt.eth_daddr="00:1c:24:aa:bb:cc" eth_pkt.to_w('eth0') # Inject on the wire. (require root)
Attributes
eth_header[RW]
Public Class Methods
can_parse?(str)
click to toggle source
# File lib/packetfu/protos/eth.rb, line 22 def self.can_parse?(str) # XXX Temporary fix. Need to extend the EthHeader class to handle more. valid_eth_types = [0x0800, 0x0806, 0x86dd, 0x88cc] return false unless str.size >= 14 type = str[12,2].unpack("n").first rescue nil return false unless valid_eth_types.include? type true end
new(args={})
click to toggle source
Calls superclass method
PacketFu::Packet::new
# File lib/packetfu/protos/eth.rb, line 44 def initialize(args={}) @eth_header = EthHeader.new(args).read(args[:eth]) @headers = [@eth_header] super end
Public Instance Methods
read(str=nil,args={})
click to toggle source
Calls superclass method
PacketFu::Packet#read
# File lib/packetfu/protos/eth.rb, line 31 def read(str=nil,args={}) raise "Cannot parse `#{str}'" unless self.class.can_parse?(str) @eth_header.read(str) super(args) return self end
recalc(args={})
click to toggle source
Does nothing, really, since there’s no length or checksum to calculate for a straight Ethernet packet.
# File lib/packetfu/protos/eth.rb, line 40 def recalc(args={}) @headers[0].inspect end