某哪儿加密算法分析与风控分析

Author Avatar
Tisoz 8月 09, 2022
  • 在其它设备中阅读本文章

算法部分

抓包分析

image-20220809010725959

  • 抓包得到的值 , 经过多轮调试 , 可以确定这些值为主要校验的参数 , 其余参数对业务数据无影响
  • 其次我们来看请求参数

image-20220809010841141

__m__ 3c49b916151f5a01b6980faaca2aac32
Bella 1654604625968##8286fee7fe61bf41b2403b33819085d1cc82904……….
  • 优先关注这两字段 , 其余字段皆无加密 , st为时间戳

请求参数分析

__m__来源

image-20220809011242327

  • 比较容易找到的是__m__
  • js代码由webpack打包 , 并无使用强力混淆
  • 直接跟函数即可

image-20220809011346234

  • 加密数据来源于一个token , 一个qttime
  • token来源很容易确认 , 为服务器返回时自动生成的数据 , 且为空也可正常发送

image-20220809011617965

  • qttime的值也为服务器更新cookie时间后 , 得到的一个值

image-20220809011702589

  • 最后两个参数经过此加密函数 , 由时间戳决定执行哪个加密函数

webpack还原M值

  • 由于webpack的特性 , 我们找到包加载器即可

image-20220809011940487

  • n为webpack的加载函数

image-20220809012055465

  • 初始化时 , 对应i函数

image-20220809012222339

  • 我们将此函数设置为全局
  • 将代码载入v8引擎 , 尝试主动调用加密算法的包

image-20220809012622735

1
2
_require(331).default.encrypt()
// 0144712dd81be0c3d9724f5e56ce6685
  • 此时结果已正常返回 , 可以看到之前的列表还有报错提示 , 可能依赖了其他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/