cable de rastreo de datos USB

4

Estoy buscando una manera de detectar los datos que se ejecutan entre una PC ("A") y un dispositivo USB ("B") utilizando otra PC ("C").

Para hacer esto, empalme el cable que va de A a B, solté otro cable USB para crear un divisor en Y y lo conecté a C, pensando que las señales se duplicarán.

Lo que sucedió fue que las dos PC A y C pelearon por el control de B (debería haber visto venir eso) y todo se desató.

Tengo un par de suposiciones / ideas que me gustaría presentarte: 1. ¿Puedo desconectar los cables VCC y GND del cable de rastreo, para que C no intente controlar B? 2. ¿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? 3. ¿Podré leer los datos del puerto USB en C?

Cualquier comentario / sugerencia será muy apreciado.

(Descargo de responsabilidad: soy un NOOB a USB, así que no se preocupe)

    
pregunta zulfik

3 respuestas

4

¿Qué versiones de usb desea admitir (específicamente, necesita usb3)?

Para responder a tu pregunta / idea actual:

  1. ¿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

  2. ¿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'.

  3. ¿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

    
respondido por el zduk
9

Por lo general, uso un analizador CATC como .

Lobuenoesqueobtienesunexcelentesoftwarequetemuestraexactamenteloqueestásucediendo:

O puede probar una solución de software únicamente como esto . Lo he usado cuando el catc estaba ocupado.

También puedes probar a revisar el analizador CATC en ebay o puedes alquilar uno. Sin embargo, hacer un cable en Y no funcionará como ya has encontrado :)

    
respondido por el Some Hardware Guy
-1
  

Estoy buscando una forma de recibir el flujo de bits que va al dispositivo sin interferir

¡Esto debería ser extremadamente fácil!

USB, antes de 3.0 es un protocolo de transmisión en sentido descendente. Lo que significa que simplemente conectas la computadora C al bus USB del transmisor, y puedes escuchar todos paquetes en sentido descendente (host- > cualquier dispositivo).

¡Solo modifique el controlador USB de C para no desechar paquetes, que no están dirigidos a él!

    
respondido por el Vorac

Lea otras preguntas en las etiquetas