先日部屋の整理をしていたら、いつ買ったのかも分からないRaspberry Zero 2 Wを見つけたので、何時ぞやのGigazineの記事で見かけたPwnagotchiを作ってみよう!
ということで作った記録
Pwnagochiとは
Wi-Fiの技術規格であるWPAとWPA2に存在する 「Wi-Fiパスワードを知らない第三者でも、4way-Handshakeを傍受してネットワークに侵入できる」 という脆弱性を用いてその情報を収集する電子ペット。
名前の由来は「勝つ」「打ち負かす」ことを意味するスラングで、CTFの1ジャンルとしてもおなじみ(?)の"Pwn"と、バンダイが世界に誇る伝説の電子ペット玩具"たまごっち"を合わせた造語とのこと
さらに深層強化学習(A2C)アルゴリズムを用いてWi-Fiを効率よく探索するような設計になっている
材料
最低限必要なもの
- Raspberry Pi Zero WH もしくは 2 WH
(Wもしくは2WはGPIOピンが別売りなので、GPIOピンと半田ごて、半田を別途用意) - 電子ペーパー
- Waveshare eInk 2.13 (V1 or V2) ← 公式サポート
ただし現在流通しているのはV3かV4。自分が買ったものはV4だったので、本記事ではV3かV4を用いるものとする - Inky pHAT
- PaPiRus eInk Screen
- DFRobot eInk Screen
- Waveshare eInk 2.13 (V1 or V2) ← 公式サポート
- Raspberry Pi Zero WH もしくは 2 WH
- あると良いもの
- Raspberry Pi Zero用ケース
- モバイルバッテリー
作成
- Pwnagotchi imageの書き込み
microSDカードにPwnagotchiのイメージを書き込む。ここでWaveshare eInk 2.13のV3かV4(写真のようなステッカーに書いてある)の場合、公式が提供しているイメージでは表示できない
そのため、https://github.com/DrSchottky/pwnagotchi/releases/download/v1.5.6-beta2/pwnagotchi-raspberrypi-os-lite-v1.5.6-beta2.zip をダウンロードして解凍し、中のimgファイルをbalenaEtcherやRufusなんかを使って書き込む
書き込みが完了したら、一度microSDカードを取り出しておく - config.tomlの作成
Pwnagotchiイメージを書き込んだmicroSDを再びPCに接続し、適当なテキストエディタ(Windows標準のメモ帳やVS Code、Notepad++など何でもOK)を立ち上げ
main.name = "自分のPwnagotchiの名前(何でもOK)" main.lang = "jp" main.whitelist = [ "自分の家のWi-FiのSSID" ] main.plugins.grid.enabled = true main.plugins.grid.report = true main.plugins.grid.exclude = [ "自分の家のWi-FiのSSID" ] ui.display.enabled = true ui.display.type = "waveshare_3" # Waveshare V3とV4共通。その他の電子ペーパーは公式を参照 ui.display.color = "black" ui.font.name = "fonts-japanese-gothic" ui.font.size_offset = 1
をコピペ(main.name、main.whitelist、main.plugins.grid.excludeは適宜書き換える)して、ファイル名を「config.toml」としてmicroSDのドライブ(=/boot)に保存する - 組み立てる
Raspberry Pi Zero WHのGPIOピンに電子ペーパーを接続する。ケースがある場合はケース込みで組み立て - 起動する
microSDをRaspberry Pi Zero WHに入れ、microUSBケーブルでモバイルバッテリーと接続する。Raspberry Pi Zero Wには2つのmicroUSBポートがあるため、モバイルバッテリーと接続するときは電源ポートに接続しよう
こんな画面が表示されれば成功!
最後に
今回ラズパイは家にあったものを使ったが、ラズパイを買ったとしても10,000円以内で、かつ複雑な作業なしにWi-Fi脆弱性情報収集ツールを自作できるので、ちょっとした暇つぶしにはもってこいだし、Wi-Fiの勉強にもなるのでかなりおススメだと思います
bluetooth経由でスマホと接続して解析できたり、Pwnagotchi同士ですれ違い通信のようなこともできるらしいので、今後いろいろ試していこうかなと