Object
The Inject class handles injecting arrays of binary data on the wire.
To inject single packets, use PacketFu::Packet.to_w() instead.
# File lib/packetfu/inject.rb, line 10 def initialize(args={}) @array = [] # Where the packet array goes. @stream = [] # Where the stream goes. @iface = args[:iface] || ENV['IFACE'] || Pcap.lookupdev || "lo" @snaplen = args[:snaplen] || 0xffff @promisc = args[:promisc] || false # Sensible for some Intel wifi cards @timeout = args[:timeout] || 1 @show_live = nil end
Equivalent to array_to_wire
# File lib/packetfu/inject.rb, line 55 def a2w(args={}) array_to_wire(args) end
Takes an array, and injects them onto an interface. Note that complete packets (Ethernet headers on down) are expected.
:array || arr An array of binary data (usually packet.to_s style). :int || sleep Number of seconds to sleep between injections (in float format) :show_live || :live If true, puts data about what was injected to stdout.
inj = PacketFu::Inject.new inj.array_to_wire(:array => [pkt1, pkt2, pkt3], :sleep => 0.1)
# File lib/packetfu/inject.rb, line 37 def array_to_wire(args={}) pkt_array = args[:array] || args[:arr] || @array interval = args[:int] || args[:sleep] show_live = args[:show_live] || args[:live] || @show_live @stream = Pcap.open_live(@iface,@snaplen,@promisc,@timeout) pkt_count = 0 pkt_array.each do |pkt| @stream.inject(pkt) sleep interval if interval pkt_count +=1 puts "Sent Packet \##{pkt_count} (#{pkt.size})" if show_live end # Return # of packets sent, array size, and array total size [pkt_count, pkt_array.size, pkt_array.join.size] end
Equivalent to array_to_wire
# File lib/packetfu/inject.rb, line 60 def inject(args={}) array_to_wire(args) end
Generated with the Darkfish Rdoc Generator 2.