تصدير سجلات دردشة WeChat إلى ملف CSV.
حاليًا، يتم اختباره فقط على نظام التشغيل macOS . لست متأكدًا مما إذا كانت سجلات الدردشة على الأنظمة الأساسية الأخرى موجودة أيضًا في قاعدة بيانات sqlite3 المشفرة بـ AES. إذا كان الأمر كذلك، فيجب أيضًا استخدام هذه الطريقة.
يتم توفير عرض توضيحي، في demo.py
، وهذا ليس نصًا يتم إخراجه من الصندوق ، وقد تحتاج إلى القيام بذلك بنفسك.
ربما يمكنك استخدام pysqlcipher لاحقًا.
افترض أن معلومات WeChat مخزنة في ملف قاعدة بيانات sqlite3 المشفر بـ AES ضمن الدليل wechat_root=~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/xxx_version/xxx
:
wechat_root/Contanct/wccontact_new2.db
wechat_root/Group/group_new.db
wechat_root/Message/msg_xxx.db
ابحث عن طريقة لفك تشفير ملف قاعدة البيانات للحصول على المعلومات التي تريدها.
lldb -p $(pgrep WeChat)
br set -n sqlite3_key
continue
memory read --size 1 --format x --count 32 $rsi
سترى إخراجًا مشابهًا لما يلي
0x60000243xxxx: 0xe8 0x8d 0x4a 0xd0 0x82 0x6a 0xe2 0x8f
0x60000243xxxx: 0x77 0x70 0x54 0xd4 0x8e 0x72 0x3a 0x1b
0x60000243xxxx: 0x0a 0xe7 0x9c 0x89 0x5f 0x49 0xb0 0xec
0x60000243xxxx: 0x79 0xdf 0x2a 0x68 0xd5 0x9c 0xb8 0xf5
ثم قم بتعيين قيمة wechat_raw_key
إلى 'e88d4ad0826ae28f777054d48e723a1b0ae79c895f49b0ec79df2a68d59cb8f5'
في demo.py
يجب أن تكون قادرًا على العثور على بعض الطرق الأخرى عبر الإنترنت، إذا جربتها ونجحت، فنحن نرحب بالعلاقات العامة.
# open encrypted database by sqlcipher
sqlcipher wccontact_new2.db
# set decryption parameter in sqlcipher
PRAGMA key = " x'your_aes_key_here' " ;
PRAGMA cipher_page_size = 1024 ;
PRAGMA kdf_iter = ' 64000 ' ;
PRAGMA cipher_kdf_algorithm = PBKDF2_HMAC_SHA1 ;
PRAGMA cipher_hmac_algorithm = HMAC_SHA1 ;
# check decryption succeed or not
SELECT COUNT( * ) FROM sqlite_master ;
# dump decrypted database to xxx_dec.db
ATTACH DATABASE ' xxx_dec.db ' AS plaintext KEY ' ' ;
SELECT sqlcipher_export( ' plaintext ' ) ;
DETACH DATABASE plaintext ;
استخدم الطريقة المذكورة أعلاه لتصدير قاعدة البيانات التي تم فك تشفيرها، وقد لا تكون بعض أحدث البيانات موجودة في قاعدة البيانات. لاحقًا، وجدت أن WeChat قام بتمكين wal ويمكن دمجه من خلال نقطة التفتيش. خذ msg_0.db
كمثال:
mkdir wd
cp msg_0.db msg_0.db-shm msg_0.db-wal wd/
cd wd
# open encrypted database by sqlcipher
sqlcipher msg_0.db
# set decryption parameter in sqlcipher
PRAGMA key = " x'your_aes_key_here' " ;
PRAGMA cipher_page_size = 1024 ;
PRAGMA kdf_iter = ' 64000 ' ;
PRAGMA cipher_kdf_algorithm = PBKDF2_HMAC_SHA1 ;
PRAGMA cipher_hmac_algorithm = HMAC_SHA1 ;
# check decryption succeed or not
# SELECT COUNT(*) FROM sqlite_master;
# merge wal
PRAGMA wal_checkpoint ;
# dump decrypted database to xxx_dec.db
ATTACH DATABASE ' xxx_dec.db ' AS plaintext KEY ' ' ;
SELECT sqlcipher_export( ' plaintext ' ) ;
DETACH DATABASE plaintext ;