
CynthionやGreatFETなどのハードウェアペリフェラルを使用して、Pythonで独自のUSBデバイスを実装する
このリポジトリには、次世代のFacedancerソフトウェアが収められています。オリジナルのGoodFETベースのFacedancerから派生したこのリポジトリは、拡張されたFacedancerサポートを提供するPythonモジュールを提供します -- 複数のボードのサポートや、いくつかの非常に重要な新機能を含みます。
FacedancerのドキュメントはRead the Docsにまとめられています。生のドキュメントソースはdocs/フォルダにあります。
このパッケージは次のコマンドでインストールします:
pip install facedancer
その後は通常どおりfacedancerパッケージをインポートできます:
$ python
>>> import facedancer
Facedancer 3.0はオリジナルのエミュレーションコアを根本から書き直したものであり、 レガシースクリプトはサポートしていません。
v3.0.xで非推奨となった機能やAPIに依存するスクリプトやトレーニング資料を使用している場合は、
次のコマンドでFacedancerの最新のv2.9.xリリースをインストールできます:
pip install "facedancer<=3"
レガシーアプレットとサンプルはv2.9.x
ブランチにあります。
Facedancerボードは、「リモートコントロールされた」USBコントローラとして動作するシンプルなハードウェアデバイスです。適切なソフトウェアを使えば、これらのボードを使用してUSBデバイスを迅速かつ簡単にエミュレートできます -- そしてUSBホストコントローラをファジングすることもできます!
この特定のソフトウェアリポジトリでは、現在PythonでUSBデバイスのエミュレーションを簡単に作成できます。制御はきめ細かく、あらゆる種類のUSBの誤動作を引き起こすことができます。:)
詳細については、以下を参照してください:
新しいFacedancerコードベースの主要な新機能は、USB接続をMITM(Meddler-In-The-Middle)する機能です -- これは著者の一人によるオリジナルのUSBProxyプロジェクトを置き換えるものです。これにより、プロトコル解析やUSBパケットのライブ操作など、まったく新しい応用分野が開かれます -- そして、ターゲットデバイス上で動作するソフトウェアを制御できない場合(例えば組み込みシステムやゲーム機など)に特に有用です。
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
この機能は完成していますが、ドキュメントをもっと充実させたいところです。プルリクエストを歓迎します。:)
まず、BACKEND環境変数を設定したいと思うでしょう。これはソフトウェアにどのタイプのFacedancerボードを使いたいかを知らせるものです。この変数が設定されていない場合、ソフトウェアは接続されているものに基づいて推測を試みます。必ずしも最良の推測をするとは限らないので、自分で設定した方がよいでしょう。
次に、おそらくサンプルや既成のスクリプトのいずれかをチェックしたいと思うでしょう。新しい構文のサンプルはexamples以下にあります。「古い」構文のコアFacedancerスクリプトはlegacy-appletsにあります。
例えば:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)ハードウェアの制約により、MAX3420/MAX3421ボードはより複雑なデバイスをエミュレートできないことに注意してください -- 設定できるエンドポイントの数や種類に制限があります。GreatFETなどのLPC4330ボードには、より少ない制限があります。
同様の理由で、MAX3420/MAX3421ボード(BACKEND=goodfetまたはBACKEND=raspdancer)は現在、USBProxy-nv MITMデバイスとして使用できません。すべてのモダンボード(BACKEND=greatfet、BACKEND=hydradancer)は完全に機能するはずです。
HydraDancerおよびHydraUSB3ボード(BACKEND=hydradancer)は現在ホストモードをサポートしていないことに注意してください。
また、実際のFaceDancer 3.0はWindowsでは動作せず(pyusbにいくつかの問題があります...)、GNU/Linuxのみで動作します。
ロードマップは策定中ですが、マルチボードサポートに加えて、このリポジトリは最終的にいくつかのクールな新機能の拠点となる予定です。例えば:
この素晴らしいリポジトリに対して責めるべき人はたくさんいます。例えば:
... はいつでも歓迎します。PRをお送りください!