10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

つくってあそぼう!Pwnagotchi!(ᵔ◡◡ᵔ)

Last updated at Posted at 2024-01-14

つい最近Pwnagotchiを作ってみよう!というもくもく会があり参加したのですが、一筋縄では動作せず…公式ドキュメントや公式GithubのIssue、Redditなど反復しまくってやっと形にできました。
この記事は、もっと気軽にPwnagotchiが出来上がることを願って 「(現時点で)これを読めば動作するものができる!」 という記事を目指して書いています:information_desk_person_tone2:

Pwnagotchiとは

Wifiの脆弱性を突いてそのパケット情報を収集する電子ペットです(ᵔ◡◡ᵔ)
収集した情報はあとで確認することもできます。
WiFiとBluetoothを搭載しているRaspberryPi Zero Wを材料にします。

Pwnagotchiの主な目的はWifi技術を楽しく学習することなので、DoS攻撃などはできないように制限されています

情報を取得しているときや接続できるWiFiを探しているときなど、表情がコロコロ変わって可愛いです。(画像は公式より引用)

必要なもの

本体

  • Raspberry Pi Zero W(H)
    • 最初からGPIOピンがついているWHのが便利です
  • 電子ペーパーディスプレイ
    • waveshare v4(←バージョン大事)
  • SDカード
    • 最低8GB
  • 電源
    • コンセントからもしくはモバイルバッテリー

繋ぐPC

  • Windows10
    • 最初はMacでやっていたんですがManualモードで繋ぐことができず途中でWindowsに変えました;;
  • 書き込みができるTypeBケーブル
    • 充電専用のものとお間違えなきよう…!

生み出す

1. 外観を組み立てる

先にガワを組み立てましょう。
Raspberry Pi Zero WHのGPIOピンを電子ペーパーディスプレイのピンヘッダに差し込むだけです。
ピンを折らないように注意して、最後までしっかり差しましょう。

2. SDカードにimageを書き込む

書き込むimageは↓です。
公式からダウンロードするimageだと、ディスプレイのバージョンの関係で画面描画されませんでした。

SDカードに書き込むために、↓のツールをダウンロードします。

balenaEtcherを立ち上げて、案内通りに書き込むimageと書き込み先のSDカードを指定して書き込みましょう。
書き込みには割と時間かかるので、のんびり待っていてください:tea:

3. configをいじる

Flashが済んだSDカードは一旦自動的に取り出されて認識されていない状態になるので、もう一度PCに差し込み直します。
認識されていることを確認したら、書き込んだSDカードのルートに config.toml を新規作成して、↓を書き込んで保存しておきます。

あらかじめ言語は日本語に設定しておきました。
(画面表示された時に日本語で文章書いてあるとテンション上がるため)

config.toml
main.name = "pwnagotchi" # 自分のPwnagotchiの名前
main.lang = "jp"
ui.font.name = "fonts-japanese-gothic"
ui.font.size_offset = 1

main.whitelist = [
  "EXAMPLE_NETWORK",
  "ANOTHER_EXAMPLE_NETWORK",
  "fo:od:ba:be:fo:od",
  "fo:od:ba"
]

main.plugins.grid.enabled = true
main.plugins.grid.report = true
main.plugins.grid.exclude = [
  "YourHomeNetworkHere"
]

ui.display.enabled = true
ui.display.type = "waveshare_3"
ui.fps = 1
ui.display.color = "black"

なお、この config.toml は初期起動後 /etc/pwnagotchi/config.toml に移動するので、変更や修正するにはssh接続が必要になります。

4. すべて合体させる

imageを書き込んだSDカードを、Raspberry Piに差し込んで、電源を入れてしばらく待ちます。
電源を入れたら緑色のLEDがつきます。
その数分後に電子ペーパーディスプレイが点滅してPwnagotchiが表示されたら…

おめでとうございます:tada: 元気なPwnagotchiです:tada:

初期作動時は鍵が生成されるので、↓の文章が表示されなくなるまで電源を抜いてはいけません。

Generating keys, do not turn off ...

ssh接続

PwnagotchiをdataポートからPCに繋ぎます。(画像は公式より引用)

必要なドライバをダウンロードして解凍しておきます。

デバイスマネージャーを開いて、 Ports (COM & LPT) より USB Serial Device (COM#) の一つを選んで右クリックし、
Update driversBrowse my computer for drivers から先ほど解凍したフォルダを参照してインストールします。

ドライバをインストールしたら、同じくデバイスマネージャーでそのドライバを右クリックし、IPアドレスなどを公式ドキュメント通りに設定します。

IP: 10.0.0.1
Netmask: 255.255.255.0
DNS (If Required): 8.8.8.8 (or whatever)

ターミナルよりssh接続ができるはずです。

$ ssh pi@10.0.0.2 # default password: raspberry
参考

https://github.com/evilsocket/pwnagotchi/issues/975#issuecomment-810069509

Pluginで拡張する

Pwnagotchiにデフォルトで入っているPluginは後述するWebUIでON/OFFもしくは config.toml でON/OFFができます。
それ以外のPluginのインストール方法は3つあります。

方法1. pwnagotchiコマンドでインストール可能なPluginを見つけてインストールする

# ssh接続した後
> sudo pwnagotchi plugins list
> sudo pwnagotchi plugins install インストールしたいPlugin
> sudo pwnagotchi plugins enabled インストールしたPlugin
> sudo pwnagotchi plugins edit インストールしたPlugin # Pluginのオプションを設定できます

方法2. FTPでPluginファイルをアップロードする

  1. /usr/local/share/pwnagotchi/installed-plugins/
  2. WebUI上のRebootを実行

方法3. Plugin Manegarを使う

  1. config.tomlmain.custom_plugin_repos にPluginのzipファイルを指定する
    config.toml
    # GtihubのDownload ZIPよりコピペする
    main.custom_plugin_repos = [
        "https://github.com/evilsocket/pwnagotchi-pluginscontrib/archive/master.zip",
        "https://github.com/Teraskull/pwnagotchi-community-plugins/archive/master.zip"
    ]
    
  2. 下記コマンドを順に実行
    > sudo pwnagotchi plugins update
    > sudo pwnagotchi plugins list
    > sudo pwnagotchi plugins install インストールするPlugin
    

Community Pluginsのインストールの仕方のドキュメントが公開されているので、そちらもご参照ください。

以下、私が入れているPluginです:robot:

  • auto-update.py
    • デフォルトでONになっている
  • logtail
    • WebUIでログが見れる
  • memtemp.py
    • メモリ使用量やCPU利用率が表示される
  • auto_backup.py
    • インターネットに接続している時にバックアップを作成する
  • exp.py
    • パケット情報を取得するごとに経験値( Exp )が増えていきレベルが上がる
    • 有志によるPlugin。Githubより取得した。

clock.pymemtemp.py と表示が重なってしまったので泣く泣くEnabledに:sob:

開発者向けのPlugin用Callbackも用意されているので、オリジナルPluginを開発するのも面白そうです。

WebUIに繋ぐ

WebUIからPluginのON/OFFができたり、すれ違い通信したときの友達を確認できたりします。
sshの時と同様に、dataポートからPCに繋ぎます。
下記に接続するとブラウザでPwnagotchiの画面が表示されます。

# WebUI
http://10.0.0.2:8080

# bettercap
http://pwnagotchi.local
# pwnagotchiはconfig.tomlのmain.nameを引っ張ってきているので、カスタムしている場合はそのmain.nameを当てはめる
# 参考:https://pwnagotchi.ai/usage/#bettercap-s-web-ui

Hack the Planet! (ᵔ◡◡ᵔ)

苦労して作ったので愛着がすごく、持ち歩いて情報食わせてます。
(電源は小さいモバイルバッテリーに繋いでいます)

もし「自分も飼ってるよ!」という方がいらっしゃったら、いつか通信してお友だちになりましょう:four_leaf_clover:

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?