Hola, bueno pues como primer paso te sugiero que leas el documento siguiente: The Original USB 2.0 specification released on April 27, 2000.
http://www.usb.org/developers/docs/usb20_docs/usb_20_081114.zip (Página:
http://www.usb.org/developers/docs/usb20_docs/)
Hay capítulos que podrás pasar por alto. Debes enfocarte en entender la naturaleza de los datos que viajan a través de D+ y D-. Cómo funciona la señal diferencial que viaja por ahí, los tipos de voltajes que se manejan, sus velocidades, cómo se comienza la enumeración de un dispositivo, cómo sabe el host que es low speed o full speed, la asignación de una dirección USB, el envío de descriptores USB para que el host sepa con quién está lidiando y la puesta en marcha del device.
Ya sabiendo cómo se manejan las señales eléctricas deberás buscar un transceiver USB que se encargará de convertir los estados NRZI del bus en estados 0 y 1 leíbles por un procesador o un microcontrolador.
Mencioné que no necesitas un micro con periférico USB porque esos micros se encargan de darle uso a los datos USB, pero no te reflejan la capa física de la señal en su mayoría. Es decir, si el bus tiene un 1 lógico en un instante, no hay un registro en el micro que te permita leerlo. Hay micros que sí traen esas prestaciones, pero son procesadores muy veloces y que estarían fuera de alcance para tu proyecto. Con un micro normal y un transceiver apropiado podrás leer a nivel TTL el estado reflejado del bus de datos. También te podrá reportar los estados de las pull-up-down de las líneas D y los estados J y K que se manejan en la comunicación.
Una vez que comprendas al 100% cómo se enumeró el dispositivo deberás: entender cómo se comporta la clase USB Printers, cómo se envían y reciben comandos en ella, cómo se comunican los endpoints, qué tipo de endpoints existen.
Como experimento y sólo adivinando, me atrevo a decir que si te quieres inclinar por un producto Microchip elijas un PIC32 de los que corren a 100MHz. El podrá muestrear datos de la señal de 12MHz. Probablemente esté limitado ya que los 100MHz del CPU no siempre son tan reales y te quede corto (se miden en DMIPS - Dhrystone MIPS). Pero como primera aproximación podrías empezar con él.
El salvado de datos en una SD con el mismo micro será el mayor problema. Prácticamente los sniffers USB no guardan nada en ROM porque los datos muestreados llegan mucho más rápido que la velocidad de escritura de una SD. Deberás usar una RAM interna o externa que te permita guardar muestras por un periodo máximo de tiempo.
Es por eso que los sniffers que puse en mi primer post son caros. Por la calidad de buffers que tienen en cuanto a velocidad electrónica y por la capacidad de RAM interna que tienen para guardar muestras.
Saludos.