WeChat, como la aplicación de mensajería instantánea móvil más popular en China, no proporciona ningún método para exportar el historial de mensajes estructurados.
Realizamos ingeniería inversa del protocolo de almacenamiento de mensajes WeChat y proporcionamos esta herramienta para descifrar y analizar mensajes WeChat en un teléfono Android rooteado. También puede representar los mensajes en archivos html independientes, incluidos mensajes de voz, imágenes, emojis, vídeos, etc.
Se verificó por última vez que la herramienta funciona con la última versión de WeChat el 01/01/2025. Si la herramienta funciona para usted, tómese un momento para agregar su teléfono/sistema operativo a la wiki.
./third-party/compile_silk.sh
)pip install -r requirements.txt
. ./android-interact.sh db
. Es posible que utilice una identificación de usuario incorrecta.${userid}
inspeccionando el contenido de /data/data/com.tencent.mm/MicroMsg
en el sistema de archivos raíz del dispositivo. Debe ser un nombre de 32 caracteres que consta de dígitos hexadecimales./data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
del dispositivo../decrypt-db.py decrypt --input EnMicroMsg.db
Obtenga WeChat uin (un número entero), las formas posibles son:
./decrypt-db.py uin
, que busca uin en /data/data/com.tencent.mm/shared_prefs/
document.cookie
Obtenga la identificación de su dispositivo (un número entero positivo), las posibles formas son:
./decrypt-db.py imei
implementa algunas formas de encontrar la identificación del dispositivo.*#06#
en tu teléfonoDescifre la base de datos con una combinación de uin e identificación del dispositivo:
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
NOTA: es posible que deba probar diferentes formas de obtener la identificación del dispositivo y encontrar una que pueda descifrar la base de datos. Algunos teléfonos pueden tener varios IMEI, es posible que tengas que probarlos todos. Ver #33. El comando volcará la base de datos descifrada en EnMicroMsg.db.decrypted
.
Si el descifrado anterior no funciona, también puedes probar el descifrador de contraseñas para forzar la clave por fuerza bruta. La clave de cifrado no es muy segura.
Copie el directorio de recursos del usuario de WeChat /data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
del teléfono al directorio resource
:
./android-interact.sh res
RES_DIR
en el script si la ubicación de estos directorios es diferente en su teléfono. Para versiones anteriores de wechat, el directorio puede ser /mnt/sdcard/tencent/MicroMsg/
tar
con o sin compresión y luego copiar el archivo; se recomienda busybox tar
ya que el tar
del sistema Android puede atascarse en rutas largas.resource
con el siguiente subdirectorio: avatar,emoji,image2,sfs,video,voice2
. (Opcional) Descargue el caché de emoji desde aquí y descomprímalo en wechat-dump
. Esto evitará descargar demasiados emojis durante el renderizado.
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
Analizar y volcar mensajes de texto de cada chat (requiere una base de datos descifrada):
./dump-msg.py decrypted.db output_dir
Listar todos los chats (se requiere base de datos descifrada):
./list-chats.py decrypted.db
Genere un informe estadístico sobre mensajes de texto (requiere output_dir
de ./dump-msg.py
):
./count-message.sh output_dir
Volcar mensajes de un contacto a html, que contengan mensajes de voz, emojis e imágenes (requiere una base de datos y resource
descifrados):
./dump-html.py "<contact_display_name>"
El archivo de salida es output.html
.
Marque ./dump-html.py -h
para usar rutas diferentes.
Capturas de pantalla del html generado:
Vea aquí un ejemplo de html.
grep 'TODO' wechat -R