オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

Mac OS X Lion で無線LANのモニタ モード

»

無線LANのドライバによっては、モニタ モードというものをサポートしている場合があります。

通常、LinuxのPF_PACKETや、*BSDのbpfをつかったパケットキャプチャでは、
MACフレームまではキャプチャできますが、対象が無線LANデバイスであっても、無線LAN特有の信号や、電界強度などは取得することができません。

ドライバがモニタ モードをサポートしていればそのような情報も取得できます。

Linuxでは、
# iwconfig wlan0 mode monitor
とすれば、簡単にモニタモードにできるのですが、Mac OS X では標準のコマンドが見当たらなかったので、
コードを書く必要があります。

と言っても、 ioctl()で、 BIOCSDLT というフラグに DLT_IEEE802_11 という値を食わせるだけでとても簡単です。


int dlt=DLT_IEEE802_11;
if(ioctl(fd,BIOCSDLT,&dlt)==-1){
perror("make_recv_dev_sub:ioctl:BIOCSDLT");
close(fd);
return(-1);
}

実行すれば、無線LANのアイコンが目玉に変わります。

20120521_94048

Comment(4)