
Implémentez votre propre périphérique USB en Python, pris en charge par un périphérique matériel tel que Cynthion ou GreatFET
Ce dépôt héberge la prochaine génération du logiciel Facedancer. Descendant du Facedancer original basé sur GoodFET, ce dépôt fournit un module Python qui offre une prise en charge étendue de Facedancer -- incluant la prise en charge de plusieurs cartes et quelques nouvelles fonctionnalités assez significatives.
La documentation de Facedancer est disponible sur Read the Docs. Les sources brutes de la documentation se trouvent dans le dossier docs/.
Installez ce paquet avec la commande suivante :
pip install facedancer
Ensuite, vous pouvez importer le paquet facedancer comme d'habitude :
$ python
>>> import facedancer
Facedancer 3.0 est une réécriture complète du cœur d'émulation d'origine et ne prend pas en charge les scripts hérités.
Si vous utilisez des scripts ou du matériel de formation qui dépendent de fonctionnalités
ou d'API dépréciées dans v3.0.x, vous pouvez installer la dernière version
v2.9.x de Facedancer avec :
pip install "facedancer<=3"
Les applets et exemples hérités se trouvent dans la branche v2.9.x.
Les cartes Facedancer sont de simples dispositifs matériels qui agissent comme des contrôleurs USB « télécommandés ». Avec le logiciel approprié, vous pouvez utiliser ces cartes pour émuler rapidement et facilement des périphériques USB -- et pour fuzzer les contrôleurs hôtes USB !
Ce dépôt logiciel particulier vous permet actuellement de créer facilement des émulations de périphériques USB en Python. Le contrôle est suffisamment fin pour que vous puissiez provoquer toutes sortes de mauvais comportements USB. :)
Pour plus d'informations, voir :
Une nouvelle fonctionnalité majeure de la base de code Facedancer plus récente est la capacité de faire du MITM (Meddler-In-The-Middle) sur les connexions USB -- remplaçant l'un des projets originaux des auteurs, USBProxy. Cela ouvre tout un nouveau domaine d'applications -- incluant l'analyse de protocole et la manipulation en direct des paquets USB -- et est particulièrement utile lorsque vous ne contrôlez pas le logiciel s'exécutant sur le périphérique cible (par exemple sur des systèmes embarqués ou des consoles de jeux).
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
Cette fonctionnalité est complète, mais mériterait plus de documentation. Les pull requests sont les bienvenues. :)
Tout d'abord, vous voudrez probablement définir la variable d'environnement BACKEND, qui permet
au logiciel de savoir quel type de carte Facedancer vous souhaitez utiliser. Si cette variable
n'est pas définie, le logiciel essaiera de deviner pour vous en fonction de ce qui est connecté. Il ne
fait pas toujours les meilleures suppositions, donc vous avez probablement intérêt à la définir vous-même.
Ensuite, vous voudrez probablement consulter l'un des exemples, ou l'un des scripts prêts à l'emploi.
Les exemples dans la nouvelle syntaxe se trouvent sous examples. Les scripts Facedancer principaux dans la
« ancienne » syntaxe se trouvent dans legacy-applets.
Par exemple :
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)Notez que les restrictions matérielles empêchent les cartes MAX3420/MAX3421 d'émuler des périphériques plus complexes -- il y a une limitation sur le nombre/type de points de terminaison qui peuvent être configurés. Les cartes LPC4330 -- telles que le GreatFET -- ont moins de limitations.
Pour une raison similaire, les cartes MAX3420/MAX3421 (BACKEND=goodfet ou BACKEND=raspdancer)
ne peuvent actuellement pas être utilisées comme périphériques MITM USBProxy-nv. Toutes les cartes modernes (BACKEND=greatfet, BACKEND=hydradancer)
devraient être pleinement fonctionnelles.
Notez que les cartes HydraDancer et HydraUSB3 (BACKEND=hydradancer) ne prennent actuellement pas en charge le mode hôte.
Notez que le FaceDancer 3.0 actuel ne fonctionne pas sous Windows (quelques problèmes avec pyusb...) et uniquement sous GNU/Linux
La feuille de route est en cours d'élaboration, mais en plus de la prise en charge multi-cartes, ce dépôt accueillera à terme quelques nouvelles fonctionnalités intéressantes, notamment :
Il y a beaucoup de personnes à blâmer pour l'excellence de ce dépôt, notamment :
... sont toujours les bienvenues. Envoyez-nous une PR !