- A
- B
- C
- F
- I
- N
- O
- P
- R
- T
- V
- CLASS PacketFu::ARPHeader
- CLASS PacketFu::ARPPacket
- CLASS PacketFu::AddrIpv6
- CLASS PacketFu::Capture
- CLASS PacketFu::Config
- CLASS PacketFu::EthHeader
- CLASS PacketFu::EthMac
- CLASS PacketFu::EthNic
- CLASS PacketFu::EthOui
- CLASS PacketFu::EthPacket
- CLASS PacketFu::HSRPHeader
- CLASS PacketFu::HSRPPacket
- CLASS PacketFu::ICMPHeader
- CLASS PacketFu::ICMPPacket
- CLASS PacketFu::IPHeader
- CLASS PacketFu::IPPacket
- CLASS PacketFu::IPv6Header
- CLASS PacketFu::IPv6Packet
- CLASS PacketFu::Inject
- CLASS PacketFu::InvalidHeader
- CLASS PacketFu::InvalidPacket
- CLASS PacketFu::Octets
- CLASS PacketFu::Packet
- CLASS PacketFu::PcapFile
- CLASS PacketFu::PcapHeader
- CLASS PacketFu::PcapPacket
- CLASS PacketFu::PcapPackets
- CLASS PacketFu::Read
- CLASS PacketFu::TCPHeader
- CLASS PacketFu::TCPPacket
- CLASS PacketFu::TcpEcn
- CLASS PacketFu::TcpFlags
- CLASS PacketFu::TcpHlen
- CLASS PacketFu::TcpOption
- CLASS PacketFu::TcpOptions
- CLASS PacketFu::TcpReserved
- CLASS PacketFu::Timestamp
- CLASS PacketFu::UDPHeader
- CLASS PacketFu::UDPPacket
- CLASS PacketFu::Utils
- CLASS PacketFu::Write
| VERSION | = | "1.1.0" |
Check the repo’s for version release histories |
||
Adds the class to PacketFu’s list of packet classes — used in packet parsing.
Source: show
# File lib/packetfu.rb, line 72 def self.add_packet_class(klass) raise "Need a class" unless klass.kind_of? Class if klass.name !~ /[A-Za-z0-9]Packet/ raise "Packet classes should be named 'ProtoPacket'" end @packet_classes ||= [] @packet_classes << klass @packet_classes.sort! {|x,y| x.name <=> y.name} end
Returns true if the version is equal to or greater than the compare version. If the current version of PacketFu is “0.3.1“ for example:
PacketFu.at_least? "0" # => true PacketFu.at_least? "0.2.9" # => true PacketFu.at_least? "0.3" # => true PacketFu.at_least? "1" # => true after 1.0's release PacketFu.at_least? "1.12" # => false PacketFu.at_least? "2" # => false
Source: show
# File lib/packetfu/version.rb, line 30 def self.at_least?(str) this_version = binarize_version(self.version) ask_version = binarize_version(str) this_version >= ask_version end
Returns a version string in a binary format for easy comparisons.
Source: show
# File lib/packetfu/version.rb, line 12 def self.binarize_version(str) if(str.respond_to?(:split) && str =~ /^[0-9]+(\.([0-9]+)(\.[0-9]+)?)?\..+$/) bin_major,bin_minor,bin_teeny = str.split(/\x2e/).map {|x| x.to_i} bin_version = (bin_major.to_i << 16) + (bin_minor.to_i << 8) + bin_teeny.to_i else raise ArgumentError, "Compare version malformed. Should be \x22x.y.z\x22" end end
Returns an array of classes defined in PacketFu
Source: show
# File lib/packetfu.rb, line 67 def self.classes constants.map { |const| const_get(const) if const_get(const).kind_of? Class}.compact end
Deal with Ruby’s encoding by ignoring it.
Source: show
# File lib/packetfu.rb, line 29 def self.force_binary(str) str.force_encoding "binary" if str.respond_to? :force_encoding end
The current inspect style. One of :hex, :dissect, or :default Note that :default means Ruby’s default, which is usually far too long to be useful.
Source: show
# File lib/packetfu.rb, line 104 def self.inspect_style @inspect_style ||= :dissect end
Setter for PacketFu’s @inspect_style
Source: show
# File lib/packetfu.rb, line 109 def self.inspect_style=(arg) @inspect_style = case arg when :hex, :pretty :hex when :dissect, :verbose :dissect when :default, :ugly :default else :dissect end end
Returns true if the current version is newer than the compare version.
Source: show
# File lib/packetfu/version.rb, line 45 def self.newer_than?(str) return false if str == self.version !self.older_than?(str) end
Returns true if the current version is older than the compare version.
Source: show
# File lib/packetfu/version.rb, line 37 def self.older_than?(str) return false if str == self.version this_version = binarize_version(self.version) ask_version = binarize_version(str) this_version < ask_version end
Returns an array of packet classes
Source: show
# File lib/packetfu.rb, line 91 def self.packet_classes @packet_classes || [] end
Returns an array of packet types by packet prefix.
Source: show
# File lib/packetfu.rb, line 96 def self.packet_prefixes return [] unless @packet_classes @packet_classes.map {|p| p.to_s.split("::").last.to_s.downcase.gsub(/packet$/,"")} end
Returns the status of pcaprub
Source: show
# File lib/packetfu.rb, line 62 def self.pcaprub_loaded? @pcaprub_loaded end
PacketFu works best with Pcaprub version 0.8-dev (at least) The current (Aug 01, 2010) pcaprub gem is 0.9, so should be fine.
Source: show
# File lib/packetfu.rb, line 41 def self.pcaprub_platform_require begin require 'pcaprub' rescue LoadError return false end @pcaprub_loaded = true end
Presumably, there may be a time where you’d like to remove a packet class.
Source: show
# File lib/packetfu.rb, line 83 def self.remove_packet_class(klass) raise "Need a class" unless klass.kind_of? Class @packet_classes ||= [] @packet_classes.delete klass @packet_classes end
Picks up all the protocols defined in the protos subdirectory
Source: show
# File lib/packetfu.rb, line 16 def self.require_protos(cwd) protos_dir = File.join(cwd, "packetfu", "protos") Dir.new(protos_dir).each do |fname| next unless fname[/\.rb$/] begin require File.join(protos_dir,fname) rescue warn "Warning: Could not load `#{fname}'. Skipping." end end end
Returns PacketFu::VERSION
Source: show
# File lib/packetfu/version.rb, line 7 def self.version VERSION end
Switches inspect styles in a round-robin fashion between :dissect, :default, and :hex
Source: show
# File lib/packetfu.rb, line 124 def toggle_inspect case @inspect_style when :hex, :pretty @inspect_style = :dissect when :dissect, :verbose @inspect_style = :default when :default, :ugly @inspect_style = :hex else @inspect_style = :dissect end end