Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
USBvalve — Expose USB activity on the fly | Kitploit
ツール/GitHubGitHub/cecio/usbvalve
Embedded Systems SecurityDynamic Analysis (Sandboxing)ForensicsMalware AnalysisHardware Security
GitHubcecio/usbvalve

USBvalve

Expose USB activity on the fly

リポジトリを見る
1.3k434ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ロゴ、横長、ダークテキスト、透明背景

[!NOTE] USBvalve バージョン 1.0.0

アプリケーションの完全な書き換えが行われました:

  • Arduino IDE 環境から移行し、コードは Pi Pico SDK 向けに記述されました
  • 外部ライブラリへの依存が大幅に削減されました
  • Low Speed デバイス向け USB ホストサポートがより堅牢になりました (ATTiny85、EvilCrow など)
  • ハードウェアと機能はほぼ変更ありません。詳細は下記の notes を参照してください

USB アクティビティをその場で可視化

2つのモデル ウォッチ 1.2

きっと、私と同じように、あなたも 未知の デバイスに USB ドライブを挿入するよう求められたことがあるでしょう。そして、そんな疑問が浮かびます:

舞台裏で、私の愛しいドングルに何が起きたのか? ファイルを盗まれているのか? 暗号化されているのか? それとも 単に マルウェアを仕込まれているのか? USBvalve を使えば、これを数秒で見抜けます。超安価な既製品ハードウェアをベースに、あらゆる USB ファイルシステムアクティビティをすばやくテストし、手遅れになる前に何が起きているかを理解できます。

USBvalve を使えば、ドライブに何が起きているかを即座にフィードバックできます。画面上で、デバイス上に構築された 偽の ファイルシステムがアクセス、読み取り、または書き込みされたかどうかを確認できます:

セルフテスト Readme

また、バージョン 0.8.0 以降では、USB ホストとして使用して BADUSB デバイスを検出することもできます:

HID

これはシリアルポートで利用できる BADUSB デバッガの例です:

動画の方がお好みなら、私の Insomni'hack プレゼンテーション もご覧いただけます。

USBvalve Watch

バージョン 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 をお使いください。

USBvalve のビルド

部品リスト

自分で作る場合は、次のものが必要です:

  • Raspberry Pi Pico 1 または 2 (または他の RP2040 ベースのボード)
  • I2C OLED スクリーン 128x64 または 128x32 (SSD1306)
  • (任意) USBvalve PCB またはブレッドボード
  • (任意) スクリーンとボードを絶縁するための 3D プリントスペーサー (https://www.thingiverse.com/thing:4748043)。代わりに絶縁テープを使っても構いません

BOOTSEL とバージョン >= 1.0.0 に関する注意事項

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 本あります: ビルド プロセスをステップバイステップで解説した動画と、ファームウェアのアップロード とツールの使用方法を示した動画です。

ほとんどすべての処理はソフトウェアによってボード上で直接行われるため、出力用の OLED との接続を用意するだけです。

ファームウェアのバージョン 0.8.0 以降、USBvalve は HID デバイスを検出できます (BADUSB の検出に使用)。これには、ホストとして動作する追加の USB ポートが必要です。この機能が不要な場合は、docs フォルダ 内の古い手順を使用し、PCB バージョン 1.1 を使用できます。それ以外の場合は、PCB バージョン 1.2 に進んでください (USB-A または USB-B 用のバージョンがあります。フォルダを参照してください)。

USBvalve PCB を使用する場合

  • USBH エリアに USB メスコネクタをはんだ付けします。これはバージョン A 用ですが、お好みで USB Micro-B 用のバージョンもあります
  • 前面のシルクスクリーンに Raspberry Pi Pico を配置します
  • すべての PIN をはんだ付けする必要はありません。次のものだけです:
    • D4 と D5 (左側)
    • D14 と D15 (左側)
    • GND (右側、上から 3 番目のピン)
    • GND (右側、下から 3 番目のピン)
    • 3v3_OUT (右側)
    • VBUS (右側)
    • 下部の 3 つの DEBUG ピン: SWCLK、GND、SWDIO
  • Raspberry に触れる可能性のある OLED の部分に 3D プリントスペーサーまたはテープを配置します
  • OLED (ピンヘッダ付き) を 4 PIN スペースにはんだ付けします

一部の OLED では GND と VCC の PIN が入れ替わっているため、両方のバージョンに対応できるように PCB を設計しました:

たとえば、お使いの OLED が次のように PIN1 に GND、PIN2 に VCC の場合:

PCB の裏面にある次の 2 つのパッドにはんだの玉を置く必要があります:

それ以外の場合は逆で、もう一方の PAD にはんだを置く必要があります:

USBvalve PCB を使用しない場合

Pico Pi

ブレッドボードや配線のみを使用する場合、OLED スクリーンとホスト USB ポートに正しい PIN が接続されていることを確認するだけです。

対応は次のとおりです:

  • Pi の PIN6 --> OLED SDA
  • Pi の PIN7 --> OLED SCL
  • Pi の PIN19 --> USB ホストの D+
  • Pi の PIN20 --> USB ホストの D-
  • Pi の PIN23 (GND) --> USB ホストの GND
  • Pi の PIN38 (GND) --> OLED GND
  • Pi の PIN36 (3V3OUT) --> OLED VCC
  • Pi の PIN40 (VBUS) --> USB ホストの VCC

DEBUG 機能を使用したい場合は、ボード下部の 3 つの SWD PIN にヘッダを取り付けることもできます。

USBpipe PCB を使用する場合

[!CAUTION] この PCB は経験豊富な電子工作製作者向けです 扱う自信がない場合は使用しないでください!

[!NOTE] R7 と R8 は実際には何にも接続されていません。これらは回路デバッグ用に追加されています。 そのため BOM には記載されていません

USBpipe PCB USBpipe

USBpipe はこのプロジェクト専用の PCB です。

必要なものはすべて ./PCB/USBpipe/ フォルダにあります。

前面 背面

ファームウェアの書き込み

ファームウェアを書き込むには、次の手順に従ってください:

  • BOOTSEL ボタン (ボード上の大きな白いボタン) を押したまま、USB ケーブルで Raspberry Pi Pico を接続します
  • ボタンを離します
  • システムに RPI-RP2 という名前の新しいドライブが表示されます (Linux 環境では手動でマウントする必要がある場合があります)
  • 使用した OLED に応じて、適切なファームウェアファイル (拡張子 uf2) をフォルダにコピーします
  • マウントされたフォルダが消えるまで数秒待ちます

完了です!

検出回避

そういうことが実際にあるかどうかはわかりませんが、USBvalve を認識する マルウェアによる検出を避けるために、ファームウェアをカスタマイズしたいと思うかもしれません :-)

変更したいと思うであろう変数のほとんどを usb_config.h のこのセクションにまとめました (再ビルドについては下の Dockerfile を参照)

root@kitploit:~
// USB anti-detection settings
//
// Set USB IDs strings and numbers, to avoid possible detections.
// Remember that you can cusotmize FAKE_DISK_BLOCK_NUM as well
// for the same reason. Also DISK_LABEL in ramdisk.h can be changed.
//
// You can see here for inspiration: https://the-sz.com/products/usbid/
//
// Example:
//             0x0951 0x16D5    VENDORID_STR: Kingston   PRODUCTID_STR: DataTraveler
//
#define USB_VENDORID       0x0951
#define USB_PRODUCTID      0x16D5
#define USB_DESCRIPTOR     "DataTraveler"
#define USB_MANUF          "Kingston"
#define USB_SERIAL         "123456789A"
#define USB_VENDORID_STR   "Kingston"        // Up to 8 chars
#define USB_PRODUCTID_STR  "DataTraveler"    // Up to 16 chars
#define USB_VERSION_STR    "1.0"             // Up to 4 chars

ファームウェアのビルド

もちろん、独自のファームウェアをビルドすることもできます。ビルドには Raspberry Pi Pico SDK とこのリポジトリが必要です。

基本的な再コンパイル手順:

root@kitploit:~
export PICO_SDK_PATH=</path/to/pico-sdk>

git clone --recursive https://github.com/cecio/USBvalve.git
cd USBvalve
mkdir build && cd build
cmake -DPICO_BOARD=pico ..   # or pico2 for standard build
make -j$(nproc)
# Output: build/src/USBvalve.uf2

新しい偽のファイルシステムを作成したい場合は、utils フォルダを見てください。新しいファイルシステムを構築するためのユーティリティをいくつか置いています。

Dockerfile

独自のファームウェアをビルドしたい場合、カスタマイズ後、完全なビルド環境を構築してファームウェアをコンパイルする Dockerfile を提供しています。

ビルドするには、メインの USBvalve フォルダで次のコマンドを実行します:

root@kitploit:~
# To Build:
#       docker build -t usbvalve-sdk -f Dockerfile.sdk .
#
# To Run (default: pico, SSD1306 OLED 128x32):
#       docker run --rm -v $PWD:/mnt usbvalve-sdk
#
# Options (via environment variables):
#       BOARD=pico|pico2          Board target (default: pico)
#       OLED_HEIGHT=32|64         OLED display height (default: 32)
#       PIWATCH=1                 Use GC9A01 round TFT instead of SSD1306
#       USE_BOOTSEL=1             Enable BOOTSEL button (disrupts Low Speed USB)
#
# Examples:
#       docker run --rm -e BOARD=pico2 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e PIWATCH=1 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e BOARD=pico2 -e OLED_HEIGHT=64 -v $PWD:/mnt usbvalve-sdk

ファームウェアは USBvalve_out フォルダに拡張子 uf2 で配置されます。

貢献

アイデアや改善案があれば、ぜひ Issue を開いて一緒にプロジェクトを改善しましょう! ありがとうございます!

サポート

質問やサポートが必要な場合は、ここで Issue を開くか、Twitter/X の @red5heep までご連絡ください。

コミュニティバージョン

コミュニティは、他のボードのサポートやその他の変更を実装したフォークをいくつか作成しました。USBvalve の開発に貢献してくれたすべての人に感謝します。 以下は非公式・不完全・サポート対象外のリストです:

  • USBvalve-tbfa-Mod

安全上の警告

[!WARNING] USBvalve と USB キラーデバイス について多くの質問を受け取ってきました。USBvalve はこれらのデバイスをテストするためのものではなく、いかなる絶縁や保護も備えていません。これらのデバイスの 1 つを扱っている疑いがある場合は、USBvalve ではなく他のものでテストしてください。デバイス、自分自身、または周囲の物を損傷する可能性があります。

ツールをダウンロード