Ingenieria Inversa: Encontrar un puerto serial en un sistema embebido

ingenieria_inversa

Desde hace mucho me a llamado la atención la ingeniería inversa y el hacking hardware, lamentablemente hay poca información o material sobre este tema en español, para los que inician o quieren iniciar es a veces difícil empezar con la primeras practicas. Hoy voy a mostrar uno de los pasos básicos para encontrar un puerto serial en un sistema embebido. Este tutorial esta basado en un blog que me encanta leer Devtty0 del cual he traducido algunas partes y he agregado experiencias mías.

Vamos a ver ver tres formas de hacerlo:

1.- Multimetro

Esta es la manera menos costosa, pero no la mas fácil, todos tenemos a la mano un multimetro (si no es así, deberías comprar uno), ¿que características debe tener el multimetro? Debe medir continuidad o resistencia, recomiendo un multimetro decente mínimo unos 600 o 800 pesos para que tenga una medición sensible.

Lo primero y mas fácil de hacer es identificar tierra (GND) es lo podemos hacer con la opción del multimetro “continuidad” tomamos uno de pines y medimos con referencia a uno de los lazos de tierra del dispositivo.

Ya teniendo identificado el pin de tierra, podremos encontrar el pin de voltaje (VCC) y esto lo hacemos por medio del pin ya identificado GND, cuando midamos continuidad o resistencia entre los pines de tierra y vcc obtendremos una resistencia baja aunque sea por unos leves instantes, esto se debe al capacitor de desacoplamiento que se suele colocar en la entrada de alimentación para eliminar el ruido eléctrico.

Ahora sigue TX en este caso el pin de transmisión siempre va a estar en alto de acuerdo a el protocolo de comunicación serial, una forma de identificarlo es apagar nuestro dispositivo, colocar nuestro multimetro entre tierra y el pin que sospechamos es TX y ver si al arrancar el dispositivo hay una variación de voltaje, esta variacion de voltaje se debe a la trama o tren de pulsos inicial del puerto al comenzar el arranque del dispositivo, esto provoca que baje el voltaje promedio entre estos pines.

Por ultimo RX es el  pin definitivamente con un poco mas difícil de encontrar y ya que varían dependiendo el dispositivo, puedes encontrarlo:

  • Siempre en voltaje alto (El cual es nuestro caso en este modem)
  • Voltaje en alto unos pocos cientos de milivolts menor que VCC
  • Flotando alrededor de unos cientos de milivolts menor que VCC
  • Flotando durante unos segundos y luego se queda en alto cuando se inicializa el puerto serie

2.- Osciloscopio

Si llegamos a tener en nuestro taller un osciloscopio la identificación del puerto se vuelve mas fácil simplemente debemos analizar la señal que cada pin nos envié y comprarlo con los datos que ya sabemos del puerto serial, el pin de transmisión nos dejara ver un tren de pulsos en la pantalla de nuestro oscilocopio.

3.- JTAGulator

JTAGULATOR

JTAGULATOR es una herramienta desarrollada por grand Idea Studio en con tecnología Parallax, esta herramienta como su nombre lo dice nos ayuda a encontrar los denominados puertos JTAG

usando_jtagulator

Conectamos a nuestra tarjeta (Importante: NO he conectado el in de alimentación, se puede dañar el dispositivo.)

jtagulator_conexion2

Encendemos nuestro modem y abrimos el puerto serial donde esta ubicado nuestro JTAGULATOR

IMG_20140813_211145554

Abrimos el puerto serial

Jtagulator1

Seleccionamos el voltaje al que trabaja el puerto serial del modem en este caso 3.3v

Jtagulator2

Seleccionamos el numero de pines que usaremos para encontrar el puerto serial, en este caso serán 3 e iniciamos las permutaciones

Jtagulator3

Ahora debemos ver cada una de las combinaciones que nos muestra Jtagulator y ver los datos que nos envia, en base a eso podremos identificar los pines y saber a que velocidad trabaja el puerto. ¿Como sabemos eso? En la trama que nos devuelve el modem podemos ver valores como FF esto quiere decir que los pines se quedan en alto, no hay cambio.

Y así continuamos hasta la velocidad de 115200 podemos ver algunos saltos de linea y retorno de carro (sus valores hexadecimal), ademas de que es una trama bastante grande, también pudiera ser la velocidad siguiente  230400 ya que al ser una velocidad cercana pude leer algunos datos , pero probemos con 115200 una velocidad común en este tipo de dispositivos. (En el video mas adelante puedes ver con mas detalle esta parte)

 terminal1

BAM!! Nos pide la contraseña


En este caso nuestro puerto queda de la siguiente manera:

JTAGulator     Modem

PIN0  —>        RX

PIN1 —–>      TX

Velocidad en baudios: 115200

Ahora solo queda probar con algunas contraseñas: root, admin o la clave del wifi que viene en la etiqueta del modem 😉

terminal2

terminal3

terminal4

terminal5

Si todavía tienes alguna duda sobre las conexiones en uno de los #InventorsLive demostré en vivo como conectarse al puerto serial de un modem Hawuei HG520

Espero sus comentarios y si han obtenido conexión a un puerto serial de un sistema embebido comenten como les fue.

 

Saludos Inventores

2 opiniones en “Ingenieria Inversa: Encontrar un puerto serial en un sistema embebido”

  1. Que tal
    He estado buscando alguna guia en que pueda determinar cuales son los pines jtag (tdi,tck, etc) de lector multimedia. Tiene 10 pines. pienso que no es estandar y posiblemente tendre que encontrarlos yo mismo, pero no se si con multimetro pueda realizarlo. lo otro es que estoy pensado si compro ese jtagulator para que me ayude, pero es muy costoso y lo que estoy haciendo es mas de hobbie para poder a ver si le puedo dar uso y no este tirado por alli, segun entiendo debe tener un software tipo linux.. pero el pobre no arranca y la unica forma de revivirlo seria por jtag..

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *