refactor: 移除微信 3.0 解密路径, 统一走 4.0 WCDB

- wechat-db.ts 删除 SQLCipher 回退、connectDb、getUser、tryOpenWechat4 等 3.0 专属逻辑
- image-decrypt-service.ts 删除 decryptDatV3 与 version === 0 分支
- index.ts 去除 wcdb4Client 冗余空值检查
- 移除 better-sqlite3-multiple-ciphers 依赖
- README 版本前置改为 4.0+

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
电摇小子
2026-07-03 10:37:51 +08:00
co-authored by Claude Opus 4.7
parent 30c47af1f9
commit 4bba8bd871
6 changed files with 97 additions and 560 deletions
+5 -18
View File
@@ -241,15 +241,11 @@ export class ImageDecryptService {
)
let decrypted: Buffer
if (version === 0) {
console.log('[ImageDecrypt] using V3 (XOR only)')
decrypted = this.decryptDatV3(datPath)
} else if (version === 1) {
if (version === 1) {
console.log('[ImageDecrypt] using V1 (default AES key)')
const key = Buffer.from(this.defaultV1AesKey, 'ascii')
decrypted = this.decryptDatV4(datPath, key)
} else {
// version === 2
} else if (version === 2) {
console.log('[ImageDecrypt] using V2 (user AES key)')
if (!this.aesKey) {
console.log('[ImageDecrypt] no AES key configured')
@@ -257,6 +253,9 @@ export class ImageDecryptService {
}
const key = Buffer.from(this.aesKey, 'ascii').slice(0, 16)
decrypted = this.decryptDatV4(datPath, key)
} else {
console.log('[ImageDecrypt] unsupported dat version:', version)
return null
}
return decrypted
@@ -310,18 +309,6 @@ export class ImageDecryptService {
return 0
}
/**
* V3 解密 - 仅 XOR
*/
private decryptDatV3(inputPath: string): Buffer {
const data = readFileSync(inputPath)
const out = Buffer.alloc(data.length)
for (let i = 0; i < data.length; i += 1) {
out[i] = data[i] ^ this.xorKey
}
return out
}
/**
* V4 解密 - AES + XOR
*/