SlideShare uma empresa Scribd logo
1 de 23
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

Mais conteúdo relacionado

Mais procurados

Taller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapTaller: Exploración de redes con Nmap
Taller: Exploración de redes con NmapWebsec México, S.C.
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
 
Tipos de Malware
Tipos de MalwareTipos de Malware
Tipos de Malwareedelahozuah
 
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...
OWASP IoTGoat - Enseñando a desarrolladores IoT a crear productos seguros - P...Websec México, S.C.
 
Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonWebsec México, S.C.
 
2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libresobijuan_cube
 
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]
Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]RootedCON
 
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)Jaime Sánchez
 
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]RootedCON
 
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]RootedCON
 

Mais procurados (15)

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

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

Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)navajanegra
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 marcoita
 
Herramientas de monitoreo
Herramientas de monitoreoHerramientas de monitoreo
Herramientas de monitoreoTensor
 
Sesion 1
Sesion 1Sesion 1
Sesion 11130490
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018 Codemotion
 
Asegúr@IT II - Seguridad en VoiP
Asegúr@IT II - Seguridad en VoiPAsegúr@IT II - Seguridad en VoiP
Asegúr@IT II - Seguridad en VoiPChema Alonso
 
Codemotion 2016 Madrid - Dockeriza tus aplicaciones Java
Codemotion 2016 Madrid - Dockeriza tus aplicaciones JavaCodemotion 2016 Madrid - Dockeriza tus aplicaciones Java
Codemotion 2016 Madrid - Dockeriza tus aplicaciones JavaIván López Martín
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valeraguestf280e2
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redesguest5d7f33c
 
Un caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMUn caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMEventos Creativos
 
Guia de configuracion cisco 881 w logicalis
Guia de configuracion cisco 881 w   logicalisGuia de configuracion cisco 881 w   logicalis
Guia de configuracion cisco 881 w logicalisasesinoevil
 
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...Buenaventura Salcedo Santos-Olmo
 

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

Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)Trash Robotic Router Platform (TRRP)
Trash Robotic Router Platform (TRRP)
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2
 
Herramientas de monitoreo
Herramientas de monitoreoHerramientas de monitoreo
Herramientas de monitoreo
 
Esclavizando celulares
Esclavizando celularesEsclavizando celulares
Esclavizando celulares
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 
7.herramientas de redes
7.herramientas de redes7.herramientas de redes
7.herramientas de redes
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
 
Voice OVER IP
Voice OVER IPVoice OVER IP
Voice OVER IP
 
7 curso
7 curso7 curso
7 curso
 
Asegúr@IT II - Seguridad en VoiP
Asegúr@IT II - Seguridad en VoiPAsegúr@IT II - Seguridad en VoiP
Asegúr@IT II - Seguridad en VoiP
 
Crackeando redes wep
Crackeando redes wepCrackeando redes wep
Crackeando redes wep
 
Net snmp herramienta_de_monitoreo
Net snmp herramienta_de_monitoreoNet snmp herramienta_de_monitoreo
Net snmp herramienta_de_monitoreo
 
Codemotion 2016 Madrid - Dockeriza tus aplicaciones Java
Codemotion 2016 Madrid - Dockeriza tus aplicaciones JavaCodemotion 2016 Madrid - Dockeriza tus aplicaciones Java
Codemotion 2016 Madrid - Dockeriza tus aplicaciones Java
 
Monitorización En OpenSolaris
Monitorización En OpenSolarisMonitorización En OpenSolaris
Monitorización En OpenSolaris
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Un caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMUn caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAM
 
Guia de configuracion cisco 881 w logicalis
Guia de configuracion cisco 881 w   logicalisGuia de configuracion cisco 881 w   logicalis
Guia de configuracion cisco 881 w logicalis
 
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...
 

Mais de RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRootedCON
 

Mais de RootedCON (20)

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