webmsxyw x-s分析

news2024/12/23 17:22:54

近期又更新了,先是改了x-s生成,然后又加上了a1校验。

后面可能会全参校验,比如再加上gid、deviceId、profileData、x-s-common、smidV2之类。

估计以后不能写了,大家且看且珍惜吧。之前相关的文章都被下架了

危!


文章目录

    • X-s
    • window._webmsxyw
      • Shanks
      • decode
      • _garp_dc33b
    • 补环境
    • X-s生成流程
    • 备注


X-s

还是先找x-s。全局搜关键词"X-s"

在这里插入图片描述

c = (a || void 0 !== window._webmsxyw ? window._webmsxyw : sign)(u, i) || {};

if a:
    return a
elif "window._webmsxyw" in globals() and window._webmsxyw is not None:
    return window._webmsxyw
else:
    return sign

在这里插入图片描述

可发现feed接口没走sign,走的方法是在 window._webmsxyw = _garp_dc33b

在这里插入图片描述
可以测试下把 window._webmsxyw置为null是否能正常返回。
在这里插入图片描述


window._webmsxyw

跳转过去能发现代码混淆过了,并且自执行了,不便阅读。

Shanks

先看外部Shanks。

(function() {
    function Shanks() {
        var _garp_d6c76 = 2147483647
          , _garp_a0c6d = 1
          , _garp_33d28 = 0
          , _garp_cb56b = !!_garp_a0c6d
          , _garp_35e13 = !!_garp_33d28;
        return function(_garp_d3e7c, _garp_d0ad1, _garp_8d381){}
        ;
    }
    ;Shanks()(window, {});
}
)();

这段代码定义了Shanks函数,定义了一个闭包,返回一个匿名函数,并使用立即执行函数将其调用。
在调用Shanks函数时,它接受两个参数,分别是window和对象{}。


decode

不难看出 decode 是一段实现了 Base64 解码的方法,包括了将 Base64 编码的字符串解码为正常字符串的逻辑,以及处理 Unicode 字符的逻辑。

var decode = function(j) {
    if (!j) {
        return ""
    }
    var n = function(e) {
        var f = []
          , t = e.length;
        var u = 0;
        for (var u = 0; u < t; u++) {
            var w = e.charCodeAt(u);
            if (((w >> 7) & 255) == 0) {
                f.push(e.charAt(u))
            } else {
                if (((w >> 5) & 255) == 6) {
                    var b = e.charCodeAt(++u);
                    var a = (w & 31) << 6;
                    var c = b & 63;
                    var v = a | c;
                    f.push(String.fromCharCode(v))
                } else {
                    if (((w >> 4) & 255) == 14) {
                        var b = e.charCodeAt(++u);
                        var d = e.charCodeAt(++u);
                        var a = (w << 4) | ((b >> 2) & 15);
                        var c = ((b & 3) << 6) | (d & 63);
                        var v = ((a & 255) << 8) | c;
                        f.push(String.fromCharCode(v))
                    }
                }
            }
        }
        return f.join("")
    };
    var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
    var p = j.length;
    var l = 0;
    var m = [];
    while (l < p) {
        var s = k.indexOf(j.charAt(l++));
        var r = k.indexOf(j.charAt(l++));
        var q = k.indexOf(j.charAt(l++));
        var o = k.indexOf(j.charAt(l++));
        var i = (s << 2) | (r >> 4);
        var h = ((r & 15) << 4) | (q >> 2);
        var g = ((q & 3) << 6) | o;
        m.push(String.fromCharCode(i));
        if (q != 64) {
            m.push(String.fromCharCode(h))
        }
        if (o != 64) {
            m.push(String.fromCharCode(g))
        }
    }
    return n(m.join(""))

_garp_dc33b

简单调了一下,大面积的自增运算,让人看不下去。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


补环境

直接把上面代码copy到本地先补环境看看,看日志要补的东西挺多,具体怎么用的没细看。(后面没用的我会删掉)

RegExp、Math、indexedDB、eval、localStorage、isNaN、unescape、Array、Function、setInterval、encodeURIComponent、decodeURIComponent、CanvasRenderingContext2D、HTMLCanvasElement、navigator、location、String、Date、Object、screen、document、

还有追加的 openDatabase、devicePixelRatio、AudioContext、webkitAudioContext、setInterval、getAttribute、xhsFingerprintV3

主要都是window对象的方法和属性,有两处报错的地方,补好后try-catch一下。
在这里插入图片描述

另外输出中还看到了process,先不管这个。

等到报错:
在这里插入图片描述
补到这里就快了。

在这里插入图片描述

还是catch下,把_webmsxyw给到window上。

在这里插入图片描述

这里补好就可以生成了。
在这里插入图片描述
但是发现本地生成的和浏览器的差了很多位数,调试发现是由于cookie中没有xsecappid和a1参数。

把cookie加上后发现还是少了24位,再检查下发现本地生成的x-s中没有加 “signVersion”:“1” 。

signVersion追加在localStorage中,默认是1。
在这里插入图片描述

简单一点,可以做类型判断然后给上值,注意signVersion的值是string类型。

 if (_garp_a3d40 && typeof _garp_a3d40==="object" && _garp_a3d40.hasOwnProperty('signVersion')){
     _garp_a3d40["signVersion"] = "1"
 }

现在生成的位数就一致了,但是测了下还是不可用。


X-s生成流程

继续调试分析,看流程是先去生成X1,然后构建payload。
payload由x1、x2、x3、x4组成。x1是api+formdata md5生成的,x2固定,x3是a1,x4是时间戳。
在这里插入图片描述
拼接为:x1=72ff6a81a0474a774ad1db6681c9614a;x2=0|0|0|1|0|0|1|0|0|1|1|0|0|0|0;x3=188392ccdbbk41ajfrbba1ngli7wcccg88o04w12v50000303000;x4=1684603371781;

然后做一些编码和加密生成密文payload,payload生成后再跟几个参数拼起来。

在这里插入图片描述

拼接完进行base64编码,然后和XYW_拼起来生成了最终的X-s。

在这里插入图片描述

流程并不复杂,现在需要找到本地生成不可用的原因,排除了请求报文和生成环境的可能后,需要从payload加密的位置入手。

前面已经看了x2固定,x3是a1,x4是时间戳。大概率问题在x1上面。确定下md5结果是否和浏览器一样。

在这里插入图片描述

控制台覆盖JS文件,然后查看输出。

在这里插入图片描述

一看不太对,feed接口在本地的x1是7开头的,控制台x1是1开头的。

本地 Nodejs 和浏览器的 MD5 算法结果是相同的,那说明本地md5前的参数不对。

本地x1一直是72ff6a81a0474a774ad1db6681c96,浏览器是会根据不同作品ID变化的。

调试发现,本地x1参数生成时没有加formdata。
在这里插入图片描述
确认原因发现是我在调用的时候传了string类型的formdata,修改为对象就能解决问题。

window._webmsxyw("/api/sns/web/v1/feed",{"source_note_id":"62d4e8a800000000120019dd"})

在这里插入图片描述

改完发现还是不能用。。。继续调试,重新检查,结果发现本地x2和浏览器不一样,应该是有环境没补上,省时间就直接写死吧。
在这里插入图片描述
判断后赋值。

   if (_garp_a3d40 && Array.isArray(_garp_a3d40)){
         const lastElement = _garp_a3d40[_garp_a3d40.length - 3];
            if (typeof lastElement === "object" &&  lastElement.hasOwnProperty("key")&& lastElement.key === "x2") {
               _garp_a3d40[_garp_a3d40.length - 3].value = '0|0|0|1|0|0|1|0|0|0|1|0|0|0|0'
            }
  }

然后再将时间戳固定后,生成的x-s和浏览器一致。
在这里插入图片描述


有插件检测和一些hook检测。注意还有个 crawler-spam ,用的异常点检测,影响调试。

在这里插入图片描述

如果断到这部分直接跳过,重试吧。

在这里插入图片描述


备注

注意请求时的a1要和xs生成时的a1一致,然后注意formdata参数格式的问题。

大家加油, 本文内容建立在feed接口上,gid和web_session注册不再说了,其他接口自行修改。

有问题欢迎留言,估计文章过几天又被下架了 。


另外,祝更新签名的你也好,O.o
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中小企业热衷于做网络营销的原因有哪些?

随着互联网的快速发展&#xff0c;网络营销已经成为了现代企业营销中不可或缺的一部分。在这个过程中&#xff0c;中小企业热衷于网络营销的原因也越来越多地被人们所关注。那么&#xff0c;中小企业为什么热衷于网络营销呢&#xff1f;下面就为大家详细阐述。 一、网络营销成本…

落地包体积监控,用Kotlin写一个APK差异分析CLI

引言 当谈到包体积优化时&#xff0c;网上不乏优秀的方案与文章&#xff0c;如 混淆、资源、ReDex、R8、SO 优化等等。 但聊到 包体积监控 时&#xff0c;总是感觉会缺乏落地性&#xff0c;或者总是会下意识认为这可能比较麻烦&#xff0c;需要其他部门连同配合。通常对于有A…

Spring的定义和创建,使用

前言&#xff1a; 我们常说的Spring就是Spring Framework(Spring框架),Spring支持广泛的应用场景&#xff0c;可以让Java企业级的应用程序开发起来更简单。 目录 一.Spring的定义&#xff1a; 1.1&#xff1a;IOC 1.2&#xff1a;DI 二&#xff1a;Spring的创建 三&…

【JavaEE进阶】第五节.第一个SpringBoot项目的创建

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录 前…

赛宁首创革新赛制助力人才培养 | 第十六届全国大学生信息安全竞赛-创新实践能力赛全面启动!

​​为积极响应国家网络空间安全人才战略&#xff0c;加快攻防兼备创新人才培养步伐&#xff0c;实现以赛促学、以赛促教、以赛促用&#xff0c;推动网络空间安全人才培养和产学研用生态发展&#xff0c;由国防科技大学与中国科学技术大学联合承办的第十六届全国大学生信息安全…

你是不是在担心,ChatGPT写出的文字被其它AI识别?

文 / 高扬&#xff08;微信公众号&#xff1a;量子论&#xff09; 最近不少人问我一个道听途说的事情&#xff1a;听说已经有AI工具能够识别是不是ChatGPT写的文字了? 看来必要写篇文章&#xff0c;通过摆事实&#xff0c;为大家压压惊。 在赌场里&#xff0c;能抓老千的人一定…

2023年湖北中级工程师职称申请全流程,你知道吗?启程别告诉你!

2023年湖北中级工程师职称申请全流程&#xff0c;你知道吗&#xff1f;启程别告诉你&#xff01; 中级职称评审其实是有几个阶段的&#xff0c;职称申请全过程&#xff0c;启程别告诉你&#xff0c;让你评职称少走弯路哟&#xff1a; 第一阶段&#xff1a;准备阶段 第二阶段&…

【JavaEE进阶】——第六节.SpringBoot配置文件介绍

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录 前…

深度学习框架-Caffe:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术&#xff0c;已经在许多领域中得到广泛的应用&#xff0c;如计算机视觉、自然语言处理、语音识别等。在深度学习中&#xff0c;深度学习框架扮演着重要的角色。Caffe是一种广泛使用的深度学习框架&#xff0c;它在许多方面都有所改进&#xff0c…

基于Android的运动健身减肥管理系统设计与实现

一、项目介绍​ Android客户端功能描述&#xff1a; 1&#xff1a;登录注册&#xff1a;第一次输入用户名密码之后&#xff0c;再次打开登录页面&#xff0c;页面上自动填充上次输入的用户名和密码&#xff0c;登录使用图形验证码验证&#xff0c;登录成功之后&#xff0c;再…

两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码

目录 摘要&#xff1a; 算法设计&#xff1a; WOA总体流程图如下&#xff1a; 增强型WOA&#xff08;E-WOA&#xff09; 仿真运行效果&#xff1a; 完整程序&#xff1a; 摘要&#xff1a; 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯…

PM861K01 3BSE018105R1协作机器人机械臂的每个轴上会安装扭矩传感器,用于测量轴电机和变速箱内的机械张力

​ PM861K01 3BSE018105R1协作机器人机械臂的每个轴上会安装扭矩传感器&#xff0c;用于测量轴电机和变速箱内的机械张力 机器人在工业领域已经存在了几十年的时间&#xff0c;但技术创新正在推动全新一轮的工厂自动化趋势。对于那些曾经负担不起&#xff08;或者不需要&…

Spring 中 @NotEmpty、@NotBlank、@NotNull,傻傻分不清楚!

1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.5.RELEASE</version> </dependency>NotEmpty、NotBlank、NotNull 包的位置&#xff1…

智驾芯片市场要“变天”,这家中国厂商如何成为“量产先锋”?

中国智能驾驶芯片的量产之战&#xff0c;正在高歌猛进。 5月19日&#xff0c;黑芝麻智能宣布获得一汽红旗下一代FEEA3.0电子架构平台项目量产智驾芯片定点。据了解&#xff0c;基于黑芝麻智能华山二号A1000L系列芯片&#xff0c;一汽红旗将打造非分时复用的高性价比行泊一体自…

OpenHarmony社区运营报告(2023年4月)

本月快讯 • 2023年4月9日&#xff0c;OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;3.2 Release新版本发布。相比一年前的OpenHarmony 3.1 Release版本&#xff0c;新版本的系统能力、系统整体性能、稳定性和安全性都进一步得到提升和完善&#xff1b…

小兔鲜项目----vue3入门

目录 认识Vue3 为什么需要学Vue3? Vue3组合式API体验 Vue3更多的优势 使用create-vue搭建Vue3项目 认识 create-vue 使用create-vue创建项目 熟悉项目目录和关键文件 组合式API - setup选项 setup选项的写法和执行时机 setup选项中写代码的特点 组合式API - reactive和…

SEO优化需要天天更新文章吗?

SEO优化并不要求每天都更新文章。 更新频率取决于你网站的内容类型、目标受众和业务需求。以下是一些建议&#xff1a; 高质量内容&#xff1a;关键是提供有价值且吸引人的内容。不要为了更新而随意发布低质量或重复的内容。确保你的文章有深度、独特性和相关性&#xff0c;以…

出现小红书负面笔记怎么维护,需要注意什么

很多时候&#xff0c;我们在品牌发布的过程中&#xff0c;都会遭受到来自各方不同的恶意。比如&#xff0c;品牌在小红书遇到同行或者写手恶意笔记&#xff0c;这个时候&#xff0c;大家肯定想要的就是不要负面笔记。今天来和大家分享下出现小红书负面笔记怎么维护&#xff0c;…

C++程序在Windows系统上启动失败与运行卡死问题排查实战

目录 1、VS2017默认编译出来的程序&#xff0c;不支持XP系统 1.1、新版本软件为什么要选择VS2017&#xff1f; 1.2、VS2017如何配置才能编出支持XP系统的程序&#xff1f; 1.3、最终选择使用VS2010编出的版本 2、程序在XP系统中启动报错&#xff0c;无法启动 2.1、提示在…