以前のコードで用いられていたライブラリ がdeprecatedとなってしまったので、新しいライブラリを用いるようにしています。
また、readmeにおいても、一部を2022年の新しい情報にアップデートし、その箇所を(追記)で表記しています。
通信パケットを可視化するLANケーブル
イルミパケットは、通信パケットの種類と方向に合わせて、まるでパケットが流れたかのようにケーブルが光ります。
ARPのパケットはオレンジ色、DHCPのパケットは水色のように光ります。
通常のパケット解析に使われるツールはリアルタイムで目で追うことが難しいのに対し、これはパソコンを操作しながらパケットを観察できるので、「どういう操作」をした時に「どういうパケット」が発生するのかを体感することができます。
例えば、ウェブサイトにアクセスした時は、緑(DNS)と青(TCP)の光が複数個流れます。
材料 | 量 | 諸注意 |
---|---|---|
LEDテープ(WS281B) | 1m | 個別アドレス可能・フルカラーのもの.144LEDs/m 推奨. |
Raspberry Pi | 1台 | 動作確認: Raspberry Pi 2, 3, 4 |
LANケーブル | 1m | |
ジャンパ線 オス-メス | 3本 | |
結束バンド | 4本 |
そのほかに,キーボード,ディスプレイ,HDMIケーブル,ルータ等はご用意ください.
動作には以下の環境が必要です.
- golang
- libpcap
- SCons
- rpi_ws281x
- illumi-packet
実行するプログラムはgo言語で記述されています.
https://golang.org/doc/install#install に従ってインストールします.
以下のようにターミナルで実行し,最後にバージョンが表示されることを確認してください.
$ version=1.13.4
$ wget https://storage.googleapis.com/golang/go${version}.linux-armv6l.tar.gz
$ sudo tar -C /usr/local -xzf go${version}.linux-armv6l.tar.gz
$ echo "export PATH=\$PATH:/usr/local/go/bin" >> ~/.profile
$ . ~/.profile
$ go version
go version go1.13.4 linux/arm
(追記)
更新したライブラリで現在利用しているgoのバージョンは go version go1.17.6 linux/arm です。
(追記ここまで)
プログラムからパケットキャプチャを行うためにlibpcapをインストールします.
$ sudo apt-get install libpcap-dev
rpi_ws281xをビルドするためにSConsをインストールします.
$ sudo apt-get install scons
LEDテープはrpi_ws281xというライブラリで操作します.
https://github.com/jgarff/rpi_ws281x に従ってインストールします.
$ git clone https://github.com/jgarff/rpi_ws281x.git
$ cd rpi_ws281x
$ scons
$ sudo cp -ai ./ws2811.h ./rpihw.h ./pwm.h /usr/local/include/
$ sudo cp -ai ./libws2811.a /usr/local/lib/
(追記)
ビルドがうまくいかず、何度も行う場合は-ai
のオプションを-af
にしておくと、いちいち確認が出ずに強制的に上書きしてくれます。
ビルド完了したディレクトリで
$ sudo ./test
を実行
虹色にぎらぎら動いたらビルド成功です!
(追記ここまで)
このリポジトリのソースコードを適当なディレクトリにダウンロードします.
$ git clone https://github.com/souring001/illumi-packet.git
$ cd illumi-packet
(追記)
現在ご覧のこのリポジトリは
$ git clone https://github.com/yuukami256/illumi-packet.git
$ cd illumi-packet
で取得できます。
とりあえず $ go build illumi-packet.go
を実行してみて、〜が足りませんみたいなお知らせが出た場合は
$ go mod download github.com/rpi-ws281x/rpi-ws281x-go
などを実行して必要なものをインストールしてください。
(追記ここまで)
LEDの個数によってillumi-packet.go
の以下の変数を適宜変更してください.
LEDの個数 | count | speed | series |
---|---|---|---|
60 個/m | 60 | 1 | 6 |
144 個/m | 144 | 4 | 12 |
144 個/m (50cm) | 72 | 1 | 12 |
- LANケーブルにLEDテープを乗せて,結束バンドで固定する.
- ジャンパワイヤ(オス側)を挿し込む
- メス側を Raspberry Pi のGPIOの2(5V), 6(GND), 12(信号) に挿し込む
- Raspberry Piとルータに接続する
ソースコードを変更するたびにビルドをする必要があります.
$ go build illumi-packet.go
(追記) うまくいかない場合はsudoをつけるとうまくいくこともあるようです。
$ sudo go build illumi-packet.go
を実行して実行ファイルが完成します。
(追記ここまで)
$ sudo ./illumi-packet
Ctrl+Cで終了します.
オプション | 内容 |
---|---|
-h | オプションの説明 |
-debug | パケット情報等の詳細を出力する(デフォルトはtrue ) |
-device [string] | ネットワークインターフェースを設定(デフォルトはeth0 ) |
-speed [int] | パケットの流れる速度を設定(デフォルトは1 ) |
-narp | ARPを表示しない |
-ntcp | TCPを表示しない |
-nudp | UDPを表示しない |
-reset | 点灯中のLEDの表示を消す |
-ipaddr | IPアドレスをLEDに表示する |
TCP, UDPのパケットを表示しない.
$ sudo ./illumi-packet -nudp -ntcp
パケット情報等の詳細を出力しない.
$ sudo ./illumi-packet -debug=false
Wi-Fiの通信を可視化する.
$ sudo ./illumi-packet -device wlan0
IPアドレスをLEDに表示する.
$ sudo ./illumi-packet -ipaddr
LEDの表示を消す.
$ sudo ./illumi-packet -reset
本家様のREADME をご参照ください。