Go Down

Topic: USB Sniffer (Read 704 times) previous topic - next topic

MichCan

Bonjour à tous les arduinistes !
J'ai un projet assez ambitieux basé sur la retroingénierie du protocol USB.
J'aimerai pouvoir utiliser l'arduino ou tout autre microcontrolleur pour sniffer l'USB d'un periph ( imprimante,scanner,appareil photo ...).
schéma: Ordi(avec driver)<->Microcontrolleur(transparant)<->Périphérique(imprimante...)
Je ne veux pas que le microcontrolleur soit le host, je veux pouvoir capturer le flux qui passe et éventuellement injecter (surtout du data).
J'ai trouvé tout un tas de doc à potasser mais si quelqu'un a des pistes à me proposer avant que je fonce droit dans le mur, je suis preneur.
Voila ce que j'ai trouvé en therme de doc :
http://makezine.com/2010/11/30/usbhacking/
http://www.beyondlogic.org/usbnutshell/usb1.shtml
http://www.maximintegrated.com/datasheet/index.mvp/id/3639

A priori il faut que je passe par la puce MAX3421E. Si quelqu'un à déjà dompter cette puce, donner moi vos tuyaux.

Le but de tout ca c'est de s'aproprier le protocol par la pratique, analyse des paquets puis transformation pour le fun ou pour un coté pratique des paquets.
Je suis tout ouï,
a bientôt

skywodd

Bonjour,

Faire un sniffer passif (qui écoute uniquement) c'est faire (en gros) un analyseur logique à trés haut débit (+ logiciel PC de décodage des trames)...
Avec une carte arduino c'est même pas la peine d'y penser, il te faut un boitier d'acquisition dédié.

Faire un sniffer actif (qui fait un relai usb) c'est faire un usb device et un usb host sur deux "bouts" séparés.
Avec un cpu suffisamment puissant ayant de base un chipset usb device et un chipset usb host c'est envisageable (mais compliqué).

Avec une carte arduino et un chipset MAX3421E c'est même pas la peine, tu va perdre ton temps.
(sauf si tu connais par cœur le datasheet du MAX3421 et que tu utilises un microcontrôleur avec un port usb natif, que tu maitrise parfaitement en bas niveau)

Si ce genre d'outils hardware était si simple à réaliser tu n'aurais pas des Beagle USB à +580€ ...
(http://www.lextronic.fr/P1783-analyseur-de-protocole-beagle-usb-12.html)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

MichCan

Merci pour ta réponse !
J'ai gratté entre temps à droite et à gauche aussi.
J'ai vraiment envie de pouvoir sampler, triturer analyser de l'USB brut. Cette démarche à vraiment un but pédagogique dans la ligné des fablab et hackerlab; oui on peu prendre le controle du soft et du hardware que ce soit de manière créative ou pratique, ou iessayon de sortir du modèle de consomation basique.
Pour 300e je me suis monter un PC sur lequel je peu faire du son, voir du film en HD... et on me dis que je peu pas triturer un protocol sensé etre "universel" ?
Je veux pas partir dans une théorie du complot mais mon petit doigt me dis que certains industriels n'aimerai pas que des gens de l'open source (qui sont souvent très malin) puissent triturer leur protocol peinar et développer des drivers farfelu sur leurs pérph.
Je souhaiterai avoir un aproche pratique de la chose (le glitch ne me fait pas peur).
Par exemple je lance une impression sur l'imprimante, je sample quelques secondes du flux USB et je renvoi en boucle et, je vois ce qu'il se passe.

j'ai tapé sur google (pas pour lui faire mal) "open source usb sniffer" et je suis tombé sur un projet kickstarter
http://www.kickstarter.com/projects/bushing/openvizsla-open-source-usb-protocol-analyzer
qui malheureusement à l'air de trainer un peu de la pate mais qui semble correspondre à ce que je cherche.

J'ai aussi utilisé http://vusb-analyzer.sourceforge.net/ pour analyser un log usbmon, ca marche. Peut être que je peu arrivé à mes fins avec un PC ?
J'ai samplé quelques flux, maintenant puis je en réinjecter ?

Je suis curieu d'avoir vos retours autant politiques que techniques.
A bientôt !!

skywodd

Le côté commercial n'as pas grand chose à voir la dedans ... il joue mais pas à grande mesure.

Pour preuve :
- Le proto usb est largement documenté, exemple : http://www.beyondlogic.org/usbnutshell/usb1.shtml
- Tu peut faire tes propres drivers si tu veut, voir WDK de microsoft, API du noyau de Linux, ...ou libusb tout simplement.
- Tu peut faire ton propre hardware usb si tu veut, voir LUFA, VUSB, ... (/!\ l'attribution d'un PID/VID pour une utilisation commercial est payant)

Par contre l'usb niveau hardware c'est pas juste deux fils séries à 115200 bauds. C'est plusieurs MHz.
Et pour sampler des signaux à plusieurs MHz faut du hardware dédié, tout simplement.
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

skywodd

Re,

Voila de quoi ajouter de l'eau à ton moulin ;)

C'est du tout frais :
http://hackaday.com/2013/07/02/usb-sniffing-with-the-beagleboard-xm/
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up