声明
本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关
前言:这次的案例主要用到对加密的内容解密
准备工作
目标:http://jzsc.mohurd.gov.cn/ddata/company
分析过程:
1.抓包:点击查询可以看到只返回了一个包,打开发现返回数据是加密的
2.分析加密位置:
发现async是异步加密,一般都用JSON.prase函数解密,直接搜发现。可疑地方t.data(这里在app开头的文件)还有一些其他的文件也有关键字,通过断点尝试发现不是我们要的。
3.解密:
我们可以发现返回数据是被h函数加密的,跟进去发现h函数是一个AES加密,所以我们只需要找到它的key,iv,和模式就可以自己本地实现解密。
根据我扒下来的函数
a = d.a.AES.decrypt(n, f, {
iv: m,
mode: d.a.mode.CBC,
padding: d.a.pad.Pkcs7
})
可以清楚看到key是f,iv是m,n是传入加密数据,网上看可以发现 f 和 m 都是写出来了。模式是cbc
4最终代码:
#许小川
from Crypto.Cipher import AES
response =""#密文数据
f = "jo8j9wGw%6HbxfFn"# 秘钥
m = "0123456789ABCDEF"# 偏移
# 转码为字节
m = bytes(m,encoding="utf-8")
f = bytes(f,encoding="utf-8")
# 创建一个AES算法 秘钥 模式 偏移
cipher = AES.new(f, AES.MODE_CBC, m)
# 解密
decrypt_content = cipher.decrypt(bytes.fromhex(response))
result = str(decrypt_content, encoding='UTf-8')
print(result)
#我们直接本地实现AES解密,直接把加密数据放到respond就可以机密成功了
总结:
至此本次案例就结束了,这个案例还是很适合练手的,熟练了十分钟搞定。如果大家有哪些好玩的网站或者不懂的问题可以直接私信我,一起交流学习。希望获得一个(你懂的)。