Взломайте базу данных WeChat определенной хост-среды, чтобы получить историю ее чатов.
Если вы используете бота WeChat, такого как wechaty
, вы можете перехватывать только каждое сообщение в реальном времени и не можете получить полные исторические записи чата.
Однако если в рамках wechaty
, плюс API для получения записей чата, то это может быть осуществимо.
Поскольку записи чатов WeChat хранятся в базе данных, их можно получить из базы данных.
Поскольку записи чата WeChat хранятся в sqlcipher
— базе данных sqlite
, которая поддерживает шифрование и для открытия которой требуется секретный ключ, поэтому мы должны сначала получить секретный ключ базы данных.
На примере MacOS мы можем использовать некоторые обратные методы ( dtrace
), чтобы перехватить активность программы в базе данных. Поскольку программа, открывающая базу данных, включает в себя чтение ключа, мы можем проанализировать это действие чтения, чтобы получить секретный ключ в виде открытого текста.
Теоретически его можно реализовать на любой платформе, особенно на Android, Windows и других платформах. Реверс-инженеров больше, и взломать его может быть проще. Однако мой личный основной компьютер — Mac/iOS, поэтому я не рассматривал совместимость. на данный момент с экосистемой Windows/Android.
Во-вторых, инженерные возможности со стороны ПК богаче, чем со стороны мобильных устройств. Поэтому отдавать приоритет прорывам со стороны ПК — экономически эффективный выбор.
В настоящее время наш скрипт dtrace и вся логика перехвата должны гарантировать, что версия клиента MacOS WeChat ниже 3.6 .
Адрес загрузки предыдущих версий WeChat: Старые версии WeChat (Mac) |
В MacOS необходимо настроить среду, которая может читать и записывать sqlcipher.
# 1. check where is your `libcrypto.a`
brew list openssl | grep libcrypto.a
# 或者 find /usr/local/Cellar -name libcrypto.a
# 2. use the libcrypto.a with openssl version >= 3
LIBCRYPTO={YOUR-libcrypto.a}
# 3. install sqlcipher
git submodule add https://github.com/sqlcipher/sqlcipher
cd sqlcipher
./configure --enable-tempstore=yes CFLAGS= " -DSQLITE_HAS_CODEC "
LDFLAGS= $LIBCRYPTO --with-crypto-lib=none
make
# need password
sudo make install
Вам нужно удерживать cmd + Shift + R, чтобы войти в безопасный режим (просто нажмите и удерживайте кнопку питания в Mac Studio).
# check SIP
csrutil status
# disable SIP, need in recovery mode (hold on shift+R when rebooting)
csrutil disable
Совет: вам необходимо убедиться, что вы используете правильную программу WeChat соответствующей версии.
# comparing to `wechat-decipher-macos`, I make the script more robust.
# 由于key是固定的,也可以把输出内容持久化,只需要在命令后面加上 `> data/dbcracker.log`
pgrep -f /Applications/WeChat-3.6.0.app/Contents/MacOS/WeChat | xargs sudo core/dbcracker.d -p > .keys
Совет: Действие чтения ключа произойдет при входе в систему, поэтому вам необходимо сначала запустить программу, а затем войти в систему.
Поскольку мы получили адрес хранения, секретный ключ, версию и т. д. каждой базы данных, мы можем программно прочитать все данные.
pysqlcipher
node-sqlcipher