
Implementa il tuo dispositivo USB in Python, supportato da una periferica hardware come Cynthion o GreatFET
Questo repository ospita la prossima generazione del software Facedancer. Discendente dal Facedancer originale basato su GoodFET, questo repository fornisce un modulo python che offre un supporto Facedancer ampliato -- inclusi il supporto per più schede e alcune nuove funzionalità piuttosto significative.
La documentazione di Facedancer è disponibile su Read the Docs. Le fonti grezze della documentazione sono nella cartella docs/.
Installa questo pacchetto con il seguente comando:
pip install facedancer
Dopodiché puoi importare il pacchetto facedancer come al solito:
$ python
>>> import facedancer
Facedancer 3.0 è una riscrittura da zero del core di emulazione originale e non supporta gli script legacy.
Se stai usando script o materiali di formazione che dipendono da funzionalità
o API deprecate in v3.0.x puoi installare l'ultima release v2.9.x
di Facedancer con:
pip install "facedancer<=3"
Gli applet e gli esempi legacy si trovano nel branch v2.9.x.
Le schede Facedancer sono semplici dispositivi hardware che fungono da controller USB "telecomandati". Con il software appropriato, puoi usare queste schede per emulare rapidamente e facilmente dispositivi USB -- e per fare fuzzing dei controller host USB!
Questo particolare repository software attualmente ti consente di creare facilmente emulazioni di dispositivi USB in Python. Il controllo è sufficientemente granulare da permetterti di causare ogni tipo di comportamento anomalo USB. :)
Per maggiori informazioni, vedi:
Una delle principali novità del più recente codebase Facedancer è la capacità di fare MITM (Meddler-In-The-Middle) sulle connessioni USB -- sostituendo uno dei progetti originali di uno degli autori, USBProxy. Questo apre un intero nuovo regno di applicazioni -- inclusi l'analisi dei protocolli e la manipolazione in tempo reale dei pacchetti USB -- ed è particolarmente utile quando non controlli il software in esecuzione sul dispositivo target (ad esempio su sistemi embedded o console di gioco).
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
Questa funzionalità è completa, ma potrebbe servire più documentazione. Le pull request sono benvenute. :)
Per prima cosa, probabilmente vorrai impostare la variabile d'ambiente BACKEND, che permette
al software di sapere quale tipo di scheda Facedancer vorresti usare. Se questa variabile
non è impostata, il software proverà a indovinare per te in base a ciò che è connesso. Non
indovina sempre nel modo migliore, quindi probabilmente è meglio impostarla tu stesso.
Poi, probabilmente vorrai dare un'occhiata a uno degli esempi, o a uno degli script predefiniti.
Gli esempi nella nuova sintassi si trovano sotto examples. Gli script Facedancer principali nella
"sintassi vecchia" si trovano in legacy-applets.
Ad esempio:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)Nota che le restrizioni hardware impediscono alle schede MAX3420/MAX3421 di emulare dispositivi più complessi -- c'è una limitazione sul numero/tipo di endpoint che possono essere configurati. Le schede LPC4330 -- come il GreatFET -- hanno meno limitazioni.
Per una ragione simile, le schede MAX3420/MAX3421 (BACKEND=goodfet o BACKEND=raspdancer)
attualmente non possono essere usate come dispositivi MITM USBProxy-nv. Tutte le schede moderne (BACKEND=greatfet, BACKEND=hydradancer)
dovrebbero essere pienamente funzionanti.
Nota che le schede HydraDancer e HydraUSB3 (BACKEND=hydradancer) attualmente non supportano la modalità host.
Nota che l'attuale FaceDancer 3.0 non funziona su Windows (alcuni problemi in pyusb...) e solo su GNU/Linux
La roadmap è in fase di sviluppo, ma oltre al supporto multi-scheda, questo repository ospiterà eventualmente alcune nuove interessanti funzionalità, tra cui:
Ci sono molte persone da incolpare per la bellezza che è questo repo, tra cui:
... sono sempre benvenuti. Mandaci una PR!