class PacketFu::HSRPPacket
HSRPPacket
is used to construct HSRP Packets. They contain an EthHeader
, an IPHeader
, and a UDPHeader
.
Example¶ ↑
hsrp_pkt.new hsrp_pkt.hsrp_opcode = 0 hsrp_pkt.hsrp_state = 16 hsrp_pkt.hsrp_priority = 254 hsrp_pkt.hsrp_group = 1 hsrp_pkt.hsrp_vip = 10.100.100.254 hsrp_pkt.recalc hsrp_pkt.to_f('/tmp/hsrp.pcap')
Parameters¶ ↑
:eth A pre-generated EthHeader object. :ip A pre-generated IPHeader object. :udp A pre-generated UDPHeader object. :flavor TODO: HSRP packets don't tend have any flavor. :config A hash of return address details, often the output of Utils.whoami?
Attributes
Public Class Methods
Source
# File lib/packetfu/protos/hsrp.rb, line 47 def self.can_parse?(str) return false unless str.size >= 54 return false unless EthPacket.can_parse? str return false unless IPPacket.can_parse? str return false unless UDPPacket.can_parse? str temp_packet = UDPPacket.new temp_packet.read(str) if temp_packet.ip_ttl == 1 and [temp_packet.udp_sport,temp_packet.udp_dport] == [1985,1985] return true else return false end end
Source
# File lib/packetfu/protos/hsrp.rb, line 61 def initialize(args={}) @eth_header = EthHeader.new(args).read(args[:eth]) @ip_header = IPHeader.new(args).read(args[:ip]) @ip_header.ip_proto = 0x11 @udp_header = UDPHeader.new(args).read(args[:udp]) @hsrp_header = HSRPHeader.new(args).read(args[:hsrp]) @udp_header.body = @hsrp_header @ip_header.body = @udp_header @eth_header.body = @ip_header @headers = [@eth_header, @ip_header, @udp_header, @hsrp_header] super end
Calls superclass method
PacketFu::Packet::new
Public Instance Methods
Source
# File lib/packetfu/protos/hsrp.rb, line 75 def peek_format peek_data = ["UH "] peek_data << "%-5d" % self.to_s.size peek_data << "%-16s" % self.hsrp_addr peek_data << "%-4d" % self.hsrp_group peek_data << "%-35s" % self.hsrp_password_readable peek_data << "%-15s" % self.ip_saddr peek_data.join end
Peek provides summary data on packet contents.