首页 > 其他分享 >某手创作服务 __NS_sig3 sig3 | js 逆向

某手创作服务 __NS_sig3 sig3 | js 逆向

时间:2024-07-11 09:40:46浏览次数:6  
标签:__ 加密 js sig3 call encode NS

拿获取作品列表为例

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 **请备注算法交流

标签:__,加密,js,sig3,call,encode,NS
From: https://www.cnblogs.com/thankcat/p/18295438

相关文章

  • 从实时监控到风险智能预警:EasyCVR视频AI智能监控技术在工业制造中的应用
    随着科技的不断进步和工业制造领域的持续发展,传统的生产管理方式正逐渐转型,迈向更加智能、高效和安全的新阶段。在这个变革过程中,视频智能监控技术凭借其独特的优势,成为工业制造领域的管理新引擎,推动着从“制造”到“智造”的管理转型升级。一、EasyCVR视频智能监控技术与方案的......
  • ROME 反序列化
    ROME反序列化rome是什么ROME是主要用于解析RSS和Atom种子的一个Java框架。ROME是一个可以兼容多种格式的feeds解析器,可以从一种格式转换成另一种格式,也可返回指定格式或Java对象。ROME兼容了RSS(0.90,0.91,0.92,0.93,0.94,1.0,2.0),Atom0.3以及Atom1.0fe......
  • laravel:访问es,索引和搜索(Laravel 11.15.0)
    一,安装需要的库1,包的地址:https://packagist.org/packages/elasticsearch/elasticsearch2,文档地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html3,用composer从命令行安装[lhdop@blogdignews]$composerrequireelasticsearch/ela......
  • Python(glob()、rglob())
    目录rglob()方法glob()方法具体区别递归搜索示例使用rglob()递归搜索所有.txt文件使用glob()仅在当前目录搜索.txt文件在当前目录和子目录中搜索.txt文件(通过glob和**组合)总结在Python中,rglob()和glob()都是pathlib.Path类的方法,用于匹配指定模式的文件或......
  • eBPF 容器持久化map到宿主机上
    问题现象k8s上启动pod后,使用主机网络的容器,加载eBPF程序到网口上,持久化map只能保存在容器文件系统/sys/fs/bpf中。容器复位后,新容器与原来eBPF程序使用的不是同一个map。问题分析新容器使用新的文件系统,无法找回原来的/sys/fs/bpf挂载点,需要持久化到宿主机上。k8s挂载传播,实现......
  • 线段树分治学习笔记
    线段树分治是一种通过线段树维护时间轴,实现一些可撤销的信息维护问题的手段。线段树分治是离线算法。具体地,对于若干个修改与询问,按照时间戳像区间修改一样挂在线段树的节点上,然后遍历整棵线段树,将节点上的操作计入贡献,对于一个时间戳为\(t\)的询问,线段树上区间\([t,t]\)即......
  • 中小学校园EasyCVR视频综合监管方案:构建安全、智能的校园环境
    一、背景需求分析随着科技的快速发展,校园安全问题日益受到社会各界的关注。尤其是在中小学校园中,学生的安全更是牵动着每一个家庭的心。为了更有效地保障学生的安全,提高校园安全管理水平,视频监控系统在中小学中的应用越来越广泛。在当今日益重视学校安全的背景下,为满足校园安全......
  • AI出问题了?
    出问题的AI在这里运行图片正常应该是这样: 正常的AI 我也放链接了,输入的四个数字一定要从小到大输入,难度系数和等级才会正确给出!......
  • iframe 使用以及互相传值
    <divclass="aiWrite"><iframev-if="aiWriteShow"ref="iframeRef"style="width:100%;min-height:calc(100vh-216px)"name="iframePage":s......
  • 前端如何控制并发请求
    前端如何控制并发请求前端控制并发请求的关键思路api设计代码实现关键代码解读循环和Promise结合是怎样使用的呢?完善api,让其更加易用把上述功能封装成`p-control`npm包发布小结什么情况需要前端控制并发请求,在需要多次才能请求完所需数据的时候。比如接口一......