今日网站
aHR0cHM6Ly93d3cuaGFuZ2hhbmdjaGEuY29tL2FnZW5jeS10aW1pbmc=
这个站是返回值加密,写出来就是图个乐呵,毕竟做企业信息查询还是头部的两家给力,信息时效性更高。
加密定位
可以看到请求返回的值中data
部分是加密的
这个时候切换到Initiator
选项卡,可以看到这个请求的调用过程
“除了上面的方法之外,根据请求的类型也可以选择是否使用 xhr 断点调试的方式找到加密
通过分析堆栈可以在feachData
的位置找到解密的代码
打上断点可以看到e
的位置就是请求返回的内容
并且在下一行代码就是明文了
所以整个解密的逻辑就在c["a"].decrypt()
中
加密分析
重新刷新,在c["a"].decrypt()
的位置重新单步进去
可以看到下面的逻辑
这个逻辑的代码就很清晰了
我们直接按照之前教的三要素就可以自己重写这个解密了
1、密钥
就是上面的三个常量拼接出来的字符串
2、填充模式是pkcs7
3、ECB 模式
知道这几个要素,我们在 Python 还原一下这个解密的过程
代码语言:javascript复制import base64
from Crypto.Cipher import AES
encryptData = "h Eh4yR7ppy1uly1B/m..................WvqJ7Tr8qjavnh8e"
key = '3sd&d24h@$udD2s*'.encode()
cipher = AES.new(key, mode=AES.MODE_ECB)
data = str(cipher.decrypt(base64.b64decode(encryptData)),encoding='utf8')
print(data)
这样就可以解密了。