Hook CryptoJS
# Hook_CryptoJS.js — CryptoJS 对称加密参数提取
# 脚本描述
Hook CryptoJS加密库当中的所有 对称&哈希&HMAC算法,例如AES、DES、MD5、SHA等。
# 支持算法
| 算法类型 | 具体算法 |
|---|---|
| 对称加密 | AES, DES, TripleDES, RC4, Rabbit 等 |
| 哈希 | MD5, SHA-1, SHA-256, SHA-512 等 |
| HMAC | HmacMD5, HmacSHA1, HmacSHA256 等 |
# 使用场景
当网站请求/响应中有加密参数时,可以考虑开启本脚本快速解决加密问题,效果:

# 常见问题
# 如何获取到填充/运算模式?
分两种情况:
- 无混淆
无混淆情况下,直接点击输出的填充模式代码就能看到是哪种模式:

运算模式:

其实就是通过上下文判断。
- 有混淆
有混淆的情况下判断可能就比较麻烦,例如猿人学第十八题:https://match.yuanrenxue.cn/match/18

可以看到混淆很严重,看不出采用的是什么运算模式:
这种情况下就可以使用我写的Fuzz对称加密算法解密参数脚本:https://github.com/0xsdeo/Fuzz_Crypto_Algorithms
效果:

成功解密:

# 为什么无法加密/解密?
可能是由于key、iv类型填错,脚本默认只输出hex形式的key、iv:

需注意这一点。
# 为什么开启后控制台没有输出内容?
- 可能由于清除了console.log
如果清除了console.log可以尝试开启hook log脚本防止js重写log方法。
- 没有使用CryptoJS库进行加密
本脚本只针对CryptoJS库进行自吐加密,所以如果网站应用的是其他加密库进行的加密/解密就无法输出内容,如果确认使用的是CryptoJS库进行的加密而无法打印可联系我(vx:I-0xsdeo)。
# 核心原理
参见: