Foro de elhacker.net

Seguridad Informática => Hacking => Mensaje iniciado por: AlbertoBSD en 17 Marzo 2018, 20:07 pm



Título: Sniffear comunicacion Serial [Solucionado, Funcional]
Publicado por: AlbertoBSD en 17 Marzo 2018, 20:07 pm
Alguno conoce un buen metodo para Sniffear una comunicación Serian entre dos dispositivos mediante puerto RS232?  :huh: :huh:

El punto esta en que estoy realizando Ingeniería Inversa en el protocolo de comunicacion que utilizan 2 dispositivos que se comunican mediante cable serie.

Primero intente utilizar mi computadora como dispositivo intermedio leer todos los datos que manda el HostA y escribirlos hacia el HostB y viceversa.

El programa lo escribi en C# y parecia funcionar bien, vi parte de la comunicación entre los equipos pero llega un punto en el que al parcer por tiempo no se sincroniza bien la comunicación entre ellos y NO SE Comportan los dispositivos de la manera esperada, segun me entere el tiempo de respuesta entre ambos dispositivos no debe de superar los 20 milisegundos entre ellos. Vi el tiempo que tardaba en leer y escribir la información y este supera los 40 milisegundos.

Intente un  programa en C puro y parece ir mas rápido, pero ahora leo información de mas.
Ejemplo.

En el programa en C# leia un byte del host A al host B con valor de 100 y posteriormente leia una respuesta del host B hacia el host A con otro valor X

Y ahora con el programa de C leo hasta 5 bytes continuos con valor 100 cuando realmente conozco de antemano que solo debe de ser un byte con valor 100 seguido de la respuesta.

Alguna sugerencia con otro metodo de snifeo?

Saludos!


Título: Re: Sniffear comunicacion Serial
Publicado por: engel lex en 17 Marzo 2018, 20:23 pm
te soy sincero, el tiempo de respuesta es muy alto, algo mal puedes estar haciendo, el tiempo de procesamiento de un paquete por un proxy web se considera alto si llega por encima de 1ms (incluso se puede considerar alto sobre 0.5ms) si tienes algún arduino, raspberry podrías hacer un sniffer de hardware, es decir, algo así

(https://embeddedfreak.files.wordpress.com/2008/08/rs232_sniffer.png)


en caso de dudas, allí hay una web que aparentemente saben sobre eso


Título: Re: Sniffear comunicacion Serial
Publicado por: AlbertoBSD en 17 Marzo 2018, 21:27 pm
Voy a ver que puedo realizar via Hardware tengo un Tensy board guardo.

El tema del tiempo mejoro notablemente con el programa en C, ya que C# te genera muchas clases intermedias para controlar el flujo de datos y darlo en una clase ya lista para usar.

El otro punto del Tiempo de respuesta creo que se debe a que estoy utilizando 2 adaptadores USB a RS232.

Ejemplo del log de salida del programa en C#

Código:
[09:56:03.791] COM6 bytes read:[1]: 64
[09:56:03.995] COM6 bytes read:[1]: 65
[09:56:04.010] COM4 bytes read:[1]: 01
[09:56:04.026] COM4 bytes read:[5]: FD-7D-A4-6A-F9
[09:56:04.151] COM6 bytes read:[1]: 64
[09:56:04.338] COM6 bytes read:[1]: 65
[09:56:04.338] COM4 bytes read:[1]: 01
[09:56:04.354] COM4 bytes read:[5]: FD-7D-A4-6A-F9

Pero la salida de lo anterio (un poco mas extensa) no lleva a nada ya que los dispositivos  no terminan de inicializarse y no funcionan para nada.

Ejemplo el log de salida fdel programa en C

Código:
Abrimos el puerto COM6
Abrimos el puerto COM9
COM6 Bytes[5]:  0101010101
COM9 Bytes[4]:  65656465
COM9 Bytes[5]:  6565646565
COM6 Bytes[11]: 01FD01C4A8AA4001C4A8EA
COM9 Bytes[4]:  65646565
COM6 Bytes[6]:  01FD01C4A8EA
COM9 Bytes[4]:  64656565
COM6 Bytes[6]:  01FD01C4A8F5
COM9 Bytes[5]:  6465656564
COM6 Bytes[6]:  01FD01C4A8EA
COM9 Bytes[4]:  65656564
COM6 Bytes[11]: 01FD01C4A8AA4001C4A8EA
COM9 Bytes[5]:  6565656465
COM6 Bytes[11]: 01FF01E2A8554001C4A8EA

Por lo que segun veo estoy leyando datos de mas. por que solo deberia de leer un 64 y un 65 para segir con la espuesta del host B.

Voy de momento a ver si puedo abordar el tema de Un cable modificado para tratar de leer los datos directamente.

Saludos y gracias por tu respuesta Engel, pense que nadie me responderia  ;-) ;-)



FUNCIONO!!!!

El cable modificado funciono bajo el diagrama mostrado, conseguí los Diodos de un eliminador de Corriente (Descompuesto) que estaba apunto de tirar, los desoldé del mismo y los puse en el cable tal como muestra el diagrama.

Ahora puede ver la comunicación entre los dispositivos en tiempo real.

El unico inconveniente que le veo es al estar leyendo de desde la computadora a través de un único puerto COM, es que no se distinguir que bytes leidos envió el host A y cuales el host B, solo me quedara depurar, prueba y error.

Saludos!




Título: Re: Sniffear comunicacion Serial [Solucionado, Funcional]
Publicado por: engel lex en 19 Marzo 2018, 15:23 pm
Ya  eso último lamentablemente te toca usar 2 conversores serial a USB para distinguir la comunicación

También podrias grabar una session en una dirección y procurar replicar grabando en la otra dirección

Si si, sin los diodos creas un crossover en la comunicación (haces un corto, pero no de los que echan chispas y causan incendios xD)





Título: Re: Sniffear comunicacion Serial [Solucionado, Funcional]
Publicado por: AlbertoBSD en 20 Marzo 2018, 21:25 pm
Asi es para solucionarlo tuve que modificar el cable y agregar otra terminal RS232 con su respectivo adaptador USB para poder leerlo desde la laptop.

Quedo funcionando perfectamente ahora distingo la communication de cada dispositivo.

Saludos!