Welcome to your secure /home,            $user     Lorenzo Martínez Rodríguez
[root@localhost ~]# whoami• Ingeniero en Informática   –   Seguridad   –   Redes   –   Domótica   –   Robótica   –   Progr...
Home, sweet home!
Lo que me termina pasando…
¿Cómo empezó todo?• Motion (www.lavrsen.dk)
¿Cómo empezó todo?
Hacking Roomba!
Trasteando con una alarma de Securitas
Bye, bye Securitas!
Climatización Airzone: Innobus
Estación Meteorológica Oregon WMR 200 • Wview Weather (www.wviewweather.com)
Y así nace…        
Let’s  go  to  Hollywood!!
Let’s  go  to  Hollywood!!
Manos a la Obra!
Elementos implicados
Hardware necesario•   Intel Xeon X3430 @2.40GHz•   12 GB RAM•   2 dongle BT•   RJ-45•   Conceptronic C54Netcam2
Reconocimiento facial
Reconocimiento facial• Face.com (www.face.com)  –   Cloud/FRaaS  –   Fiabilidad  –   Lento  –   Dependiente de acceso a In...
And the winner is: OpenCV   – HaarClassifierCascade   – Eigenfaces o PCA (Principal Component Analysis)   – Preprocesado d...
Conceptronic C54Netcam2
blink_cam.plmy $IP_webcam="192.168.1.22";my $Auth=“cm9vdGVkX2Fjazpzb3lfZGVfcHJ1ZWJh”;my$url="http://".$IP_webcam."/admin/s...
Movimiento detectado• Motion  – > blink_cam.pl &  – > Indexar en BD ruta de ficheros  – > Timestamp && flag en BD     “mot...
Identificando al intruso
Sintetizador de voz• Festival  – Linux  – Muy enlatado• Loquendo  – Windows  – Somos legión!• Cloud  – Web scrapping
Saludar && desconectar motion (I)
Saludar && desconectar motion (II)
Llamar policía && notificar•   Generar texto a leer a policía•   Generar WAV con sintetizador cloud•   Procesar WAV con SO...
Llamar policía && notificar
Notifier• Niveles de criticidad  – Bajo: Email + syslog  – Medio: Nivel bajo + gtalk  – Alto: Nivel medio + Twitter + Prow...
LawBot.pl• XMPP• Autenticación• Algunos comandos:  – Set/get [aa [temp| mode] ]  – Roomba [clean | dock | sensors]  – Togg...
Live demo!
Diseccionando Skynet
Diseccionando Skynet• Programa monolítico  – Bloques síncronos  – Bloques de tareas cada X segundos  – Gestión de Threads
Diseccionando Skynet•   Programa maestro•   Gestión procesos Linux•   Backend en BD•   Semáforos#MAINinit; #inicializo BD,...
Diseccionando Skynet_10.pl• Threads  – Movimiento_detected  – Get_temp_ext  – Get_alarm_status  – Get_aa_mode  – Get_aa_te...
Diseccionando Skynet_30.pl• Threads  – Roomba_scheduler     • Si es hora de que la Roomba salga a limpiar, y alarma       ...
Diseccionando Skynet_60.pl• Threads  – Get_bluetooth_info     • Monitoriza BT de habitantes  – Get_roomba_status     • ¿Qu...
Extra Bonus!
Email me: lorenzo@lorenzomartinez.esTwitter: @lawwait
Pacman returns!
Upcoming SlideShare
Loading in …5
×

Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]

9,924 views

Published on

El objetivo de la conferencia es exponer cómo se puede llevar a cabo, de forma lo más sencilla y estructurada posible, la coexistencia de diversos elementos cotidianos en las casas actuales, controlados por un único sistema, con la finalidad de mejorar la seguridad del lugar donde más tranquilos deberíamos estar: nuestra propia vivienda. Se explicará cómo diseñar un mecanismo de seguridad física casero basado en:

Mecanismos de monitorización mediante cámaras web genéricas, con técnicas de reconocimiento facial de los habitantes de la casa, así como detección por bluetooth.
Grabación de videos a sospechosos
Interacción con una alarma controlable vía TCPIP
Reconocimiento facial de personas clasificadas como “buscadas por las autoridades”, en modo lista negra, integrado con el aviso teléfonico a la policía mediante una centralita basada en VoIP, indicando la ubicación de qué persona de dicha lista, se encuentra en el domicilio.
Sistema de notificaciones de las alertas a Twitter, correo y mensajería instantánea.
Asimismo, se hablará de automatización de mecanismos de control de aire acondicionado/calefacción, robots dedicados a la limpieza y estaciones meteorológicas, demostrando que cualquier elemento casero con interfaz de red, puede ser un sistema SCADA. Además de implementar un sistema de autenticación biométrica, aprovechando el reconocimiento facial de quien entra en la casa, se podrá disponer de una lista blanca de usuarios, sobre los que poder personalizar un mensaje de bienvenida para cada usuario, pudiendo avisarle de diversos aspectos.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,924
On SlideShare
0
From Embeds
0
Number of Embeds
6,288
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lorenzo Martínez - Welcome to your secure /home, $user [Rooted CON 2012]

  1. 1. Welcome to your secure /home, $user Lorenzo Martínez Rodríguez
  2. 2. [root@localhost ~]# whoami• Ingeniero en Informática – Seguridad – Redes – Domótica – Robótica – Programación• Preventa técnico, comercial; Consultoría, auditoría y asesoría en seguridad, quinielas, cafés, fotocopias,…• Editor y co-fundador de Security By Default• Twitter: @lawwait
  3. 3. Home, sweet home!
  4. 4. Lo que me termina pasando…
  5. 5. ¿Cómo empezó todo?• Motion (www.lavrsen.dk)
  6. 6. ¿Cómo empezó todo?
  7. 7. Hacking Roomba!
  8. 8. Trasteando con una alarma de Securitas
  9. 9. Bye, bye Securitas!
  10. 10. Climatización Airzone: Innobus
  11. 11. Estación Meteorológica Oregon WMR 200 • Wview Weather (www.wviewweather.com)
  12. 12. Y así nace…        
  13. 13. Let’s  go  to  Hollywood!!
  14. 14. Let’s  go  to  Hollywood!!
  15. 15. Manos a la Obra!
  16. 16. Elementos implicados
  17. 17. Hardware necesario• Intel Xeon X3430 @2.40GHz• 12 GB RAM• 2 dongle BT• RJ-45• Conceptronic C54Netcam2
  18. 18. Reconocimiento facial
  19. 19. Reconocimiento facial• Face.com (www.face.com) – Cloud/FRaaS – Fiabilidad – Lento – Dependiente de acceso a Internet• OpenCV – Alto rendimiento – Entrenamiento – CUDA – Open Source
  20. 20. And the winner is: OpenCV – HaarClassifierCascade – Eigenfaces o PCA (Principal Component Analysis) – Preprocesado de foto: • Escala de grises • Redimensionar imagen • Ecualización del histograma – cvEigenDecomposite(); – Menor distancia euclidea o Mahalanobis• Referencias: – http://www.shervinemami.co.cc/faceRecognition.html – http://www.cognotics.com/opencv/servo_2007_series
  21. 21. Conceptronic C54Netcam2
  22. 22. blink_cam.plmy $IP_webcam="192.168.1.22";my $Auth=“cm9vdGVkX2Fjazpzb3lfZGVfcHJ1ZWJh”;my$url="http://".$IP_webcam."/admin/system.cgi?camname=printer&camlocation=home&led=”;my $browser = LWP::UserAgent->new;for (my $i=0; $i < 10; $i++){ $browser->get($url.2,"Authorization" => "Basic $Auth"); $browser->get($url.0,"Authorization" => "Basic $Auth");}
  23. 23. Movimiento detectado• Motion – > blink_cam.pl & – > Indexar en BD ruta de ficheros – > Timestamp && flag en BD “motion  detected”• Skynet – > Seleccionar frames desde fecha/hora movimiento + 5 segundos – Llamada a programa OpenCV C++ – Procesamiento de resultados
  24. 24. Identificando al intruso
  25. 25. Sintetizador de voz• Festival – Linux – Muy enlatado• Loquendo – Windows – Somos legión!• Cloud – Web scrapping
  26. 26. Saludar && desconectar motion (I)
  27. 27. Saludar && desconectar motion (II)
  28. 28. Llamar policía && notificar• Generar texto a leer a policía• Generar WAV con sintetizador cloud• Procesar WAV con SOX para Asterisk• Use Asterisk::AMI. Originate context [warning] [warning] exten => 10,1,Answer() exten => 10,n,Wait(7) exten => 10,n,BackgroundDetect(silence) exten => 10,n,Playback(call_police) exten => 10,n,Wait(1) exten => 10,n,Hangup()
  29. 29. Llamar policía && notificar
  30. 30. Notifier• Niveles de criticidad – Bajo: Email + syslog – Medio: Nivel bajo + gtalk – Alto: Nivel medio + Twitter + Prowl• Avisos multi-thread
  31. 31. LawBot.pl• XMPP• Autenticación• Algunos comandos: – Set/get [aa [temp| mode] ] – Roomba [clean | dock | sensors] – Togglemotion / motion status – sched dd/mm/[yyyy]-[dd/mm/[yyyy]] hh:mm <comando> – ical(v) <nom-evento> | mes <mm-yyyy>
  32. 32. Live demo!
  33. 33. Diseccionando Skynet
  34. 34. Diseccionando Skynet• Programa monolítico – Bloques síncronos – Bloques de tareas cada X segundos – Gestión de Threads
  35. 35. Diseccionando Skynet• Programa maestro• Gestión procesos Linux• Backend en BD• Semáforos#MAINinit; #inicializo BD, cookie para alarma y conexion fija Roombafor (;;){ system "/usr/local/bin/skynet_60.pl&"; system "/usr/local/bin/skynet_30.pl&"; system "/usr/local/bin/skynet_10.pl&"; sleep (2);}
  36. 36. Diseccionando Skynet_10.pl• Threads – Movimiento_detected – Get_temp_ext – Get_alarm_status – Get_aa_mode – Get_aa_temp – Check_motion• Bloqueo hasta que todos los threads terminan
  37. 37. Diseccionando Skynet_30.pl• Threads – Roomba_scheduler • Si es hora de que la Roomba salga a limpiar, y alarma está en Total, poner previamente en parcial – Jobs_scheduler • Tareas temporizadas• Bloqueo hasta que todos los threads terminan
  38. 38. Diseccionando Skynet_60.pl• Threads – Get_bluetooth_info • Monitoriza BT de habitantes – Get_roomba_status • ¿Qué hace la roomba? – Bt_motion • ¿Alguien en casa?• Bloqueo hasta que todos los threads terminan
  39. 39. Extra Bonus!
  40. 40. Email me: lorenzo@lorenzomartinez.esTwitter: @lawwait
  41. 41. Pacman returns!

×