WeChat, как самое популярное мобильное приложение для обмена мгновенными сообщениями в Китае, не предоставляет никаких методов экспорта структурированной истории сообщений.
Мы провели реверс-инжиниринг протокола хранения сообщений WeChat и предоставили этот инструмент для расшифровки и анализа сообщений WeChat на телефоне Android с root-доступом. Он также может отображать сообщения в автономные html-файлы, включая голосовые сообщения, изображения, смайлы, видео и т. д.
Последний раз инструмент проверен на работу с последней версией WeChat 1 января 2025 года. Если этот инструмент вам подходит, найдите время и добавьте свой телефон/операционную систему в вики.
./third-party/compile_silk.sh
)pip install -r requirements.txt
. ./android-interact.sh db
. Он может использовать неправильный идентификатор пользователя.${userid}
, проверив содержимое /data/data/com.tencent.mm/MicroMsg
в корневой файловой системе устройства. Это должно быть имя длиной 32 символа, состоящее из шестнадцатеричных цифр./data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
с устройства../decrypt-db.py decrypt --input EnMicroMsg.db
Получить WeChat uin (целое число), возможные способы:
./decrypt-db.py uin
, который ищет uin в /data/data/com.tencent.mm/shared_prefs/
document.cookie
Получите идентификатор вашего устройства (положительное целое число). Возможные способы:
./decrypt-db.py imei
реализует некоторые способы поиска идентификатора устройства.*#06#
на своем телефоне.Расшифруйте базу данных, используя комбинацию uin и идентификатора устройства:
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
ПРИМЕЧАНИЕ. Возможно, вам придется попробовать разные способы получить идентификатор устройства и найти тот, который сможет расшифровать базу данных. Некоторые телефоны могут иметь несколько номеров IMEI, возможно, вам придется попробовать их все. См. № 33. Команда выгрузит расшифрованную базу данных в EnMicroMsg.db.decrypted
.
Если приведенная выше расшифровка не работает, вы также можете попробовать взломщик паролей, чтобы подобрать ключ. Ключ шифрования не очень надежный.
Скопируйте каталог ресурсов пользователя WeChat /data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
с телефона в каталог resource
:
./android-interact.sh res
RES_DIR
в скрипте, если расположение этих каталогов на вашем телефоне другое. Для более старой версии WeChat каталог может быть /mnt/sdcard/tencent/MicroMsg/
tar
со сжатием или без него, а затем скопировать архив, рекомендуется использовать busybox tar
, поскольку tar
системы Android может захлебываться на длинных путях.resource
со следующим подкаталогом: avatar,emoji,image2,sfs,video,voice2
. (Необязательно) Загрузите кэш смайлов отсюда и распакуйте его с помощью wechat-dump
. Это позволит избежать загрузки слишком большого количества смайлов во время рендеринга.
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
Разобрать и выгрузить текстовые сообщения каждого чата (требуется расшифрованная база данных):
./dump-msg.py decrypted.db output_dir
Список всех чатов (требуется расшифрованная база данных):
./list-chats.py decrypted.db
Создать статистический отчет по текстовым сообщениям (требуется output_dir
из ./dump-msg.py
):
./count-message.sh output_dir
Дамп сообщений одного контакта в html, содержащий голосовые сообщения, смайлы и изображения (требуется расшифрованная база данных и resource
):
./dump-html.py "<contact_display_name>"
Выходной файл — output.html
.
Проверьте ./dump-html.py -h
, чтобы использовать разные пути.
Скриншоты сгенерированного HTML:
См. здесь пример HTML.
grep 'TODO' wechat -R