قم بكسر قاعدة بيانات 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