【JS逆向】2024年9月21日-小红书最新x-s-common算法还原

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

抓包分析

我们先抓包看下x-s-common长什么样子,看不懂,直接F12开始分析。

在这里插入图片描述

逆向分析

打开F12, 搜索"X-S-Common"定位到代码,在图中所示位置打下断点

在这里插入图片描述
操作页面,使断点断下,查看明文变量v

在这里插入图片描述

{
	"s0":5,
	"s1":"",
	"x0":"1",
	"x1":"3.7.8-2",
	"x2":"Windows",
	"x3":"xhs-pc-web",
	"x4":"4.34.0",
	"x5":"1920905cb73t8qsfkhoomdhscvlv...", // cookie中的a1
	"x6":1726826121766,  // x-t
	"x7":"XYW_eyJzaWduU3ZuIjoiNTUiL...",  // x-s
	"x8":"I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLg...",  // 浏览器指纹 写死
	"x9":1571604014, // 未知
	"x10":8  // x-s-common 生成次数
}

向上查看x9在哪里生成,打下断点,可以看出是将c、l、h拼接后传入encrypt_mcr函数

在这里插入图片描述
断点断下后,我们直接进入encrypt_mcr函数内部,并在第一行打下断点

在这里插入图片描述

可以看出,这个函数通过一个for循环对字符串进行了一系列操作,我们直接将整个函数encrypt_mcr扣下来,缺啥补啥即可

在这里插入图片描述

x9分析完了,我们接着看x-s-common,就是json序列化后进行utf8和base64编码

e.headers["X-S-Common"] = encrypt_b64Encode(encrypt_encodeUtf8(stringify_default()(v)))

这里我们也直接扣这两个函数即可encrypt_b64Encodeencrypt_encodeUtf8,最终就扣下来这几个函数(encrypt_crc32不用)

在这里插入图片描述

注意两个修改的地方:

  • (0, esm_typeof.A)(t)改成typeof t
  • parse_int_default()改成parseInt

代码

解混淆之后代码只有50多行

在这里插入图片描述

算法获取以及相关问题可以私聊作者交流~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值