「tsharkによるBLEパケットのキャプチャ」でBLEパケットをtsharkを用いて解析しましたが、Raspberry Pi3にモニタを接続すれば、表示されたディスクトップ上でWiresharkが動作します。また、Scapyを使用したPythonプログラムにより、ARPのパケットをキャプチャします。ARP(Address Resolution Protocol)は、IPアドレスからEthernetのMACアドレスの情報を得られるプロトコルです。Wi-Fiパケットをモニタモードで監視する方法も少し調べたので記述します。
Wiresharkによるパケット解析
次の手順でWiresharkをインストールできます。
$ sudo apt-get install wireshark
wiresharkは、コンソール端末から次のコマンドで起動します。
$ sudo wireshark ** (wireshark:1836): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
次のようにWiresharkの実行画面が表示されます。
次のように、ディスクトップのメニューから起動すると、root権限を持たないのでエラーメッセージが表示されます。
次のようにWiresharkの起動時にエラーダイアログと共に画面が表示されます。
次のようなエーメッセージがWiresharkの起動時に表示されます。
The capture session could not be initiated on interface ‘wlan0’ (You don’t have permission to capture on that device). Please check to make sure you have sufficient permissions, and that you have the proper interface or pipe specified.
プログラムを用いたパケット解析
python言語でScapyを使用して、パケット解析を行います。Scapyは、強力なインタラクティブなパケット操作ツール、パケットジェネレータ、ネットワークスキャナ、ネットワーク検出ツール、およびパケットスニファです。それが対話的に、パケットを作成し、ネット上に送信する機能や、様々なパケットを解析するクラスを提供します。
もし、scapyがインストールされていなければ、次のコマンドでインストールします。
$ sudo apt-get install python-scapy
作成したプログラムを次に示します。
from scapy.all import sniff, ARP def arp_monitor_callback(pkt): if ARP in pkt and pkt[ARP].op in (1,2): return pkt.sprintf("%ARP.hwsrc% | %ARP.psrc%") print sniff(prn=arp_monitor_callback, filter="arp", store=0)
プログラムを実行すると、ARPのMACアドレスとIPアドレスが次のように表示されます。
$ sudo python dash.py c8:60:00:a3:ad:9a | 192.168.10.100 b8:27:eb:84:4a:ba | 192.168.10.50 b8:27:eb:84:4a:ba | 192.168.10.50 10:66:82:96:26:60 | 192.168.10.1 c8:60:00:a3:ad:9a | 192.168.10.100 b8:27:eb:84:4a:ba | 192.168.10.50 b8:27:eb:84:4a:ba | 192.168.10.50 10:66:82:96:26:60 | 192.168.10.1 c8:60:00:a3:ad:9a | 192.168.10.100 b8:27:eb:84:4a:ba | 192.168.10.50 b8:27:eb:84:4a:ba | 192.168.10.50 10:66:82:96:26:60 | 192.168.10.1 b8:27:eb:84:4a:ba | 192.168.10.50 c8:60:00:a3:ad:9a | 192.168.10.100 8:60:00:a3:ad:9a | 192.168.10.100 b8:27:eb:84:4a:ba | 192.168.10.50 b8:27:eb:84:4a:ba | 192.168.10.50 10:66:82:96:26:60 | 192.168.10.1
取得したMACアドレスは、「MACアドレス検索」を使えば、ベンダーが確認できます。例えば、取得したMACアドレス「b8:27:eb:84:4a:ba」を検索すると、次のように「Raspberry Pi Foundation」と表示されます。
モニタモード
Raspberry Pi3に標準についてくる無線LANとBluetoothのチップ「Broadcom BCM43143」についての情報は、次のコマンドで表示させます。
$ iwconfig lo no wireless extensions. wlan0 IEEE 802.11 ESSID:"xxxxx" Mode:Managed Frequency:2.437 GHz Access Point: xxxxx Bit Rate=65 Mb/s Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=38/70 Signal level=-72 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 eth0 no wireless extensions.
モニタモードへの変更を試みましたが、次のように、サポートしてないというエラーメッセージが表示されました。
$ sudo iwconfig wlan0 mode monitor Error for wireless request "Set Mode" (8B06) : SET failed on device wlan0 ; Operation not supported.
なお、USBのWi-FiアダプタのWLI-UC-AG300Nは、モニタモードで動作することがわかっています。