有的时候,用python来解密比用C++快很多,省去了很多建工程的力气。Python是每一个加密解密人员必备的一门语言 :)
下面我们来说说如何使用Pycrypto来解密加密的数据。
步骤一:安装PyCrypto,下载地址我给你准备好了:https://www.dlitz.net/software/pycrypto/。可按照如下步骤安装:
1)将python2.x安装路径加入环境变量path。
2)按照PyCrypto readme 的指示安装 python setup.py build -> python setup.py install -> python setup.py test.最后测试的时候可能会显示有错,没关系,不管它。为 了减少错误,最好下载PyCrypto稳定版。
步骤二:安装好了以后当时是使用了。我写了如下测试脚本:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from Crypto.Cipher import AES
obj = AES.new('lyp62/22Sh2RlXJF', AES.MODE_CBC, 'This is an IV456')#密钥,模式,iv
filepath = sys.argv[1]
bin = open(filepath, "rb").read()
output = obj.decrypt(bin)
open(filepath+".o", "wb").write(output)
#print output
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from Crypto.Cipher import AES
key = '\x00'*16
iv = b'\x4e\x09\x48\x3e\x38\xf5\xff\x72\x80\x12\x7b\x9e\xfb\x5c\x2d\x33'
mode = AES.MODE_CBC
decryptor = AES.new(key, mode, iv)
""" 上例中的key是16位, 还可以是24 或 32 位长度, 其对应为 AES-128, AES-196 和 AES-256. 解密则可以用以下代码进行: """
#decryptor = AES.new(key, mode)
#plain = decryptor.decrypt(ciphertext)
filepath = sys.argv[1]
bin = open(filepath, "rb").read()
output = decryptor.decrypt(bin)
open(filepath+".o", "wb").write(output)
这里顺便说一下我以前会碰到的一个问题:python脚本默认不支持中文编码,为了在脚本中能使用中文路径,可以在脚本开头加上脚本编码# -*- coding: utf-8 -*-。
脚本的功能是读取一个AES加密的数据文件(你可能经常需要从WireShark里扣数据出来),而我们知道密码,这时候就可以这样子解密。解密的结果保存在XXXX.o文件里。
是不是感觉很方便啊。。。