背景
PR #107 (commit b986413 ) 合并后审计发现,V1/V2/XOR .dat 图片解密的核心算法在 3 个文件里几乎复制粘贴了 3 遍 :
文件
函数
涉及格式
`decode_image.py`
`_decode_image_v2_v1()` / `decrypt_dat_file()`
V1 / V2 / 旧 XOR
`decrypt_sns.py`
inline 在主循环里
V1 / V2 (朋友圈缓存)
`export_messages.py`
`_decrypt_dat_to_bytes()`
V1 / V2 (导出时嵌入 HTML)
`batch_decrypt_images.py`
走 `decode_image.decode_all_dats` ✓
已复用
#e5e2269 已经把 AES 对齐公式 `aligned_aes_block_size()` 抽出来 3 处共用,但完整解密路径(AES-ECB + raw + XOR + format detect) 还在各处单独维护。
风险
算法漂移:将来某个文件修 bug,另两处可能漏改
新格式(V3?)支持要改 3 个地方
测试覆盖只在 `tests/test_decode_image_v2.py`,其他 2 处变化没有 regression 守护
建议方案
以 `decode_image.py:decrypt_dat_file()` 为 canonical 实现 —— 它已有测试覆盖,且 PR feat: 新增 decode-images 子命令(批量解密 .dat 图片到明文图片树) #99 (`decode_all_dats`) 已经在用
`decrypt_sns.py` / `export_messages.py` 改为 import 并复用 —— 删掉自己的解密代码
朋友圈缓存路径推断(输出 `_t` 缩略图 vs `_d` 大图)这种 SNS-specific 逻辑保留在 decrypt_sns.py
`export_messages.py` 的 HTML 内联 base64 也保留(业务逻辑),但底层解密走 `decode_image.decrypt_dat_file()`
Acceptance
相关 commit
背景
PR #107 (commit b986413) 合并后审计发现,V1/V2/XOR .dat 图片解密的核心算法在 3 个文件里几乎复制粘贴了 3 遍:
#e5e2269 已经把 AES 对齐公式 `aligned_aes_block_size()` 抽出来 3 处共用,但完整解密路径(AES-ECB + raw + XOR + format detect) 还在各处单独维护。
风险
建议方案
Acceptance
相关 commit