某哪儿加密算法分析与风控分析
算法部分
抓包分析
- 抓包得到的值 , 经过多轮调试 , 可以确定这些值为主要校验的参数 , 其余参数对业务数据无影响
- 其次我们来看请求参数
__m__ |
3c49b916151f5a01b6980faaca2aac32 |
---|---|
Bella |
1654604625968##8286fee7fe61bf41b2403b33819085d1cc82904………. |
- 优先关注这两字段 , 其余字段皆无加密 , st为时间戳
请求参数分析
__m__来源
- 比较容易找到的是
__m__
- js代码由webpack打包 , 并无使用强力混淆
- 直接跟函数即可
- 加密数据来源于一个token , 一个qttime
- token来源很容易确认 , 为服务器返回时自动生成的数据 , 且为空也可正常发送
- qttime的值也为服务器更新cookie时间后 , 得到的一个值
- 最后两个参数经过此加密函数 , 由时间戳决定执行哪个加密函数
webpack还原M值
- 由于webpack的特性 , 我们找到包加载器即可
- n为webpack的加载函数
- 初始化时 , 对应i函数
- 我们将此函数设置为全局
- 将代码载入v8引擎 , 尝试主动调用加密算法的包
1 | _require(331).default.encrypt() |
- 此时结果已正常返回 , 可以看到之前的列表还有报错提示 , 可能依赖了其他UI库或者数据之类的 , 但webpack加载器还是可以正常使用 , 那么就不需要过度处理
- m值解决 , 剩余Bella字段 , 采用了obf的混淆 , 我们明天再看 , 这篇文章会持续更新 , 估计一周内更新完成
This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://www.tisoz.com/2022/08/09/%E6%9F%90%E5%93%AA%E5%84%BF%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90%E4%B8%8E%E9%A3%8E%E6%8E%A7%E5%88%86%E6%9E%90/