WeChat, en tant qu'application de messagerie instantanée mobile la plus populaire en Chine, ne propose aucune méthode pour exporter l'historique structuré des messages.
Nous avons procédé à une ingénierie inverse du protocole de stockage des messages WeChat et fournissons cet outil pour décrypter et analyser les messages WeChat sur un téléphone Android rooté. Il peut également restituer les messages dans des fichiers HTML autonomes comprenant des messages vocaux, des images, des emojis, des vidéos, etc.
L'outil a été vérifié pour la dernière fois pour fonctionner avec la dernière version de WeChat le 01/01/2025. Si l'outil fonctionne pour vous, veuillez prendre un moment pour ajouter votre téléphone/système d'exploitation au wiki.
./third-party/compile_silk.sh
)pip install -r requirements.txt
. ./android-interact.sh db
. Il peut utiliser un identifiant utilisateur incorrect.${userid}
en inspectant le contenu de /data/data/com.tencent.mm/MicroMsg
sur le système de fichiers racine de l'appareil. Il doit s'agir d'un nom de 32 caractères composé de chiffres hexadécimaux./data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
à partir de l'appareil../decrypt-db.py decrypt --input EnMicroMsg.db
Obtenez WeChat uin (un nombre entier), les moyens possibles sont :
./decrypt-db.py uin
, qui recherche uin dans /data/data/com.tencent.mm/shared_prefs/
document.cookie
Obtenez l'identifiant de votre appareil (un entier positif). Les méthodes possibles sont :
./decrypt-db.py imei
implémente certaines méthodes pour trouver l'identifiant de l'appareil.*#06#
sur votre téléphoneDécrypter la base de données avec une combinaison d'uin et d'identifiant de périphérique :
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
REMARQUE : vous devrez peut-être essayer différentes manières d'obtenir l'identifiant de l'appareil et en trouver une capable de décrypter la base de données. Certains téléphones peuvent avoir plusieurs IMEI, vous devrez peut-être tous les essayer. Voir #33. La commande videra la base de données déchiffrée sur EnMicroMsg.db.decrypted
.
Si le décryptage ci-dessus ne fonctionne pas, vous pouvez également essayer le cracker de mot de passe pour forcer brutalement la clé. La clé de cryptage n'est pas très solide.
Copiez le répertoire des ressources utilisateur WeChat /data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
du téléphone vers le répertoire resource
:
./android-interact.sh res
RES_DIR
dans le script si l'emplacement de ces répertoires est différent sur votre téléphone. Pour les anciennes versions de WeChat, le répertoire peut être /mnt/sdcard/tencent/MicroMsg/
tar
avec ou sans compression, puis de copier l'archive. busybox tar
est recommandé car le tar
du système Android peut s'étouffer sur de longs chemins.resource
avec le sous-répertoire suivant : avatar,emoji,image2,sfs,video,voice2
. (Facultatif) Téléchargez le cache emoji à partir d'ici et décompressez-le sous wechat-dump
. Cela évitera de télécharger trop d’emojis lors du rendu.
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
Analyser et vider les messages texte de chaque discussion (nécessite une base de données décryptée) :
./dump-msg.py decrypted.db output_dir
Liste de toutes les discussions (base de données décryptée obligatoire) :
./list-chats.py decrypted.db
Générer un rapport de statistiques sur les messages texte (nécessite output_dir
de ./dump-msg.py
) :
./count-message.sh output_dir
Vider les messages d'un contact au format HTML, contenant des messages vocaux, des emojis et des images (nécessite une base de données et resource
décryptées) :
./dump-html.py "<contact_display_name>"
Le fichier de sortie est output.html
.
Vérifiez ./dump-html.py -h
pour utiliser des chemins différents.
Captures d'écran du HTML généré :
Voir ici pour un exemple HTML.
grep 'TODO' wechat -R