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 37
def initialize(args={})
  @eth_header = EthHeader.new(args).read(args[:eth])
  @headers = [@eth_header]
  super
end

Public Instance Methods

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 33
def recalc(args={})
  @headers[0].inspect
end