最新某手 __NS_sig3算法 (56位) sig3 | js 逆向

拿获取作品列表为例

https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx

搜索__NS_sig3

发现__NS_sig3是一个异步回调生成的值

s().call("$encode", [i, {suc: function(e) {t(`__NS_sig3=${e}`)},err: function(t) {e(t)}}])

具体逻辑就是:

  • s().call("$encode", [...]): 这个部分表示调用对象 s() 上的 call 方法,并传递 $encode 作为第一个参数。这里的 s() 可能是某个对象或函数的调用,它返回了一个对象,该对象具有 call 方法。不明白call方法的可以参考这篇文章https://juejin.cn/post/7158686309211439141
  • "$encode": 这是传递给 call 方法的第一个参数
  • [i, { ... }]: 这是传递给 call 方法的第二个参数,是一个数组。数组的第一个元素 i 就是要加密的原数据。第二个元素是一个包含 sucerr 回调函数的对象。

打断点到s()...这里,看看i是什么

看起来i也是一个加密的值,有点像md5加密之后的样子,往上找i生成的地方

const i = m(t, e, n);

其中t是json字符串, e是cookies中的kuaishou.web.cp.api_ph的值, n是一个空对象

进到m函数里面发现e被JSON序列化之后有被加到了d(i)后面,最终调用a()(s)被加密出来。看到这里就可以愉快的扣js了,哪里没有补哪里。就不过多赘述了。

搞定i之后就可继续往下走了,既然__NS_sig3是通过s().call()生成的,自然我们就要搞清楚s()是在哪里定义的

找到s的定义s = n.n(o) 再找到o的定义o = n(7606),此时我们发现7606这个东西好眼熟,没错就是我们的老朋友webpack,接下来就开始扣webpack,如何扣webpack的步骤这里就不赘述了,网上的教程一抓一大把。

最后验证一下结果

Nice ,接下来放到python里面跑一下看看是否能成功

  • 先来一个错误的sig看看什么样子

  • 再试试我们自己生成的sig的结果

完美运行~

该部分算法和app中的某部分雷同

**本文仅供学习参考,如有问题询问或有需要可留言,或加q 1018866051 **请备注算法交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值