suzuzusu日記

(´・ω・`)

ARP tableを監視して部屋にいるか簡易通知する方法

行きたい先に目的の人がいるかどうか簡易的に知るにはどうすべきか考えたときに同じサブネットにラップトップやスマートフォンを接続しているならARP tableのMACアドレスを見て簡易的に判断できると思ったのでやってみる

  1. 事前にMACアドレスを教えてもらう
  2. pingをサブネット内の全IPに送ってARP tableを更新する
  3. ARP tableを見てMACアドレスがあれば部屋にいると判断する

以下そのスクリプト(PowerShell)

$mac_address_target="xx-xx-xx-xx-xx-xx"

while($TRUE){
    foreach ($i in @(2..254)){
        Start-Process -WindowStyle hidden -FilePath ping -ArgumentList (" -n 1 xxx.xxx.xxx." + $i.ToString())
    }
    sleep 5

    $arp_data = -split ( arp -a | Select-String $mac_address_target )

    if($arp_data.Length -gt 1){
        echo "join"
        # 通知(ex slack, etc...)
        break
    }
    
    sleep 300

}

正直pingをブロードキャストアドレスに飛ばしてなぜ返ってこないのか分からない