21
Nov
08

pybuddy: hacking ambient devices (for fun & profit)

Aquellos que sigáis nuestro blog corporativo ya habréis visto a nuestro i-buddy tuneado. Ese post no tenía mucho detalle técnico, así que aquí vamos a dar alguna pista más.

En realidad todo empezó en El corte inglés. Sí, en serio. Un buen amigo y geek, luna, y un servidor estaban echando un vistazo a la sección de informática cuando nos encontramos con el i-buddy. Y nos dijimos: seguro que se puede hacer algo, si alguien no lo ha hecho ya. Una semana más tarde, teníamos un juguete nuevo cada uno y un código del que partir. El fruto del cacharreo se llama pybuddy: un demonio escrito en python que atiende a comandos enviados vía UDP por red.

Esto significa que una vez lanzado el demonio podemos controlar el buddy con comandos tal que así:

echo “DEMO” | nc -q0 -u localhost 8888

En principio, todos los comandos se han implementado con lo que el juego ahora viene de hacer combinaciones con ellos. Por ejemplo, en el vídeo explicativo usamos este archivo de comandos y lo lanzamos así:

cat commands | nc -q0 -u localhost 8888

Como se puede ver, el timing fue perfecto 😉

En la oficina, de vez en cuando a alguien le dar por juguetear con el bicho que está enchufado a mi ordenador y recibe peticiones de cualquier ordenador de la red local, con lo que suele estar bastante agitado. Pero también lo tenemos recibiendo información importante de lo que ocurre en nuestras máquinas en producción, con el script que se curró Pablo en un momento: access-log-client.

El procedimiento de instalación no está documentado por ahora, pero es bastante sencillo:

  1. Hacemos un checkout del proyecto: svn checkout http://pybuddy.googlecode.com/svn/trunk/ pybuddy-read-only
  2. Editamos el fichero de configuración pybuddy.cfg, si queremos cambiar alguno de los parámetros por defecto (tipo de buddy, usuario con el que correr, logging, etc).
  3. Lanzamos el demonio, como root (luego cambiará de usuario según lo configurado): sudo src/pybuddy-daemon.py pybuddy.cfg
$ sudo src/pybuddy-daemon.py
2008-11-21 12:15:07,662 INFO Read config file: /usr/local/etc/pybuddy.cfg
2008-11-21 12:15:07,662 INFO Starting search…
2008-11-21 12:15:07,808 INFO ibuddy found! vend: 4400 prod: 1
2008-11-21 12:15:07,808 INFO endpoint
2008-11-21 12:15:08,424 INFO Starting daemon…
$

A partir de este momento, el buddy está listo para recibir comandos. A ver quién es el primero que se curra un plugin para Pidgin, gajim o similar.

Happy hacking.

Anuncios

18 Responses to “pybuddy: hacking ambient devices (for fun & profit)”


  1. 1 dyocma
    24 noviembre 2008 en 4:12 pm

    Muy buen guión, pero no funciona con mi i-Buddy.
    Yo soy francés y no hablan español, yo uso el traductor de Google.

  2. 2 peralta
    24 noviembre 2008 en 4:14 pm

    dyocma: est-ce que tu peux nous dire ce qui t’arrive? Peux-tu copier la sortie de l’execution de pybuddy? Salut!

  3. 3 jorge
    24 noviembre 2008 en 4:32 pm

    It did not work for me because the quotes in the command, use DEMO instead of “DEMO”:

    echo DEMO | nc -q0 -u localhost 8888

    works great now!

  4. 4 dyocma
    24 noviembre 2008 en 4:42 pm

    Very well, I test tonight. thank you for information.

  5. 5 peralta
    24 noviembre 2008 en 4:44 pm

    dyocma, jorge: the installation is now documented in English too: http://code.google.com/p/pybuddy/wiki/Installation Let me know if you hit any problem.

  6. 6 Dyocma
    24 noviembre 2008 en 6:46 pm

    It works well. it is a quotes that posed problem.
    Thank you for everything.

  7. 7 Dyocma
    24 noviembre 2008 en 7:56 pm

    Par contre je veux bien un exemple de commande…
    For I am quite against an example of command …

    MACRO_xxx fonctionne bien, mais j’arrive pas a allumer la tete de n’importe quelle couleur.
    MACRO_xxx works well, but I can not turn the head of any color.

    Okay
    christophe@home-desktop:~$ echo WD | nc -q0 -u localhost 8888
    christophe@home-desktop:~$ echo EXEC | nc -q0 -u localhost 8888
    christophe@home-desktop:~$ echo WU | nc -q0 -u localhost 8888
    christophe@home-desktop:~$ echo EXEC | nc -q0 -u localhost 8888
    christophe@home-desktop:~$

    Ca marche pas… (no okay)
    christophe@home-desktop:~$ echo RED | nc -q0 -u localhost 8888
    christophe@home-desktop:~$ echo EXEC | nc -q0 -u localhost 8888
    christophe@home-desktop:~$

    je comprends pas, je m’excuse… mais j’y arrive pas…
    I understand it, I apologize … but I happen …

    Un exemple (example) ?

  8. 8 peralta
    24 noviembre 2008 en 10:14 pm

    Dyocma: use the macro commands:
    * MACRO_RED
    * MACRO_GREEN
    * MACRO_BLUE
    * MACRO_YELLOW

  9. 9 dyocma
    25 noviembre 2008 en 9:43 am

    What are the commands RED, BLUE, WU?

  10. 10 dyocma
    25 noviembre 2008 en 9:44 am

    Congratulations on your great work.

  11. 11 dreyer
    26 noviembre 2008 en 9:29 am

    dyocma:

    Tu as de problèmes parce que la documentation des ordres est pas au detail. Si tu veux utiliser les commandes de couleurs la syntaxe c’est comme ici:

    echo RED:1 | nc -q0 -u localhost 8888
    echo EXEC | nc -q0 -u localhost 8888

    Les WD/EXEC WU/EXEC parfois ne marchent pas si tu les utilises directament. Le i-buddy n’est pas un jouet d’haute niveaux, c’est pour ça que dans le commande MACRO_FLAP on bouge le i-buddy pour “déboucher” les ailes.

  12. 12 Dyocma
    26 noviembre 2008 en 11:24 am

    Salut dreyer

    Oui, j’ai enfin compris comment passer les paramètres.
    Style : echo C:1:0:0 | nc -q0 -u localhost 8888; echo Z | nc -q0 -u localhost 8888

    J’ai eu un peu de mal a comprendre, car c’est vrai c’est pas très clair au niveau de la doc. En plus je ne connais rien au Python, donc pas évident de décrypter le code.

    Merci pour l’info, je commence a m’en sortir. J’ai ajouter une commande au mail-notification sous Ubuntu pour que la tête reste allumer tant que les mails ne sont pas lus, et cela fonctionne bien.

    Reste plus qu’a étudier le python + dbus pour écouter Pidgin (j’ai encore pas mal de travail).

    Mais, ceci dis, l’équipe a fais un bon boulot.

  13. 7 enero 2009 en 1:02 pm

    i have developed a plugin for jabbim, the jabber client. its bundled in the svn version. i hope you find it useful 🙂

  14. 14 RaZieR~SarE
    20 abril 2009 en 2:50 am

    chevere a mi me funciono perfectamente en Ubuntu!
    hay alguna forma de integrarlo con AMSN o EMESENE????

  15. 15 Elssi
    20 diciembre 2010 en 12:19 am

    Hola estoy interesado en hacer funcionar mi i-buddy en ubuntu 10.04 pero tengo problemas para instalar pybuddy segui el procedimiento y cuando lanzo el demonio dice que no lo encuentra.que estare haciendo mal??

  16. 16 rurik
    30 diciembre 2010 en 9:12 pm

    Hay alguna forma de hacerlo aletear cuando alguien de la red busque cierta palabra en google? intente escuchando el puerto 80 de otro pc, con nc -vnzw 1 192.168.2.189 80
    y le pedi que buscase la palabra DEMO
    tambien configure

    [network]
    # 127.0.0.1 is the default
    # change it to 0.0.0.0 to bind to all interfaces
    address: 0.0.0.0
    port: 80

    porfa ayudenme

    saludos


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: