JS逆向 | 某物得志请求头sign加密

声明:本文只作学习研究,禁止用于非法用途,否则后果自负。如果侵权到了您的权益,请立即联系我删除!

前言

这次来分析一下某物得志的请求头参数加密。

目标网站:aHR0cHM6Ly9oNS53YW53dWRlemhpLmNvbQ==

抓包分析

打开主页不断往下翻页,可以看到接口详情中有有几个kl开头的参数,如图所示。

其中需要重点关注的是kl_sign,这一看就是加密过的🤔。

加密分析

全局搜索kl_sign,进到这个位置,_这个对象里就有请求头里的一些参数。

既然这里定义了_,那肯定有用到的地方,先在这个switch case里用到_的地方都打上断点。

重新进一下页面,程序先断在了上面打的第一个断点位置,然后跳到下一个断点:

不断按F10向下运行,并观察变量的值,然后发现D就是kl_sign的值。

所以只需要分析D是如何生成的就OK了😋。

28279行代码进行了处理,不好直接看出来,还原出来是这样的:

D = pn['a']['sign'](w, U, N)


这里的w是时间戳,U是请求时发送的payload,而N就是一个包含kl_pathkl_trace_idkl_device_id的一个Map,暂时先不用管怎么弄。

我们进到pn['a']['sign']方法里看看。

发现它是生成了几个值,然后再传到oe方法里,我们继续跟到oe方法里面看看。

最终生成kl_sign的地方在这里:

将其还原一下,再看就简洁多了。

return ee['SignParamEnums']['AUTHORIZATIONHEADER_ALGORITHM'] + "=" + ee['SignParamEnums'].ALGORITHM + '/' + ee['SignParamEnums']['AUTHORIZATIONHEADER_SIGNEDHEADERS'] + "=" + m['toString']() + '/' + ee['SignParamEnums']['AUTHORIZATIONHEADER_CREDENTIAL'] + '=' + O + "/" + ee['SignParamEnums']['AUTHORIZATIONHEADER_SIGNATURE'] + '=' + _

几个未知的变量,分别是eemO_,下面分别进行分析。

  • ee

    有2种方法,一种是网上翻,找到定义ee的地方,然后下断点,单步进去找到ee的具体值,另外也可以直接搜索ee里的属性名。

    找到ee如下:

  • m

    m是在这里定义的,然后将之前传进来的Mapkey拼接在一起。

  • _

    _是在这里生成的,

    这里说起来比较麻烦,就不细说了,逻辑大概就是先将ee['SignParamEnums']['SIGNSECRETKEY'] + ee['SignParamEnums']['SIGNSALT'] + t['signVersion']拼接起来做个MD5加密,作为后续2次HMACSHA256加密的密钥。然后将之前传进来的几个值放到Map(也就是m)里,再将之前传进来的payload做一次HMACSHA256加密,也放到m里,然后将m的键值对拼接起来整体做一次HMACSHA256加密,得到最终的_

  • O

    O是在这里生成的,

    还原一下就是:

    O = t['timestamp'] + "_" + ee['SignParamEnums']['SIGNEDPARAM_END'];
    

至此,kl_sign的还原就完了,核心就是1次MD5和2次HMACSHA256加密。

还有一个kl_trace_id,其实这个就是个uuid,可以直接用网站给的,当然想自己生成也可以。

回到第一个断点的地方,也就是这里。

T就是kl_trace_id,将生成T的代码简化一下,

T = dn['generateUUID']()

进到这个方法里看看,

要还原的话也很简单。

kl_signkl_trace_id都解决了,接下来就是扣代码或还原的事了。这里扣起来其实还挺麻烦的,还不如直接python还原来得快🙃。

运行效果:

代码放在github(传送门)了,如果对你有帮助可以点个star🤗。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值