¿Qué versiones de usb desea admitir (específicamente, necesita usb3)?
Para responder a tu pregunta / idea actual:
-
¿Puedo desconectar los cables VCC y GND del cable de rastreo, para que C no intente controlar B?
Sí, a menos que su sniffer se ejecute con la energía suministrada por el host
-
¿Puedo colocar un diodo en los cables D + o D del cable de rastreo para hacer que los datos fluyan en una sola dirección?
D + y D- son datos diferenciales (los niveles de voltaje base indican al dispositivo usb la cantidad máxima de corriente que puede extraer). Entonces ... los diodos son inútiles para su aplicación. Sobre todo porque tu sniffer DEBE correr en 'modo promiscuo'.
-
¿Podré leer los datos del puerto USB en C?
Si construyes un sniffer, entonces sí, pero no con el simple cable divisor que tienes en mente.
También tenga en cuenta que USB3 es finalmente bidireccional (en comparación con las versiones anteriores).
También tenga en cuenta que el USB2 ya es de 480Mb / sy esto podría (dependiendo de su computadora C) ser mucho o imposible de capturar como una transmisión. Ahora USB3 estará alrededor de 5Gb / s ...
Por lo tanto, si desea crear su propio rastreador, debería buscar un búfer de datos diferencial con capacidad para al menos 480Mb / s, y algún procesador para manejar la copia de los datos y almacenarlo en la memoria. , luego haga que su computadora C descargue los datos capturados.
Ah, y no lo olvides, necesitarías un software en tu computadora para hacer algo útil con los datos capturados.
Los datos están codificados con NRZI. Un 0 hará que la señal flip signe y un 1 mantendrá el mismo nivel de señal. Si se envían 6 bits de 1, se envía un séptimo bit adicional (0) para hacer que la señal se invierta. Agregar este bit ficticio se denomina relleno de bits y se utiliza para mantener sincronizados los relojes del host y del cliente. Los relojes se generan a partir de la señal de datos.
Cuando se recibe la señal, el NRZI se decodifica y se elimina el relleno de bits. Luego, el controlador detectará el inicio del paquete USB (comenzará con un campo de sincronización). Los paquetes son buffers que se llaman puntos finales.
CRC se aplica a los paquetes para mantener la integridad de los datos. Cuando se detecte un error, se marcará y el paquete dañado se descartará.
ACTUALIZACIÓN:
Lea esta respuesta que detalla algunas opciones muy interesantes que pueden ayudarlo con soluciones de solo software, como en vm- ware o wireshark, dependiendo de la información que necesite:
A. Físico (señales eléctricas)
B. El flujo de bits (que es solo el diferencial entre D y D +)
C. Los paquetes USB
D. Los descriptores USB y los datos USB