PacketFu は Rubyのパケット操作ライブラリ.
インストール
PacketFuでパケットをモニタすうためにはlibpcapバインディングのpcaprubが必要.
$ gem install packetfu
$ gem install pcaprub
ARPリクエストのモニタリング
プログラム arpmon.rb
時刻,送信元MACアドレス,送信元IPアドレスを出力する.
arpmon.rb
#!/usr/bin/env ruby
require "packetfu"
include PacketFu
FILTER="arp and arp[7]==1"
dev = ARGV[0]
cap = Capture.new(:iface=>dev, :start=>true,
:filter=>FILTER)
cap.stream.each do |pkt|
next unless ARPPacket.can_parse?(pkt)
tstamp = sprintf("%.6f",Time.new.to_f)
arpreq = ARPPacket.parse(pkt)
src_mac = EthHeader.str2mac(arpreq.eth_src)
src_ip = arpreq.arp_src_ip_readable
puts "#{tstamp},#{src_mac},#{src_ip}"
end
実行
第一引数にインターフェース名を指定して実行する.
$ sudo ruby arpmon.rb eth0
1417784341.410458,aa:bb:cc:2f:e3:ac,192.168.0.12
1417784342.098809,aa:bb:cc:2f:e3:ac,192.168.0.12
1417784342.419416,aa:bb:cc:2f:e3:ac,192.168.0.12
:
リンク
- PacketFu: https://github.com/todb/packetfu
- PacketFu Document: http://packetfu.com/doc/frames.html
- pcaprub: https://github.com/pcaprub/pcaprub