ถอดรหัสฐานข้อมูล 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
ได้