码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 某手创作服务 __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, {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 就是要加密的原数据。第二个元素是一个包含 suc 和 err 回调函数的对象。

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

    作者:Hovey

    出处:https://www.cnblogs.com/thankcat/p/18295438

    版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

  • 相关阅读:
    Latex & Overleaf 写作问题记录
    服务器怎么买,腾讯云服务器购买三种流程介绍
    webpack相关面试题
    Cholesterol-PEG-DBCO,CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔无铜点击反应
    python-(2)变量、基础数据类型、注释和简单用户交互
    BMP编程实践1:C语言实现bmp位图分析与创建
    javaIO流01:文件,创建文件三种方式,获取文件相关信息,目录操作
    svnsync实现版本库的同步备份
    Python也可以实现Excel中的“Vlookup”函数
    JAVA 常见算法(选择排序,二分查找)
  • 原文地址:https://www.cnblogs.com/thankcat/p/18295438
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号