使用 pyinstxtractor.py
来处理python打包的exe文件。
python pyinstxtractor.py xxx.exe
这里得需要用同版本的python版本来处理。
如上就是版本不对,所导致的错误: Skipping pyz extraction
当处理后会得到一个文件夹。xxx.exe_extracted
特殊的:如果当打包exe的时候使用了key就需要我们解密。
使用脚本来解密:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import glob import zlib import tinyaes from pathlib import Path
CRYPT_BLOCK_SIZE = 16
key = bytes('00000000new1star', 'utf-8')
for p in Path("./fakekey.exe_extracted/PYZ-00.pyz_extracted").glob("**/*.pyc.encrypted"): inf = open(p, 'rb') outf = open(p.with_name(p.stem), 'wb')
iv = inf.read(CRYPT_BLOCK_SIZE)
cipher = tinyaes.AES(key, iv)
plaintext = zlib.decompress(cipher.CTR_xcrypt_buffer(inf.read()))
outf.write(b'\x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0')
outf.write(plaintext)
inf.close() outf.close()
p.unlink() """ Python 2.7: \x03\xf3\x0d\x0a\0\0\0\0 Python 3.0: \x3b\x0c\x0d\x0a\0\0\0\0 Python 3.1: \x4f\x0c\x0d\x0a\0\0\0\0 Python 3.2: \x6c\x0c\x0d\x0a\0\0\0\0 Python 3.3: \x9e\x0c\x0d\x0a\0\0\0\0\0\0\0\0 Python 3.4: \xee\x0c\x0d\x0a\0\0\0\0\0\0\0\0 Python 3.5: \x17\x0d\x0d\x0a\0\0\0\0\0\0\0\0 Python 3.6: \x33\x0d\x0d\x0a\0\0\0\0\0\0\0\0 Python 3.7: \x42\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0 Python 3.8: \x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0 Python 3.9: \x61\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0 Python 3.10: \x6f\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0 """
|
如上的:key = bytes(‘00000000new1star’, ‘utf-8’) 我们需要修改’00000000new1star‘
这个值需要用pycdc来获取:
这里用pycdc【我是放在我虚拟机里面的能找到,将它copy到该文件夹下】
当我运行完成这个脚本后:就可以了
脚本放的位置:
然后再进文件夹:
uncompyle6 -o 123.py fakekey.pyc
然后得到的123.py就是解密后的东西。