【作者主页】:小鱼神1024
【知识星球】:小鱼神的逆向编程圈
【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请联系作者立即删除!
前言
今天不忙,分析一下某鱼、某宝的 sign 签名算法,记录一下。
前置分析
在请求参数中,发现有 sign 参数,如下:

如果请求不携带 sign, 会提示:{"api":"mtop.taobao.idlehome.home.webpc.feed","data":{},"ret":["FAIL_SYS_ILLEGAL_ACCESS::非法请求"],"v":"1.0"}
逆向分析
通过全局搜索 sign 关键字,找到 sign 参数的生成位置,如下:

打个断点,重新请求,如下:

发现 sign 参数是 i(d.token + "&" + j + "&" + h + "&" + c.data) 得到的。
其中 token 是来自 cookie 中的 _m_h5_tk, j 是时间戳,h 是 appKey 为定值,data 是请求参数。
那么 i 函数应该就是 sign 的生成函数了,如下:

将其扣下来。如下:

其中固定时间戳,经过对比,发现 sign 签名和网站上的 sign 签名一致。
相关的js会放到知识星球里,仅供交流学习使用,有需要的自取!
参数验证
写个小例子,验证下生成的参数是否正确,如下:

搞定!!
如果还有什么疑问,请在知识星球里留言。