blog del equipo de tecnología de 11870.com

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.

Tags: , , , ,

15 comentarios

rssComments RSS transmitTrackBack Identifier URI


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.

Comentario by dyocma on noviembre 24, 2008 4:12 pm


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

Comentario by peralta on noviembre 24, 2008 4:14 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!

Comentario by jorge on noviembre 24, 2008 4:32 pm


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

Comentario by dyocma on noviembre 24, 2008 4:42 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.

Comentario by peralta on noviembre 24, 2008 4:44 pm


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

Comentario by Dyocma on noviembre 24, 2008 6:46 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) ?

Comentario by Dyocma on noviembre 24, 2008 7:56 pm


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

Comentario by peralta on noviembre 24, 2008 10:14 pm


What are the commands RED, BLUE, WU?

Comentario by dyocma on noviembre 25, 2008 9:43 am


Congratulations on your great work.

Comentario by dyocma on noviembre 25, 2008 9:44 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.

Comentario by dreyer on noviembre 26, 2008 9:29 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.

Comentario by Dyocma on noviembre 26, 2008 11:24 am


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

Comentario by leandro on enero 7, 2009 1:02 pm


[...] Y las instrucciones ampliadas aqui. [...]

Pingback by Hacking de los chicos de 11870 al I-buddy « i-buddy on enero 30, 2009 1:43 am


[...] para la parte dura de datos técnicos, aquí un post explicativo de [...]

Pingback by nadie quiere ser un número » Blog Archive » i-Buddy en 11870.com on febrero 12, 2009 12:19 pm

addDeja un comentario