
USBアクティビティをオンザフライで可視化する

[!NOTE] USBvalve バージョン 1.0.0
アプリケーションを全面的に書き直しました:
- Arduino IDE 環境から離れ、コードは Pi Pico SDK 向けに書かれています
- 外部ライブラリへの依存を大幅に削減しました
- Low Speed デバイス (ATTiny85、EvilCrow など) に対する USB ホストサポートがより堅牢になりました
- ハードウェアと機能はほぼ変わっていません。詳細は下記の注記を参照してください
きっとあなたも私と同じように、未知のデバイスに USB ドライブを挿すよう頼まれたことがあるでしょう...そして疑問が浮かびます:
私のかわいそうなドングルは、裏で何をされたのか? ファイルを盗まれた? 暗号化された? それとも ただ マルウェアをインストールされただけ? USBvalve を使えばこれを数秒で見抜けます: 超安価な既製品ハードウェアで構築されているので、あらゆる USB ファイルシステムアクティビティを素早くテストし、手遅れになる前に何が起きているのかを理解できます!
USBvalve を使えば、ドライブに何が起きたかを即座にフィードバックできます。デバイス上に構築された偽のファイルシステムがアクセス、読み取り、書き込みされたかどうかを画面に表示します:
またバージョン 0.8.0 以降では、USB ホストとして使用して BADUSB デバイスを検出することもできます:
これはシリアルポートで利用可能な BADUSB デバッガの例です:
動画の方がよければ、私の Insomni'hack プレゼンテーションもご覧ください
バージョン 0.15.0 以降、新しい Pi Pico Watch バージョンがサポートされています。新しいバージョンをコンパイルするには、コードの先頭にある #define PIWATCH 行のコメントを解除する必要があります。ハードウェアは RP2040 ベースの 1.28 インチ TFT ディスプレイ付き腕時計ボードです。詳細はこちらで確認できます。
これは Waveshare RP2040-LCD-1.28 とも完全に互換性があります。
docs: プロジェクトに関するドキュメント。すべての機能を確認できるプレゼンテーションも含まれます
firmware: Raspberry Pi Pico 用のビルド済みファームウェア。これらをそのまま使用してボードに書き込むことができます。32 行または 64 行 OLED 用、Pico 1 または Pico2 用、Pi Pico Watch 用など、いくつかの異なるバージョンがあります
PCB: カスタム PCB を印刷したい場合の Gerber ファイル。必須ではなく、独自のものを使用したりブレッドボード上に構築したりできます
src と data: ソース。ファームウェアを自分で変更してビルドしたい場合に使用します
utils: カスタム FS を構築する際に使用できるユーティリティ
pictures: このドキュメントで使用されている画像とリソース
STL: エンクロージャ用の STL ファイル。1.1 と 1.2 フォルダには完全なエンクロージャがあります (WhistleMaster に感謝)。フォルダ 1.2_64 と 1.2_64_simple には 128x64 スクリーン用のエンクロージャがあります (rtmq0227 に感謝)。LCD を保護するより軽量なものが必要な場合は USBvalve_sliding_cover.stl を使用できます。
自分でビルドしたい場合、必要なものは:
0.x.x バージョンでは、BOOTSEL はデバイスのリセットや HID イベント数の表示 (> 2 秒押す) に使用されていました。
BOOTSEL のポーリングが BADUSB 検出にいくつかの問題を引き起こしていたため、これはバージョン 1.0.0 から削除され、以下の 2 つのオプションに置き換えられました:
GP0 と GND の間にボタンをはんだ付けする (パッド 1 と 3、例は下の写真を参照) ことで同じ機能を持たせるr (リセット) と h (HID イベント) を使用する
PCB には、ボタンの取り付けを容易にするためにパッド 1 と 3 に穴が開けられたバージョン 1.3 のボードもあります。しかしご覧のとおり、古いバージョンも使用できます。
BADUSB 機能を使用しない場合、または検出範囲を狭めて BOOTSEL の使用を維持したい場合は、bootsel を有効にして作成したファームウェアも提供しています (フォルダとリリースを参照)。
Tz1rf のおかげで、2 つの素晴らしい動画もあります: 1 つはビルドプロセスをステップバイステップで説明し、もう 1 つはファームウェアのアップロードとツールの使用方法を示しています。
作業のほとんどはソフトウェアによってボード上で直接行われるため、出力用に OLED との接続を準備するだけで済みます。
ファームウェアのバージョン 0.8.0 以降、USBvalve は HID デバイスを検出できます (BADUSB の検出に使用)。これにはホストとして動作する追加の USB ポートが必要です。これに興味がない場合は、docs フォルダにある古い手順を使用して PCB バージョン 1.1 を使用できます。そうでなければ PCB バージョン 1.2 に進んでください (USB-A または USB-B 用のバージョンがあります。フォルダを参照)。
USBH エリアに USB メス ポートをはんだ付けします。これはバージョン A 用ですが、好みに応じて USB Micro-B 用のバージョンもあります一部の OLED は GND と VCC の PIN が入れ替わっているため、PCB は両方のバージョンと互換性があるように設計しました:
例えば、OLED の PIN1 に GND、PIN2 に VCC がある場合:
PCB の裏面にあるこれらの 2 つのパッドにはんだを盛る必要があります:
そうでない場合は逆にして、もう一方の PAD にはんだを盛ります:
ブレッドボードまたは単なる配線を使用する場合、OLED スクリーンとホスト USB ポートに適切な PIN を接続することだけを確認すればよいです。
マッピングは以下のとおりです:
DEBUG 機能を使用したい場合は、ボード下部の 3 つの SWD PIN にヘッダーを配置することもできます。
[!CAUTION] この PCB は経験豊富な電子工作愛好家向けです 扱える自信がない場合は使用しないでください!
[!NOTE] R7 と R8 は実際には何にも接続されていません。回路デバッグ目的で追加されています。 そのため BOM には表示されません
USBpipe はこのプロジェクト専用の PCB です。
必要なものはすべて ./PCB/USBpipe/ フォルダにあります。
ファームウェアを書き込むには、以下の手順に従ってください:
RPI-RP2 という名前の新しいドライブが表示されます (Linux 環境では手動でマウントする必要がある場合があります)uf2) をフォルダにコピーします完了です!