SlideShare una empresa de Scribd logo
1 de 25
Ingeniería reversa de
dispositivos seriales con
    algo de Python

    Alfonso de la Guarda Reyes
         alfonsodg@gmail.com
                   @alfonsodg
DISCLAIMER
Todo el contenido de esta charla es resultado de investigación
con fines didácticos y educativos. El autor no se hace
responsable por el uso del conocimiento contenido en la
siguiente presentación. La información contenida debe ser
utilizada únicamente para fines éticos y con la debida
autorización.
Todo descubrimiento realizado, ha sido y será usado de forma
legal. La audiencia debe asumir todo lo que se exponga hoy,
como “falso” y “sin fundamento” hasta que lo compruebe
personalmente. Limahack no es el autor directo de ninguno de
los descubrimientos expuestos, ni de las herramientas
demostradas, ni los conoce.
Todas las opiniones vertidas durante esta presentación son
exclusivas del expositor, Limahack no es responsable de
ninguna de las opiniones vertidas.
Todavía hay dispositivos con
                     puertos seriales?


              SI

Como también: paralelos, usb, con
puertos propietarios, etc....


Es un estándar de la industria... aunque
hoy en día su uso es más especializado
Cómo funcionan los puertos
                                     serie?

●
    Interfaz de                 ●
                                    Seguimiento de un
    comunicaciones digital          protocolo, usualmente
                                    “estándar”
●
    Transmisión bit a bit
●
    Normas RS-232 y RS-
                                ●
                                    Los protocolos tienden
    422 / Propietarias              a emplear secuencias
                                    ASCII
●
    Asíncronos                  ●
                                    Algunos protocolos
●
    Simplex, Half Duplex y          propietarios hacen uso
    Full Duplex                     de IO/CTL
●
    Chips UART
Por qué necesito manipular los
                            puertos serie?
●
    Acceder a funcionalidades particulares de
    nuestros dispositivos
●
    Enviar y recibir datos de los mismos
    (dispositivos)
●
    En general para controlarlos... hasta el
    punto en donde el fabricante lo permita
Es complicado acceder a los
                        dispositivos por puertos serie?
●
    Ingredientes: puertos series (emisor/receptor),
    cable serie, software de comunicaciones,
    parámetros y (quizás) conocer el protocolo...
●
    Preparación: mezclar los ingredientes según las
    especificaciones del fabricante del dispositivo
●
    Presentación: Hacer lo que deseamos según lo
    permita el fabricante
Y qué sucede cuándo la
 receta con funciona?
Hackeando comunicaciones
                       seriales (preparación)
●
    Informarnos: buscar todo material relativo
    al dispositivo y/o hasta de sus chips, cada
    uno puede revelar valiosa información


●
    Buscar si hay software que permita
    comunicarse con el dispositivo de
    alguna/cualquier manera
Hackeando comunicaciones
                        seriales (practicando)
●
    Verificar pinout de puertos y cables
●
    Configurar parámetros del puerto
●
    Probar protocolos o comandos, buscando
    respuesta de los dispositivos
●
    “Sniffear” un aplicativo que trabaje con el
    dispositivo e interpretar las señales /
    comandos
Receta 1: Dispositivo Lector de
                      Tarjetas por Proximidad
●
    Transmisión síncrona
●
    Comando de petición de registros
●
    Comando de validación de recepción con
    llave para vacío de memoria
●
    Tramas simples alfanuméricas con código
    de tiempo e identificación de usuario
La experiencia de las radio
         Tadirant
Equipos VHF 9000 / HF 6000

●
    Objetivo: Integrar los canales de datos de los
    equipos a un sistema C4I
●
    Problema: El fabricante no entregó la
    información técnica para la integración de los
    dispositivos (ni quería hacerlo)
●
    Solución: Aplicar ingeniería reversa al puerto
    de comunicaciones para replicar el protocolo
Communication_Request (COM_REQ)




     HF-6000
      Radio
                              HF                 HF         External
  (RT/RE-6001
 Exciter & Radio             Power             Antenna      Control
System Controller)          Amplifier          Coupler       Device
Rx           Tx           Tx         Rx   Tx         Rx    Tx        Rx




       MASTER                  Slave #1         Slave #2        Slave #N
Radios Tadirant VHF 9000
●
  Con la documentación obtenida se pudo conseguir el pinout para las
  conexiones
●
  Se ubicó un software que permitía la transmisión de flujos de vídeo, se
  procedió al sniffing (monitoreo) de las señales
●
  El protocolo está basado en señales IO/CTL (secuencias de bits)
●
  Con la documentación auxiliar se procedió a completar la
  configuración de los parámetros del equipo
●
  Comunicaciones independientes del canal o modalidad (salto de
  frecuencia, etc.)
Radios Tadirant HF 6000



  No se pudo concluir esta fase, pero se
 encontró que el pinout era diferente y que
    algunas de las señales (protocolo)
requerían ajustes para cerrar el proceso....

Era una cuestión de días y más pruebas...
...este... y Python dónde
            está?
Y ahora Python...

●
    Permite prototipado rápido de los
    protocolos
●
    Al ser interpretado podemos
    experimentar con el proceso de la
    ingeniería reversa paso a paso
●
    Tiene una magnífica librería para el
    manejo de puertos seriales
Suena bonito, pero... “show
                        me the code”




https://bitbucket.org/alfonsodg/radio-data
Gracias!
alfonsodg@gmail.com

Más contenido relacionado

La actualidad más candente

La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
Andres
 
Diseño de un circuito wake-up para redes de sensores inalámbricas
Diseño de un circuito wake-up para redes de sensores inalámbricasDiseño de un circuito wake-up para redes de sensores inalámbricas
Diseño de un circuito wake-up para redes de sensores inalámbricas
RFIC-IUMA
 

La actualidad más candente (20)

Intro arduino
Intro arduinoIntro arduino
Intro arduino
 
Propuesta RITE E-Controls
Propuesta RITE E-ControlsPropuesta RITE E-Controls
Propuesta RITE E-Controls
 
Aplicación de los fpga’s en radares de vigilancia aérea desde tierra y radare...
Aplicación de los fpga’s en radares de vigilancia aérea desde tierra y radare...Aplicación de los fpga’s en radares de vigilancia aérea desde tierra y radare...
Aplicación de los fpga’s en radares de vigilancia aérea desde tierra y radare...
 
Introduccion Arduino 2010
Introduccion  Arduino 2010Introduccion  Arduino 2010
Introduccion Arduino 2010
 
Taller arduino I - CyLicon Valley
Taller arduino I - CyLicon ValleyTaller arduino I - CyLicon Valley
Taller arduino I - CyLicon Valley
 
Iniciacion arduino
Iniciacion arduinoIniciacion arduino
Iniciacion arduino
 
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON MÓDULOS ARDUINO
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON MÓDULOS ARDUINO⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON MÓDULOS ARDUINO
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON MÓDULOS ARDUINO
 
2 protocolo hart
2 protocolo hart2 protocolo hart
2 protocolo hart
 
ARDUINO
ARDUINOARDUINO
ARDUINO
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
 
Seminario de Arduino
Seminario de ArduinoSeminario de Arduino
Seminario de Arduino
 
FPGA.
FPGA. FPGA.
FPGA.
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
 
Taller fabricación de robots-d1
Taller fabricación de robots-d1Taller fabricación de robots-d1
Taller fabricación de robots-d1
 
Arduino componentes
Arduino componentesArduino componentes
Arduino componentes
 
Manual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de alteraManual para usar la tarjeta del fpga cyclone iv de altera
Manual para usar la tarjeta del fpga cyclone iv de altera
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación práctica
 
Arduino práctico comunicaciones
Arduino práctico   comunicacionesArduino práctico   comunicaciones
Arduino práctico comunicaciones
 
Diseño de un circuito wake-up para redes de sensores inalámbricas
Diseño de un circuito wake-up para redes de sensores inalámbricasDiseño de un circuito wake-up para redes de sensores inalámbricas
Diseño de un circuito wake-up para redes de sensores inalámbricas
 

Similar a Ingenieria Reversa de Puertos Series con algo de Python

381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf
elkinmeza1
 
Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02
myconta
 
Como controlar una carga con un Arduino
Como controlar una carga con un ArduinoComo controlar una carga con un Arduino
Como controlar una carga con un Arduino
miguel cruz
 
Info plc net_redes_industriales
Info plc net_redes_industrialesInfo plc net_redes_industriales
Info plc net_redes_industriales
Jonathan Cardenas
 
Trabajo manteniminto de computo robertjimenez
Trabajo manteniminto de computo robertjimenezTrabajo manteniminto de computo robertjimenez
Trabajo manteniminto de computo robertjimenez
rjimenez1012
 
Determinar los componentes de una red e identificar y determinar los equipos ...
Determinar los componentes de una red e identificar y determinar los equipos ...Determinar los componentes de una red e identificar y determinar los equipos ...
Determinar los componentes de una red e identificar y determinar los equipos ...
George Romero Baltazar
 

Similar a Ingenieria Reversa de Puertos Series con algo de Python (20)

T3ch fest leganes_final
T3ch fest leganes_finalT3ch fest leganes_final
T3ch fest leganes_final
 
Navaja Negra 2018 - Análisis Forense en dispositivos Android en casos extremo...
Navaja Negra 2018 - Análisis Forense en dispositivos Android en casos extremo...Navaja Negra 2018 - Análisis Forense en dispositivos Android en casos extremo...
Navaja Negra 2018 - Análisis Forense en dispositivos Android en casos extremo...
 
381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf381429156-PLC-DVP-Fundamentals-RevB.pdf
381429156-PLC-DVP-Fundamentals-RevB.pdf
 
Fundamentos de telefonia ip
Fundamentos de telefonia ipFundamentos de telefonia ip
Fundamentos de telefonia ip
 
Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02Fundamentos20de20telefonia20ip 131006193600-phpapp02
Fundamentos20de20telefonia20ip 131006193600-phpapp02
 
Presentacion Voip
Presentacion VoipPresentacion Voip
Presentacion Voip
 
Señales con arduino y DAC
Señales con arduino y DACSeñales con arduino y DAC
Señales con arduino y DAC
 
Yersinia - Demostraciones prácticas de nuevos ataques de nivel dos
Yersinia - Demostraciones prácticas de nuevos ataques de nivel dosYersinia - Demostraciones prácticas de nuevos ataques de nivel dos
Yersinia - Demostraciones prácticas de nuevos ataques de nivel dos
 
Como controlar una carga con un Arduino
Como controlar una carga con un ArduinoComo controlar una carga con un Arduino
Como controlar una carga con un Arduino
 
Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5
 
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
 
Info plc net_redes_industriales
Info plc net_redes_industrialesInfo plc net_redes_industriales
Info plc net_redes_industriales
 
Trabajo manteniminto de computo robertjimenez
Trabajo manteniminto de computo robertjimenezTrabajo manteniminto de computo robertjimenez
Trabajo manteniminto de computo robertjimenez
 
WebRCT "VoIP también desde el navegador"
WebRCT "VoIP también desde el navegador"WebRCT "VoIP también desde el navegador"
WebRCT "VoIP también desde el navegador"
 
Webrtc"VoIP también desde el navegador"
Webrtc"VoIP también desde el navegador"Webrtc"VoIP también desde el navegador"
Webrtc"VoIP también desde el navegador"
 
Analisis de factibilidad
Analisis de factibilidadAnalisis de factibilidad
Analisis de factibilidad
 
Factibilidad
FactibilidadFactibilidad
Factibilidad
 
Comoconstruimos bogota mesh.org
Comoconstruimos bogota mesh.orgComoconstruimos bogota mesh.org
Comoconstruimos bogota mesh.org
 
Determinar los componentes de una red e identificar y determinar los equipos ...
Determinar los componentes de una red e identificar y determinar los equipos ...Determinar los componentes de una red e identificar y determinar los equipos ...
Determinar los componentes de una red e identificar y determinar los equipos ...
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y Asterisk
 

Más de Alfonso de la Guarda Reyes

Más de Alfonso de la Guarda Reyes (12)

Sis 2015 saludpol
Sis 2015 saludpolSis 2015 saludpol
Sis 2015 saludpol
 
Aplicaciones de E-health para ayuda al diagnostico
Aplicaciones de E-health para ayuda al diagnosticoAplicaciones de E-health para ayuda al diagnostico
Aplicaciones de E-health para ayuda al diagnostico
 
Proyecto COS
Proyecto COSProyecto COS
Proyecto COS
 
Presentacion imagenologia SINPA
Presentacion imagenologia SINPAPresentacion imagenologia SINPA
Presentacion imagenologia SINPA
 
Arquitecturas Libres en E-Health
Arquitecturas Libres en E-HealthArquitecturas Libres en E-Health
Arquitecturas Libres en E-Health
 
Por qué python?
Por qué python?Por qué python?
Por qué python?
 
Ehealth y Software Libre, una visión
Ehealth y Software Libre, una visiónEhealth y Software Libre, una visión
Ehealth y Software Libre, una visión
 
Military Research and Development with FLOSS
Military Research and Development with FLOSSMilitary Research and Development with FLOSS
Military Research and Development with FLOSS
 
GIS
GISGIS
GIS
 
Presentacion Blender
Presentacion BlenderPresentacion Blender
Presentacion Blender
 
Investigación y Desarrollo Tecnológico con FLOSS en el EPE
Investigación y Desarrollo Tecnológico con FLOSS en el EPEInvestigación y Desarrollo Tecnológico con FLOSS en el EPE
Investigación y Desarrollo Tecnológico con FLOSS en el EPE
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Ingenieria Reversa de Puertos Series con algo de Python

  • 1.
  • 2.
  • 3. Ingeniería reversa de dispositivos seriales con algo de Python Alfonso de la Guarda Reyes alfonsodg@gmail.com @alfonsodg
  • 4. DISCLAIMER Todo el contenido de esta charla es resultado de investigación con fines didácticos y educativos. El autor no se hace responsable por el uso del conocimiento contenido en la siguiente presentación. La información contenida debe ser utilizada únicamente para fines éticos y con la debida autorización. Todo descubrimiento realizado, ha sido y será usado de forma legal. La audiencia debe asumir todo lo que se exponga hoy, como “falso” y “sin fundamento” hasta que lo compruebe personalmente. Limahack no es el autor directo de ninguno de los descubrimientos expuestos, ni de las herramientas demostradas, ni los conoce. Todas las opiniones vertidas durante esta presentación son exclusivas del expositor, Limahack no es responsable de ninguna de las opiniones vertidas.
  • 5. Todavía hay dispositivos con puertos seriales? SI Como también: paralelos, usb, con puertos propietarios, etc.... Es un estándar de la industria... aunque hoy en día su uso es más especializado
  • 6.
  • 7. Cómo funcionan los puertos serie? ● Interfaz de ● Seguimiento de un comunicaciones digital protocolo, usualmente “estándar” ● Transmisión bit a bit ● Normas RS-232 y RS- ● Los protocolos tienden 422 / Propietarias a emplear secuencias ASCII ● Asíncronos ● Algunos protocolos ● Simplex, Half Duplex y propietarios hacen uso Full Duplex de IO/CTL ● Chips UART
  • 8. Por qué necesito manipular los puertos serie? ● Acceder a funcionalidades particulares de nuestros dispositivos ● Enviar y recibir datos de los mismos (dispositivos) ● En general para controlarlos... hasta el punto en donde el fabricante lo permita
  • 9. Es complicado acceder a los dispositivos por puertos serie? ● Ingredientes: puertos series (emisor/receptor), cable serie, software de comunicaciones, parámetros y (quizás) conocer el protocolo... ● Preparación: mezclar los ingredientes según las especificaciones del fabricante del dispositivo ● Presentación: Hacer lo que deseamos según lo permita el fabricante
  • 10. Y qué sucede cuándo la receta con funciona?
  • 11. Hackeando comunicaciones seriales (preparación) ● Informarnos: buscar todo material relativo al dispositivo y/o hasta de sus chips, cada uno puede revelar valiosa información ● Buscar si hay software que permita comunicarse con el dispositivo de alguna/cualquier manera
  • 12. Hackeando comunicaciones seriales (practicando) ● Verificar pinout de puertos y cables ● Configurar parámetros del puerto ● Probar protocolos o comandos, buscando respuesta de los dispositivos ● “Sniffear” un aplicativo que trabaje con el dispositivo e interpretar las señales / comandos
  • 13.
  • 14. Receta 1: Dispositivo Lector de Tarjetas por Proximidad ● Transmisión síncrona ● Comando de petición de registros ● Comando de validación de recepción con llave para vacío de memoria ● Tramas simples alfanuméricas con código de tiempo e identificación de usuario
  • 15. La experiencia de las radio Tadirant
  • 16. Equipos VHF 9000 / HF 6000 ● Objetivo: Integrar los canales de datos de los equipos a un sistema C4I ● Problema: El fabricante no entregó la información técnica para la integración de los dispositivos (ni quería hacerlo) ● Solución: Aplicar ingeniería reversa al puerto de comunicaciones para replicar el protocolo
  • 17.
  • 18. Communication_Request (COM_REQ) HF-6000 Radio HF HF External (RT/RE-6001 Exciter & Radio Power Antenna Control System Controller) Amplifier Coupler Device Rx Tx Tx Rx Tx Rx Tx Rx MASTER Slave #1 Slave #2 Slave #N
  • 19. Radios Tadirant VHF 9000 ● Con la documentación obtenida se pudo conseguir el pinout para las conexiones ● Se ubicó un software que permitía la transmisión de flujos de vídeo, se procedió al sniffing (monitoreo) de las señales ● El protocolo está basado en señales IO/CTL (secuencias de bits) ● Con la documentación auxiliar se procedió a completar la configuración de los parámetros del equipo ● Comunicaciones independientes del canal o modalidad (salto de frecuencia, etc.)
  • 20.
  • 21. Radios Tadirant HF 6000 No se pudo concluir esta fase, pero se encontró que el pinout era diferente y que algunas de las señales (protocolo) requerían ajustes para cerrar el proceso.... Era una cuestión de días y más pruebas...
  • 22. ...este... y Python dónde está?
  • 23. Y ahora Python... ● Permite prototipado rápido de los protocolos ● Al ser interpretado podemos experimentar con el proceso de la ingeniería reversa paso a paso ● Tiene una magnífica librería para el manejo de puertos seriales
  • 24. Suena bonito, pero... “show me the code” https://bitbucket.org/alfonsodg/radio-data