miércoles, 31 de octubre de 2012

Obtener historial de Whatsapp en Windows Phone

La aplicación Whatsapp de Windows Phone no permite enviar una copia de la conversación por email como sí pasa con la versión de Android. Tampoco es posible acceder a los ficheros del teléfono y poder obtener una copia de la base de datos de las conversaciones, ¿o quizás sí?

No hay opción que permita enviar una copia de la conversación.


La respuesta es que sí es posible pero requiere ciertas modificaciones en el dispositivo. Debemos tener instalado el SDK de Windows Phone, hechos el DeveloperUnlock y el InteropUnlock para después instalar la aplicación "WP Root Tools". Por si necesitáis saber como realizar estos cambios en el teléfono dejo una guía del foro  XDA-Developers.

Instalamos WP Root Tools desde la herramienta Application Deployment del SDK de Windows Phone.

Si nunca lo habéis utilizado, es tan sencillo como seleccionar el dispositivo, la ruta de la aplicación en cuestión (.xap) y pulsar el botón Deploy.


Una vez desplegada en nuestro dispositivo seguimos las instrucciones de instalación de WP Root Tools que requerirá algún que otro reinicio. Después podemos utilizar la herramienta y continuar con nuestro propósito.



Desde la vista de "Explorer" podemos recorrer los directorios del teléfono. Ahora tenemos que acceder a la carpeta que contiene la base de datos pero nos encontramos un pequeño obstáculo ya que las aplicaciones instaladas no vienen listadas por sus nombres sino por su GUID. Pero no supone un gran problema ya que mediante la web www.windowsphone.com podemos encontrar el GUID correspondiente buscando la aplicación y la misma URL de la aplicación nos dará el chivatazo:

218a0ebb-1585-4c7e-a9ec-054cf4569a79

Ya conocemos el susodicho número por el que se identifica Whatsapp así que a buscar la base de datos. La ruta es la siguiente:

Applications
    |__ Data
        |__ GUID Whatsapp
            |__ Data
                |__ IsolatedStore
                    |__ 
messages.sdf

WP Root Tools nos permite copiar y pegar ficheros siéndonos muy útil para poder duplicar la base de datos en una carpeta a la que podamos "acceder" mediante una aplicación que nos permita enviar ficheros por correo electrónico por ejemplo. Me explico: copiamos messages.sdf a la carpeta "My Documents" que se encuentra en  la raíz. Una vez copiado, tenemos que renombrarlo a .txt para lo que ya os estaréis imaginando... Sí, desde la aplicación de Office exploraremos los documentos del teléfono y allí se encontrará nuestro messages.txt. La abrimos y como si de un documento de texto legítimo procedemos a Compartir vía correo electrónico. Fácil, ¿verdad?

Ahora desde nuestro PC descargamos el fichero con extensión .txt y lo guardamos con su extensión correspondiente que es .sdf .

Al tratarse de una base de datos SQL Server Compact no vamos a encontrar problemas para poder abrirla desde SQL Management Studio. Tan solo seleccionamos SQL Server Compact como el tipo de servidor y la ruta donde guardamos el fichero. 

Password en blanco.

Nos encontramos con las tablas  "__VERSION", "Conversation" y "Message".




Todo en texto plano para que podamos echar un vistazo sin problemas. Ahora es tiempo de lanzar consultas para obtener las conversaciones que nos convengan. En la tabla Message encontramos las columnas necesarias:

KeyFromMe nos indica si el mensaje lo hemos escrito nosotros siendo 1.
Data contiene el mensaje.
KeyRemoteJid es el usuario con el que has tenido el mensaje. NúmeroTeléfono@s.whatsapp.net
MessageID el identificador del mensaje.

He empleado la siguiente sentencia para obtener una conversación y poder ponerle nombre a tu contacto.

SELECT 
  CAST(
     CASE WHEN KeyFromMe = 1
        THEN 'Yo'
     ELSE 'Contacto'
     END AS nvarchar) AS "Usuario", Data AS "Mensaje"
FROM Message
WHERE KeyRemoteJid='346XXXXXXXX@s.whatsapp.net'
ORDER BY MessageID

Obteniendo lo siguiente:

Cada cuál que lo exporte como quiera.


Espero que os sea útil.


Actualización (Diciembre-2012):
Ha salido la versión 2.8.8. que permite enviarse el historial por e-mail. Pero no adjunta un fichero .txt con la conversación sino el texto en el cuerpo del mensaje. Y no incluye toda la conversación ya que te lo acompaña de un mensaje como el siguiente: "(Este email sólo incluye los mensajes más recientes 498; truncados por Windows Phone.)". Así que si la conversación es más larga, habrá que seguir extrayendo la base de datos. 

1 comentario:

fucku4leaving dijo...

Hola! oye pero si es para wp 8.1? y tienes que hacer eso desde la computadora o del dispositivo? si no tiene memoria externa no se puede recuperar? :'(