SlideShare una empresa de Scribd logo
David Meléndez Cano
                                     @taiksontexas

Taiksonprojects.blogspot.com   Taiksonprojects.blogspot.com
¿Qué es TRRP?

                  ➔
                      Plataforma de desarrollo de bajo o ningún coste

                  ➔
                      “Internet de las cosas”

                  ➔
                      Usa lo que tengas por casa

                  ➔
                      Los trastos pueden ser útiles

                  ➔
                      No tirar, no reciclar: Reutilizar




Taiksonprojects.blogspot.com


                                                                        2
Usa tu viejo router como plataforma domótica / robótica


            ➔
             Inversión inicial cero. Ya dispones de él
            ➔
             Cambia el firmware: Ej: Linux OpenWRT
         Pruebas de concepto:




                ROVER Texas Ranger: Linksys              Cuadricóptero ATROPOS:
                        WRT54GL                              La Fonera 2201
Taiksonprojects.blogspot.com
Primer contacto: ROV Texas Ranger




Taiksonprojects.blogspot.com
ROV Texas Ranger - Software

                        Interfaz WEB           Cgi/Iframe_comet.bin
                               ajax              comet
                                                                 Libjpeg.h
                                /dev/ttyS0            Target.c




                                 Placa                camara


                                         i2c

Taiksonprojects.blogspot.com
                                       Wii nunchuck
Afinando: Cuadricóptero Atropos


➔
    Fonera 2201

➔
    OpenWRT

➔
    Programa de estabilización

➔
    Telemetría y control HTML5




    Taiksonprojects.blogspot.com
Taiksonprojects.blogspot.com
Plataforma router: Puertos I2C
     Buscar pines GPIO de la CPU




Taiksonprojects.blogspot.com
Plataforma router: Puertos I2C y serie
      GPIO---> I2C / RS232




Puerto serie




                                           Pines GPIO


 Taiksonprojects.blogspot.com
Plataforma router: Carga de módulos




        rm /etc/modules.d/59­i2c­gpio

        echo "i2c­gpio­custom bus0=0,4,7 bus1=1,3,1" >/etc/modules.d/59­i2c­gpio­custom

        echo "i2c­gpio" >/etc/modules.d/60­i2c­gpio

        [reboot]

        i2c­detect /dev/i2c0 


Taiksonprojects.blogspot.com
Plataforma router: Puerto serie



             stty -F /dev/ttyS0 raw
             stty -F /dev/ttyS0 speed 115200




Taiksonprojects.blogspot.com
Plataforma router: Sensores - Giroscopio

     Wii Motion Plus

     Giroscopio triaxial

     Puerto I2C


        •
            Nos dice a qué velocidad estamos girando en cada plano

        •
            No tan sencillo: Deriva




Taiksonprojects.blogspot.com
Plataforma router: Sensores - Acelerómetro


        Wii Nunchuck

        Acelerómetro triaxial

        Puerto I2C




     Mide la aceleración (g) en cada plano.




Taiksonprojects.blogspot.com
Plataforma router: Sensores - Magnetómetro



          -Magnetómetro triaxial HMC5881L

          -Gauss en cada plano




             -El acelerómetro sólo anula la deriva en los planos de cabeceo y alabeo.

             -El plano de guiñada (rumbo) se corrige obteniendo el rumbo actual en
             grados, con respecto al norte.




Taiksonprojects.blogspot.com
acelerómetro




     giroscopio
  Imagen: “The Balance Filter” MIT



Pro: “Filtro de Kalman”; “Matriz de Cosenos Directores”
Taiksonprojects.blogspot.com
Plataforma router: Leyendo los sensores

    ID único para cada sensor. Ej Wii Motion+: 0x52

    •
     Petición de datos escribiendo al dispositivo
    •
     Lectura de datos en buffer


        #include <linux/i2c­dev.h>

        f_i2c0=open(I2C0, O_RDWR);


        ioctl(f_i2c0, I2C_SLAVE, 0x52);
             write(f_i2c0, buff_out, data_size);
             ­­­
             read(f_i2c0, buffer,size);



Taiksonprojects.blogspot.com
Plataforma router: programa estabilización IMU
   ➔
     Programa crítico que debe ejecutarse en intervalo de tiempo fijo
                   setitimer(ITIMER_REAL,&i_int,NULL);
                   (void)signal(SIGALRM ,timeout_real);

   ➔
     Compite por el tiempo de CPU con el servidor web (telemetría y control)

   ➔
     Cambiar la prioridad del proceso con nice no es suficiente: Real Time scheduling →
   FIFO, Round Robin



              #include <sched.h>


              schedule.sched_priority=sched_get_priority_max(SCHED_FIFO);
              sched_setscheduler(pthread_self(), SCHED_FIFO,&schedule);



Taiksonprojects.blogspot.com
El proceso watchdog informa al kernel de que el sistema no está colgado.



                                  ●
                                   Consume su parte de CPU
                                  ●
                                   Si se cuelga el router en pleno vuelo:




     ➔
         ioctl(“/dev/watchdog”, WDIOC_KEEPALIVE, &dummywd);


   Taiksonprojects.blogspot.com
Plataforma router: placa de control

     -Mínimos componentes externos: Sólo para generar señales PWM
     -Válido cualquier microcontrolador con UART y un par de timers


      Fonera
                                    PIC16f876A
    /dev/ttyS0




                                                                        ESC
                                                                      Motores




Taiksonprojects.blogspot.com
Control HTTP
    Las órdenes se transmiten a través de peticiones HTTP GET
    -Desde eventos keydown keyup de javascript por AJAX
    -Desde el proceso que lee del mando USB
     http://atropos/cgi­bin/ajaxinput?QQZ[GAS]Z[ALABEO]Z[CABECEO]Z[GUIÑADA]Z


     Deben ser muy fluidas y baratas en tiempo de CPU:
     Httpd tweak:



   Httpd.c:
   [...]
   if (strncmp(tptr, "cgi­bin/ajaxinput", 17) == 0) {
               [...]
               strcpy((char *)shmat(shmget(9998, 30, IPC_CREAT | 0666), NULL, 0),g_query);
               exit(­1);
   }
   [...]




Taiksonprojects.blogspot.com
Control UDP desde mando USB

     cat /dev/input/js0

     ­­­­

     pad=open(“/dev/input/js0”,O_RDONLY);
     reads=read(pad,msg,MSG);

                       (msg[7]==2)//gas
                           gas=((analog+127))*GAS_FACTOR;
                         [...]
                         (msg[7]==4)//guiñada
                           guinnada=­analog*GUINNADA_FACTOR;
                         [...]
                         (msg[7]==1)//cabeceo
                           cabeceo=­analog*CABECEO_FACTOR;
                         [...]
                         (msg[7]==0)//alabeo
                           alabeo=­analog*ALABEO_FACTOR;
                         [...]




Taiksonprojects.blogspot.com
Video:Vuelo Atropos Quadrocopter




Taiksonprojects.blogspot.com
Gracias!




                                  David Meléndez Cano


                                     @TaiksonTexas



                               Taiksonprojects.blogspot.com




Taiksonprojects.blogspot.com

Más contenido relacionado

PDF
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
PDF
2016/12/10: Ourense MakersLab workshop (es)
PPTX
CPMX5 - Hacking like a boss por Roberto Salgado
PPTX
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
PPTX
Conferencia Innovación en Técnicas de Ethical Hacking
PDF
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
PDF
PPT
Tecnicas de escaneo de puertos
Mariano Palomo - Taller de reversing en sistemas Windows aplicado a CTFs [ro...
2016/12/10: Ourense MakersLab workshop (es)
CPMX5 - Hacking like a boss por Roberto Salgado
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
Conferencia Innovación en Técnicas de Ethical Hacking
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Tecnicas de escaneo de puertos

La actualidad más candente (15)

PDF
Taller: Exploración de redes con Nmap
PDF
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
PPTX
Tipos de Malware
PPTX
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
PDF
Pentesting 101 por Paulino Calderon
ODP
2016 11-09-urjc-fpgas-libres
PDF
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
PDF
Curso linux clase_2_2012
PDF
Como usar Aircrack
PDF
PDF
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
PDF
Node.JS para Intel Galileo
PDF
Seguridad so pii_2011
PDF
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
PPTX
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Taller: Exploración de redes con Nmap
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Tipos de Malware
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
Pentesting 101 por Paulino Calderon
2016 11-09-urjc-fpgas-libres
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Curso linux clase_2_2012
Como usar Aircrack
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
Node.JS para Intel Galileo
Seguridad so pii_2011
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Publicidad

Similar a David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013] (20)

PDF
Trash Robotic Router Platform (TRRP)
PPTX
PDF
MythTV Mediacenter on an IGEPv2
PPT
Herramientas de monitoreo
PPTX
Esclavizando celulares
PDF
Sesion 1
PDF
7.herramientas de redes
PDF
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
PPTX
Voice OVER IP
PDF
7 curso
PDF
Asegúr@IT II - Seguridad en VoiP
PDF
Crackeando redes wep
PPT
Net snmp herramienta_de_monitoreo
DOCX
4.1.2.10 Lab - Introduction to Wireshark - RESUELTO.docx
PDF
Codemotion 2016 Madrid - Dockeriza tus aplicaciones Java
PDF
Monitorización En OpenSolaris
PDF
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
PDF
Lw2010 Pedro Valera
PDF
Un caso Forense: La Red y la Memoria RAM
PDF
Guia de configuracion cisco 881 w logicalis
Trash Robotic Router Platform (TRRP)
MythTV Mediacenter on an IGEPv2
Herramientas de monitoreo
Esclavizando celulares
Sesion 1
7.herramientas de redes
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Voice OVER IP
7 curso
Asegúr@IT II - Seguridad en VoiP
Crackeando redes wep
Net snmp herramienta_de_monitoreo
4.1.2.10 Lab - Introduction to Wireshark - RESUELTO.docx
Codemotion 2016 Madrid - Dockeriza tus aplicaciones Java
Monitorización En OpenSolaris
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 Pedro Valera
Un caso Forense: La Red y la Memoria RAM
Guia de configuracion cisco 881 w logicalis
Publicidad

Más de RootedCON (20)

PDF
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
PDF
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
PDF
Rooted2020 hunting malware-using_process_behavior-roberto_amado
PPSX
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
PDF
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
PPTX
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
PPTX
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
PPTX
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
PDF
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
PDF
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
PPTX
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
PPTX
Rooted2020 virtual pwned-network_-_manel_molina
PDF
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
PDF
Rooted2020 todo a-siem_-_marta_lopez
PPTX
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
PDF
Rooted2020 live coding--_jesus_jara
PDF
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
PDF
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
PDF
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
PDF
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 live coding--_jesus_jara
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 encontrando 0days-en_2020_-_antonio_morales

David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]

  • 1. David Meléndez Cano @taiksontexas Taiksonprojects.blogspot.com Taiksonprojects.blogspot.com
  • 2. ¿Qué es TRRP? ➔ Plataforma de desarrollo de bajo o ningún coste ➔ “Internet de las cosas” ➔ Usa lo que tengas por casa ➔ Los trastos pueden ser útiles ➔ No tirar, no reciclar: Reutilizar Taiksonprojects.blogspot.com 2
  • 3. Usa tu viejo router como plataforma domótica / robótica ➔ Inversión inicial cero. Ya dispones de él ➔ Cambia el firmware: Ej: Linux OpenWRT Pruebas de concepto: ROVER Texas Ranger: Linksys Cuadricóptero ATROPOS: WRT54GL La Fonera 2201 Taiksonprojects.blogspot.com
  • 4. Primer contacto: ROV Texas Ranger Taiksonprojects.blogspot.com
  • 5. ROV Texas Ranger - Software Interfaz WEB Cgi/Iframe_comet.bin ajax comet Libjpeg.h /dev/ttyS0 Target.c Placa camara i2c Taiksonprojects.blogspot.com Wii nunchuck
  • 6. Afinando: Cuadricóptero Atropos ➔ Fonera 2201 ➔ OpenWRT ➔ Programa de estabilización ➔ Telemetría y control HTML5 Taiksonprojects.blogspot.com
  • 8. Plataforma router: Puertos I2C Buscar pines GPIO de la CPU Taiksonprojects.blogspot.com
  • 9. Plataforma router: Puertos I2C y serie GPIO---> I2C / RS232 Puerto serie Pines GPIO Taiksonprojects.blogspot.com
  • 10. Plataforma router: Carga de módulos rm /etc/modules.d/59­i2c­gpio echo "i2c­gpio­custom bus0=0,4,7 bus1=1,3,1" >/etc/modules.d/59­i2c­gpio­custom echo "i2c­gpio" >/etc/modules.d/60­i2c­gpio [reboot] i2c­detect /dev/i2c0  Taiksonprojects.blogspot.com
  • 11. Plataforma router: Puerto serie stty -F /dev/ttyS0 raw stty -F /dev/ttyS0 speed 115200 Taiksonprojects.blogspot.com
  • 12. Plataforma router: Sensores - Giroscopio Wii Motion Plus Giroscopio triaxial Puerto I2C • Nos dice a qué velocidad estamos girando en cada plano • No tan sencillo: Deriva Taiksonprojects.blogspot.com
  • 13. Plataforma router: Sensores - Acelerómetro Wii Nunchuck Acelerómetro triaxial Puerto I2C Mide la aceleración (g) en cada plano. Taiksonprojects.blogspot.com
  • 14. Plataforma router: Sensores - Magnetómetro -Magnetómetro triaxial HMC5881L -Gauss en cada plano -El acelerómetro sólo anula la deriva en los planos de cabeceo y alabeo. -El plano de guiñada (rumbo) se corrige obteniendo el rumbo actual en grados, con respecto al norte. Taiksonprojects.blogspot.com
  • 15. acelerómetro giroscopio Imagen: “The Balance Filter” MIT Pro: “Filtro de Kalman”; “Matriz de Cosenos Directores” Taiksonprojects.blogspot.com
  • 16. Plataforma router: Leyendo los sensores ID único para cada sensor. Ej Wii Motion+: 0x52 • Petición de datos escribiendo al dispositivo • Lectura de datos en buffer #include <linux/i2c­dev.h> f_i2c0=open(I2C0, O_RDWR); ioctl(f_i2c0, I2C_SLAVE, 0x52);      write(f_i2c0, buff_out, data_size);      ­­­      read(f_i2c0, buffer,size); Taiksonprojects.blogspot.com
  • 17. Plataforma router: programa estabilización IMU ➔ Programa crítico que debe ejecutarse en intervalo de tiempo fijo setitimer(ITIMER_REAL,&i_int,NULL); (void)signal(SIGALRM ,timeout_real); ➔ Compite por el tiempo de CPU con el servidor web (telemetría y control) ➔ Cambiar la prioridad del proceso con nice no es suficiente: Real Time scheduling → FIFO, Round Robin #include <sched.h> schedule.sched_priority=sched_get_priority_max(SCHED_FIFO); sched_setscheduler(pthread_self(), SCHED_FIFO,&schedule); Taiksonprojects.blogspot.com
  • 18. El proceso watchdog informa al kernel de que el sistema no está colgado. ● Consume su parte de CPU ● Si se cuelga el router en pleno vuelo: ➔ ioctl(“/dev/watchdog”, WDIOC_KEEPALIVE, &dummywd); Taiksonprojects.blogspot.com
  • 19. Plataforma router: placa de control -Mínimos componentes externos: Sólo para generar señales PWM -Válido cualquier microcontrolador con UART y un par de timers Fonera PIC16f876A /dev/ttyS0 ESC Motores Taiksonprojects.blogspot.com
  • 20. Control HTTP Las órdenes se transmiten a través de peticiones HTTP GET -Desde eventos keydown keyup de javascript por AJAX -Desde el proceso que lee del mando USB http://atropos/cgi­bin/ajaxinput?QQZ[GAS]Z[ALABEO]Z[CABECEO]Z[GUIÑADA]Z Deben ser muy fluidas y baratas en tiempo de CPU: Httpd tweak: Httpd.c: [...] if (strncmp(tptr, "cgi­bin/ajaxinput", 17) == 0) { [...] strcpy((char *)shmat(shmget(9998, 30, IPC_CREAT | 0666), NULL, 0),g_query); exit(­1); } [...] Taiksonprojects.blogspot.com
  • 21. Control UDP desde mando USB cat /dev/input/js0 ­­­­ pad=open(“/dev/input/js0”,O_RDONLY); reads=read(pad,msg,MSG);   (msg[7]==2)//gas       gas=((analog+127))*GAS_FACTOR;     [...]     (msg[7]==4)//guiñada       guinnada=­analog*GUINNADA_FACTOR;     [...]     (msg[7]==1)//cabeceo       cabeceo=­analog*CABECEO_FACTOR;     [...]     (msg[7]==0)//alabeo       alabeo=­analog*ALABEO_FACTOR;     [...] Taiksonprojects.blogspot.com
  • 23. Gracias! David Meléndez Cano @TaiksonTexas Taiksonprojects.blogspot.com Taiksonprojects.blogspot.com