Ingeniería Inversa al Celular LG MG201D
December 15, 2007Como decía en un post anterior, mi teléfono celular, un LG MG201D no tiene ninguna aplicación libre que pueda interactuar con el bajo Linux y Windows. La única aplicación que soporta el protocolo de este teléfono es LG Mobile Agent, que viene con el CD de instalación del celular y dicho sea de paso es propietaria.
Si yo deseo usar mi teléfono bajo Linux de una manera libre no puedo hacerlo ya que LG no ha liberado las especificaciones del protocolo que habla la PC y el teléfono. Así que dadas esas circunstancias decidí emprender algo que jamás había hecho… la Ingeniería Inversa.
Tras leer el manual de mi celular, descubro que el cable original no es un cable USB, sino un cable con conexión al puerto serial. Entonces puedo pensar que el cable USB que viene con el teléfono es en realidad un puerto serial virtual, vía un driver. En efecto, era así siendo el responsable el chip PL-2303 de la Empresa Prolific lo que “convertía” mi cable USB en un puerto serial.
Estaba claro entonces que LG Mobile Agent manejaba información enviada por un puerto serial y no por uno USB. (Ya que el protocolo de USB es más complicado). Con eso en mente decidí buscar un sniffer de puerto serial. Tras una búsqueda en Google encontré PortMon, un sniffer de puertos paralelos y seriales para Windows, que aunque no es libre, es suficiente para mis propósitos.
Bueno, tras configurarlo como se debe (Hay que leer el archivo de ayuda que trae), lo puse a escuchar a mi puerto COM3 que era el puerto virtual creado por el driver del cable USB.
Con esto en mente, abrí el LG Mobile Agent y realizé algunas tareas triviales como ver fotos y demás. Luego lo cerré y fui al PortMon y encontré toneladas de información escrita al puerto serial. Entonces aquí empieza la Ingeniería Inversa, al verlas todas y tratar de deducir que es lo que hacen, tomando como ordenada la secuencia de pasos.
En última instancia para probar mis inferencias se debe escribir en el puerto serial para ver si los comandos dan las respuestas esperadas. Para ese fin usé PuTTY, un emulador de puerto serial libre que tiene la capacidad de hablar con un módem por puerto serial. Usé esa funcionalidad para hablar con el teléfono celular.
No voy a describir todo el proceso ya que me faltaría espacio para anotarlo, sin embargo 4 horas después de iniciada la tarea, obtuve un .doc con una descripción parcial del protocolo.
Este .doc todavía no es completo ya que faltan cosas como subir aplicaciones Java al celular, bajar fotografías, etc. Sin embargo lo básico del protocolo está en ese .doc.
Para los interesados en crear software libre que maneje al LG MG201D, la especificación que estoy revirtiendo, está liberada bajo la Licencia Creative Commons 2.5 Atribución o la GFDL (GNU Free Documentation License).
Próximamente actualizaré el post con más detalles del protocolo a medida que lo vaya descifrando.






Felicitaciones, es bueno saber que hay mentes inquitas e ingeniosas alla en Chiclayo.
Comment by volkan68 — December 16, 2007 @ 5:13 pm
Felicitanios por haber conseguido el protocolo del celular, te agradeceria si me mandaras el Manual del Celular LG MG201d a mi correo electronico munoz_farfan@hotmail.com
Comment by Ricardo — January 30, 2008 @ 2:27 pm
hola: sabes, no se si se puede modificar la aplicacion para que pueda cargar politonos que pesan mas de 50 kb… esto me impide ingresar tonos de mejor calidad. Seria una gran ayuda.
Comment by alejandro — March 25, 2008 @ 5:05 pm
mi casa
Comment by david — September 7, 2008 @ 4:27 pm
Hola, si se puede modificar para q subas mas de 50kb. me escribes a mi email
Comment by jorge — October 13, 2009 @ 2:05 am