LoginSignup
9
7

More than 5 years have passed since last update.

PacketFuでARPリクエストのモニタリング

Posted at

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
  :

リンク

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7