PC微信小程序wxapkg解密项目教程
1. 项目的目录结构及介绍
pc_wxapkg_decrypt_python/
├── main.py
├── README.md
└── requirements.txt
- main.py: 项目的启动文件,包含解密wxapkg文件的主要逻辑。
- README.md: 项目说明文档,包含项目的基本介绍和使用方法。
- requirements.txt: 项目依赖文件,列出了运行该项目所需的Python包。
2. 项目的启动文件介绍
main.py
main.py
是该项目的启动文件,主要负责解密wxapkg文件。以下是该文件的主要功能和代码结构:
import argparse
import os
from Crypto.Hash import SHA1
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Cipher import AES
# 常量定义
WXAPKG_FLAG_LEN = 6
WXAPKG_FLAG = 'V1MMWX'
# 解析命令行参数
parser = argparse.ArgumentParser()
parser.add_argument('--wxid', required=True)
parser.add_argument('--file', required=True)
parser.add_argument('--output', required=True)
args = parser.parse_args()
# 生成AES密钥
key = PBKDF2(args.wxid.encode('utf-8'), args.salt.encode('utf-8'), 32, count=1000, hmac_hash_module=SHA1)
# 读取加密的内容
if not os.path.exists(args.file):
raise Exception('文件不存在')
with open(args.file, mode='rb') as f:
dataByte = f.read()
if dataByte[0:WXAPKG_FLAG_LEN].decode() == WXAPKG_FLAG:
raise Exception('该文件无需解密 或者不是微信小程序wxapkg加密包')
# 初始化密钥
cipher = AES.new(key, AES.MODE_CBC, args.iv.encode('utf-8'))
# 解密头部1024个字节
originData = cipher.decrypt(dataByte[WXAPKG_FLAG_LEN:1024 + WXAPKG_FLAG_LEN])
# 初始化xor密钥 解密剩余字节
xorKey = 0x66
if len(args.wxid) >= 2:
xorKey = ord(args.wxid[len(args.wxid) - 2])
afData = dataByte[1024 + WXAPKG_FLAG_LEN:]
out = bytearray()
for i in range(len(afData)):
out.append(afData[i] ^ xorKey)
originData = originData[0:1023] + out
# 写入解密后的文件
with open(args.output, mode='wb') as f:
f.write(originData)
3. 项目的配置文件介绍
requirements.txt
requirements.txt
文件列出了运行该项目所需的Python包,可以通过以下命令安装这些依赖:
pip install -r requirements.txt
文件内容如下:
pycryptodome==3.10.1
- pycryptodome: 用于加密和解密操作的Python库。
以上是PC微信小程序wxapkg解密项目的详细教程,希望对你有所帮助。