
Implementieren Sie Ihr eigenes USB-Gerät in Python, unterstützt durch ein Hardware-Peripheriegerät wie Cynthion oder GreatFET
Dieses Repository beherbergt die nächste Generation der Facedancer-Software. Es stammt vom ursprünglichen GoodFET-basierten Facedancer ab und bietet ein Python-Modul mit erweiterter Facedancer-Unterstützung – einschließlich Unterstützung für mehrere Boards und einigen recht bedeutenden neuen Funktionen.
Die Dokumentation von Facedancer ist auf Read the Docs zu finden. Die Rohquellen der Dokumentation befinden sich im Ordner docs/.
Installiere dieses Paket mit dem folgenden Befehl:
pip install facedancer
Danach kannst du das facedancer-Paket wie gewohnt importieren:
$ python
>>> import facedancer
Facedancer 3.0 ist eine komplette Neuimplementierung des ursprünglichen Emulationskerns und unterstützt keine Legacy-Skripte.
Wenn du Skripte oder Schulungsmaterialien verwendest, die von in v3.0.x veralteten
Funktionen oder APIs abhängen, kannst du die neueste v2.9.x-Version von Facedancer
mit folgendem Befehl installieren:
pip install "facedancer<=3"
Legacy-Applets und Beispiele findest du im Branch v2.9.x.
Facedancer-Boards sind einfache Hardwaregeräte, die als „ferngesteuerte" USB-Controller fungieren. Mit der passenden Software kannst du diese Boards verwenden, um schnell und einfach USB-Geräte zu emulieren – und um USB-Host-Controller zu fuzzen!
Dieses spezielle Software-Repository ermöglicht es dir derzeit, auf einfache Weise Emulationen von USB-Geräten in Python zu erstellen. Die Steuerung ist fein genug granular, dass du alle möglichen USB-Fehlverhalten hervorrufen kannst. :)
Weitere Informationen findest du unter:
Eine wichtige neue Funktion der neueren Facedancer-Codebasis ist die Fähigkeit, USB-Verbindungen per MITM (Meddler-In-The-Middle) abzufangen – als Ersatz für eines der ursprünglichen USBProxy-Projekte der Autoren. Dies eröffnet eine ganz neue Welt von Anwendungen – einschließlich Protokollanalyse und Live-Manipulation von USB-Paketen – und ist besonders nützlich, wenn du die auf dem Zielgerät laufende Software nicht kontrollierst (z. B. bei eingebetteten Systemen oder Spielkonsolen).
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
Diese Funktion ist vollständig, könnte aber mehr Dokumentation vertragen. Pull Requests sind willkommen. :)
Zuerst solltest du wahrscheinlich die Umgebungsvariable BACKEND setzen, die der Software mitteilt, welchen Typ von Facedancer-Board du verwenden möchtest. Wenn diese Variable nicht gesetzt ist, versucht die Software, anhand der angeschlossenen Geräte eine Vermutung anzustellen. Sie trifft nicht immer die besten Vermutungen, daher ist es wahrscheinlich besser, sie selbst zu setzen.
Als Nächstes solltest du dir wahrscheinlich eines der Beispiele oder eines der vorgefertigten Skripte ansehen. Beispiele in der neuen Syntax befinden sich unter examples. Die Kern-Facedancer-Skripte in der „alten" Syntax befinden sich in legacy-applets.
Zum Beispiel:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)Beachte, dass Hardware-Einschränkungen die MAX3420/MAX3421-Boards daran hindern, komplexere Geräte zu emulieren – es gibt Einschränkungen hinsichtlich Anzahl und Typ der Endpunkte, die eingerichtet werden können. Die LPC4330-Boards – wie das GreatFET – haben weniger Einschränkungen.
Aus einem ähnlichen Grund können die MAX3420/MAX3421-Boards (BACKEND=goodfet oder BACKEND=raspdancer) derzeit nicht als USBProxy-nv-MITM-Geräte verwendet werden. Alle modernen Boards (BACKEND=greatfet, BACKEND=hydradancer) sollten voll funktionsfähig sein.
Beachte, dass die HydraDancer- und HydraUSB3-Boards (BACKEND=hydradancer) derzeit keinen Host-Modus unterstützen.
Beachte, dass das aktuelle FaceDancer 3.0 nicht unter Windows funktioniert (einige Probleme mit pyusb...) und nur unter GNU/Linux.
Die Roadmap befindet sich in Entwicklung, aber zusätzlich zur Multi-Board-Unterstützung wird dieses Repository schließlich auch einige coole neue Funktionen beherbergen, darunter:
Es gibt viele Leute, die für die Großartigkeit dieses Repos verantwortlich sind, darunter:
... sind immer willkommen. Schick uns einen PR!