抖音Xbogus算法简要分析,Python实现

文章详细描述了作者如何通过xhr定位、代码替换和日志分析,揭示了抖音评论接口的加密过程,包括两次MD5、RC4加密以及Base64编码,展示了加密算法的关键步骤和特征值的处理。
摘要由CSDN通过智能技术生成

本文仅记录我分析过程,仅供学习参考,如有涉及侵权联系本人删除

如果有任何问题,欢迎交流指导

很久没关注抖音了,不清楚算法什么时候进行了更新,快速过一遍。

一、准备工作

通过xhr断点定位到VMP代码

把这个js文件使用浏览器的替换功能进行替换,并使用v_jstoole的AST混淆解密中的 ”仅变量压缩“功能,转换下变量名,看上去美观一点

再把这个地方的代码手动修改下,方便断点。这里对w[0]进行额外判断,只有当需要加密的明文符合评论接口的时候才进行断点

考虑到还有其他地方存在apply调用,在这份js头部添加一段hook代码,hook Function.prototype.apply

// 保存原始的 Function.prototype.apply 方法
const originalApply = Function.prototype.apply;
​
// 修改 Function.prototype.apply 方法
Function.prototype.apply = function (thisArg, args) {
    // 调用原始的 apply 方法来执行函数
    const result = originalApply.call(this, thisArg, args);
​
    // 输出结果
    if (window.$_islog) {
        try {
            console.log("Function:", this, "\n 参数:", args, "\n结果:", JSON.stringify(result));
​
        } catch (e) {
            console.log("Function:", this, "\n 参数:", args, "\n结果:", result);
        }
    }
    // 返回结果
    return result;
};
​
log = console.log; ; ; ;

二、分析

拿到一分简略的日志后,保存至本地,先大概过一遍

跳过前面环境监测的日志,发现了类似md5的值

在js文件中搜下常见的一些特征值,比如0x674523011732584193

并且他还在_0xa653c7的原型下,在这里再加两个日志点,

再次拿到一份日志,可以看到这里对明文params进行了两次md5并转成16进制的数组

通过python验证,生成的数组一致

其中"d41d8cd98f00b204e9800998ecf8427e"是md5("")的结果,并且下文再次对该md5进行加密,此处只有当body不为空时才有数据,算法与上文params加密一致

再往下看,发现'\x00\x01\f'作为key,对ua进行了rc4加密

具体可以进到函数,问问GPT

随后用rc4加密后的值进行Base64,每三个字节输出四个字符

不确定的话,可以通过Base64运算完成之后的结果进行校验。并且下文对该结果再次进行了md5

在下文,取出了时间戳和canvas

经过一系列计算拿到长度19的数组,转为字符串,用 ÿ 当作key,进行rc4加密。这个长度19的数组,除了几个固定值之外,其他数字根据前文得到,具体规则可参考网上其他大佬发的文章,生成规则一直没变过,不在这展开。

随后,把固定值 \u0002 和 ÿ 添加到该字符串头部

最后,用了一个改了编码表的Base64进行加密,生成Xbogus

三、总结

1.对params两次md5,转16进制数组

2.对body两次md5,转16进制数组

3.对ua rc4加密后,在进行标准Base64,再进行md5,转16进制数组

4.生成19位数组(补充:这个数组包含时间戳和canvas信息),转字符

5.对第四步结果进行rc4

6.拼接字符

7.改Base64编码表,对第六步结果进行Base64

四、测试

http://39.107.101.62:8111/docs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值