USB hack

ciao rieccomi con una domandina; vorrei fare l'hack "man in the middle" con l'USB se io prendo una prolunga USB (maschio/femmina), la taglio a metà, collego i 2 cavi dati (gli altri due credo siano i +5v e GND) che contiene con input/output (analogici o digitali?!?! e qual'è input e quale output?) arduino, poi il resto lo colleggo ad altri due input/output arduino... insomma avrei USB PC -> in1 out1 -> arduino -> in2 out2 -> qualsiasi cosa USB

a questo punto con un programma dico ad arduino che tutti ciò che arriva in in1 lo ritrasmetta uguale identico ad out2, e ciò che arriva da in2 lo ritrasmetta ad out1. infine tutti gli input vengano anche inviati via seriale all'IDE, secondo voi dai dati che arrivano in IDE posso riuscire a decriptare qualcosa? L'idea è di sniffare un internet key, come si collega, e attraverso qualche socket preprogrammato sul pc vedere come si inviano e ricevono dati TCP e UDP, in modo poi da collegare arduino solo con la internet key e viaggiare su internet... secondo voi è fattibile? ci avete mai provato? arduino è abbastanza veloce per cogliere la comunicazione USB? help!

molto complicata la cosa e per cio che vuoi fare perobabilmente bastano dei software

mi sà che quello che vuoi fare è moooolto difficile, nell'attacco mitm una cheda ethernet clona il mac di un'altra e quindi risponde per esempio alle richieste arp al posto suo, ecc...(2 dispositivi che parlano la stessa lingua=ethernet) problema: arduino dovrebbe parlare la stessa lingua del protocollo che sniffa (in questo caso usb) per decodificarlo e mandarlo sulla seriale, quindi bisognerebbe implementare uno stack usb, e fare in modo che arduino legga il traffico di usb in tempo reale ( e usb è forse troppo veloce), insomma, un casino! a proposito ma perchè vuoi fare questa cosa?

per collegarmi via UMTS... ho visto vari shield per il GPRS ma è troppo lento per trasmettere video, quindi utilizzando una chivetta internet o un cellulare usato come modem posso sfruttare l'UMTS (170kb/s) e tutti quei rotocolli che la penna può usare. Non voglio creare uno stack USB: in pratica se sniffo i comandi di connessione dovrebbero essere sempre quelli, quelli che variano sono in ricezione ma ricodifico brutalmente solo la parte dati, che ovviamente il PC invierà in modo che sia facilmente ricostruibile dall'arduino. Il problema che mi si pone è se arduino è abbastanza veloce per leggere e ritrasmettere i dati USB senza perdere pezzi per strada

se conoscete dei software già fatti o metodi alternativi funzionanti per favore linkatemeli

edit: per sniffare l'USB posso usare anche wireshark che è software, rimane però il collegamento pennina->arduino

tutti i comandi sono incapsulati nel protocollo usb. senza "aprire" usb non leggi nessun comando. se l'intento è simulare il dialogo fra pc e periferica, con arduino che fà il pc allora ti dico che non si può fare, senza aggiungere altra elettronica tipo questa: http://www.usb.org/developers/onthego/

anche se la periferica è solo una con protocollo noto a priori? qual'è il problema che spinge ad adottare hardware esterno? quale hardware conviene usare? grazie per la pazienza ;D son nuovo nella programmazione arduino & hardware, ma ho molta pratica con la programmazione generale e delle basi scolastiche di elettrotecnica

guarda questo: http://www.circuitsathome.com/products-page/arduino-shields oppure più nel dettaglio: http://www.maxim-ic.com/datasheet/index.mvp/id/3639

quando connetti qualcosa di usb al pc il protocollo usb instaura una comunicazione (continuativa) con la periferica, durante questa fase ci sono un sacco di eventi (handshake, ecc..) fino a che la periferica non dà al pc una descrizione di se stessa, poi il pc guarda nel suo elenco di vid/pid se conosce il "dialetto" parlato da quella periferica e se non cel'ha ti chiede di installare un driver e cioè un traduttore che faccia capire al pc la lingua della periferica, ed alla fine arriviamo alla comunicazione che volevi intercettare...

Pongo qui la domanda anche se è lievemente OT. Nel caso si volesse implementare una sorta di keylogger, si potrebbero intercettare i dati provenienti dalla tastiera (magari tranciando il cavo in maniera bruta e fissando l' arduino in mezzo), salvarli nelle maniere note, per poi spedirli al computer? Oppure la usb è troppo veloce per il nostro povero arduino che non riuscirebbe ad intercettare tutto?

EDIT: mi riferivo ad una tastiera usb :)

@necrosis butta un occhio qui.. http://code.rancidbacon.com/ProjectLogArduinoUSB

braibooster l'articolo dice "Fourth alpha release. Added generic USB device support." quindi, ci provo, al massimo riutilizzo l'esperienza per altre USB :-) per non saper ne leggere ne scrivere, ho tagliato un cavo USB maschio e ho recuerato anche due femmine(a cui poi penseremo) Sto cercando di capire lo schema: i due diodi zener servono per abbattere l'output arduino dai 5V a 3,6V, giusto? ma è meglio 3,6 o 3,3? appena me li procuro inizio a montare, peccato che sono in periodo esami... ps. sapete dove trovare i diodi zener, magari di recupero? dite che ce li hanno nei negozi di elettricisti?