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

ns,sig3,js · 浏览次数 : 21

小编点评

这段代码主要包含以下几个部分: 1. 获取作品列表的API请求:通过访问 https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx,其中 __NS_sig3 是一个异步回调生成的值,用于确保请求的安全性。 2. 加密操作:在API请求中,有一个名为 s() 的函数调用,它接受一个参数。这个参数可能是一个对象或函数的调用,但在这里它返回一个对象,具有 call 方法。这个对象用于对数据进行加密操作。 3. 数据处理:在 s() 函数内部,有一个名为 m() 的函数被调用。m 函数接收三个参数:一个 JSON 字符串 t,一个 cookies 中的 kuaishou.web.cp.api_ph 值 e,以及一个空对象 n。在 m 函数内部,对 JSON 字符串进行加密操作,并将结果添加到 d(i) 后面。 4. 生成签名:在 m 函数内部,还有一段代码用于生成签名。这里涉及到一个名为 i 的变量,它看起来像是经过 MD5 加密的值。这个值来自于对 JSON 字符串、e 和 n 的处理。 5. 定义来源:在代码中找到了 s() 函数的定义,它是由 n.n(o) 返回的。n 是一个对象,而 o 是一个函数,其参数为 7606。从这里可以推断出,7606 可能与 Webpack 或其他框架有关。 6. Webpack 配置:由于代码中提到了 Webpack,我们可以推测这个代码片段可能与 Webpack 有关。为了找到具体的 Webpack 配置,需要进一步分析代码。 总结:这段代码主要涉及 API 请求、加密操作、数据处理和签名生成。要运行此代码,需要了解其背后的原理和概念,如 JSON、MD5、Webpack 等。在实际应用中,需要根据具体情况进行调整和优化。

正文

拿获取作品列表为例

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

与某手创作服务 __NS_sig3 sig3 | js 逆向相似的内容:

某手创作服务 __NS_sig3 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

[XXL-JOB] 分布式调度XXL-JOB快速上手

1.概述 1.1什么是任务调度 我们可以思考一下下面业务场景的解决方案: 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券 某银行系统需要在信用卡到期还款日的前三天进行短信提醒 某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总 以上场景就是任务调度所需要解决的问题 任务

大数据面试SQL每日一题系列:最高峰同时在线主播人数。字节,快手等大厂高频面试题

大数据面试SQL每日一题系列:最高峰同时在线主播人数。字节,快手等大厂高频面试题 之后会不定期更新每日一题sql系列。 SQL面试题每日一题系列内容均来自于网络以及实际使用情况收集,如有雷同,纯属巧合。 1.题目 问题1:如下为某直播平台各主播的开播及关播时间数据明细,现在需要计算该平台最高峰期同时

某一封致过去的信

Letter 前言 貌似是18岁成年以后的第一个儿童节,有点平淡,但是也蛮充实的一天。简简单单写封信吧,可能等6.7再有感慨的时候还会在写点东西。 致你 致我 你好 不知道你对儿童节会有什么样的看法,或许你看着还有5天的高考倒计时心里有些许复杂,面对即将到来的高考,有压力,但更多的一种平轻松的心态,

docker.from_env() 获取docker守护进程时出现 TypeError: load_config() got an unexpected keyword argument 'config_dict' 异常

某天使用python重启docker容器时,出现了一个令人费解的BUG,我的代码为 1 def restart_docker(container_name): 2 # 连接到docker守护进程 3 client = docker.from_env() 4 try: 5 # 获取容器对象 6 con

某公司技术经理媚上欺下,打工人应怼尽怼,嘤其鸣兮,求其友声!

最近的事情大家都晓得了,某公司技术经理媚上欺下,打工人应怼尽怼,不亦快哉!不亦壮哉!所谓媚上者必欺下!古人诚不我欺!技术经理者,公然在聊天群里大玩职场PUA,气焰嚣张,有恃无恐,最终引发众怒,嘿嘿,技术经理,团队领导,原来团队领导这四个字是这么用的:奴媚显达、构陷下属,人文具损、逢迎上意、傲然下欺,装腔作势、极尽投机,父他人之父、慷他人之慨……如此者,可谓“团队领导”也。

[转帖]ESXi主机网卡识别为10Mb导致业务缓慢

某企业所有业务系统及应用运行在由5台安装了ESXi 6.0的服务器组成的虚拟化环境中,已经稳定运行了多年,基本上没有出过问题。 今天下午企业工程师联系我,说单位的业务系统访问很慢。在业务系统中PING网关的延时超过2ms,平常都是小于1ms。近期单位服务器与网络没有改动。 检查发现有台物理主机内存报

一次JSF上线问题引发的MsgPack深入理解,保证对你有收获

某一日晚上上线,测试同学在回归项目黄金流程时,有一个工单项目接口报JSF序列化错误,马上升级对应的client包版本,编译部署后错误消失。 线上问题是解决了,但是作为程序员要了解问题发生的原因和本质。但这都是为什么呢?

某公司自动化测试3面

# 某公司自动化测试3面 > 仅供参阅,并不提供参考答案,上课的时候多数讲解过 > 算法题给了你一个参考,都是力扣上的 ## 一面 ```text 1. 自我介绍 2. 关于自动化:怎么做的,目前的进展,效果如何,遇到的困难 3. 你的框架搭建,最初是考虑了哪些因素去设计的 4. 如何维护自动化ca

「笔记」某移动SRE运维体系交流

痛点 传统竖井式IT架构(封闭、隔离、非标、难运维) X86 服务器硬件稳定性不足 开源软件可靠性不足,且不可控 出了故障,被动救火救不完 转型 由此催生了转型升级的需求: 运维智能(SRE)的转型 SRE运维模式 核心职责 保证: 业务连续性 应用连续性 平台连续性 职责分工 综合运维岗 7*24