某短视频新算法之a_bogus逆向分析

 本文纯技术交流,与平台无任何关系

1.抓包分析

我们进入到章若楠的主页面,进行抓包分析,发现有很多包,发现web/aweme/post这个包比其他的包都大,很有可能就是我们想要的数据

进去查看预览发现这个就是我们想要的数据

请求标头里没发现有需要逆向的参数

载荷里发现sec_user_id明显就是章若楠小姐姐对应的id咯,然后就是a_bogus和msToken这两个看起来都像是需要逆向的,想练手的可以试着都做做,但是我这里告诉你只需要校验a_bogus

2.代码分析

(1)首先我们搜索a_bogus发现搜索不到这,那怎么办,那首先就要运用到今天的第一个断点xhr断点 , 

我们复制一小段这个url在这里,然后刷新页面吗,就会断住

观察到这个this已经生成了a_bogus(以后直接简称ab值),所以现在用启动器往前找

最后我们定位到这个位置,接下来要运用到第二种断点,日志断点

这样就会在控制台打印s.apply(b, u)的值

发现这个和ab值长度差不多,所以这里基本上就是xb值的生成位置了,接下来我们肯定是要他只断在生成ab值的地方,那接下来就要介绍第三个断点,条件断点

添加条件s.apply(b, u).length==168这就是了

(sorry!刚才忘记和你们说ab值是168位了!!!求原谅!!!你们不信就快去试试!!!)

然后我们进去代码,发现已经没法读了,那我们就抠代码啦

3.抠代码

就直接全c放到pycham里了,全扣就是这么简单。(没错我就是在水流程)

4.补环境

发现报错,就是我们要补的环境了

这里我们补好了window,发现接下来报错根本无从下手,这里介绍一个proxy代理

问:什么是proxy代理 

JavaScript 中的代理(Proxy)是一种强大的功能,它允许你拦截并自定义 JavaScript 对象的基本操作,比如属性查找、赋值、函数调用等。这意味着你可以在对象的访问和修改过程中插入自定义的行为,从而实现更高级的逻辑或者限制访问。

具体来说,JavaScript 的 Proxy 对象允许你定义一个“代理”,这个代理包装了另一个对象(称为目标对象),并且可以拦截对目标对象的操作。当你对代理对象进行操作时,这些操作可以被拦截并被自定义处理,然后再决定是否传递给目标对象。

比如,你可以使用 Proxy 来实现以下功能:

  1. 属性验证和过滤: 在获取或设置对象的属性时,可以验证属性值的合法性,并根据需要进行过滤或者转换。
  2. 拦截函数调用: 可以在调用对象的方法之前或之后执行额外的逻辑,比如记录日志、性能监控等。
  3. 隐藏属性: 可以隐藏对象的某些属性,使其对外部代码不可见或不可修改。
  4. 数据响应式: 可以通过拦截对象的属性操作来实现响应式数据的更新和通知。

这里我给出我的proxy代理代码

​
function setProxy(proxyObjs) {
    for (let i = 0; i < proxyObjs.length; i++) {
        const handler = `{
      get: function(target, property, receiver) {
       if (property != "Math" && property != "isNaN") {
            if (target[property] && typeof target[property] != 'string' && Object.keys(target[property]).length > 3) {

            } else {
            console.log("方法:", "get  ", "对象:", "${proxyObjs[i]}", "  属性:", property, "  属性类型:", typeof property, ", 属性值:", target[property], ", 属性值类型:", typeof target[property]);}}
            return target[property];
      },
      set: function(target, property, value, receiver) {
        console.log("方法:", "set  ", "对象:", "${proxyObjs[i]}", "  属性:", property, "  属性类型:", typeof property, ", 属性值:", value, ", 属性值类型:", typeof target[property]);
        return Reflect.set(...arguments);
      }
    }`;
        eval(`try {
            ${proxyObjs[i]};
            ${proxyObjs[i]} = new Proxy(${proxyObjs[i]}, ${handler});
        } catch (e) {
            ${proxyObjs[i]} = {};
            ${proxyObjs[i]} = new Proxy(${proxyObjs[i]}, ${handler});
        }`);
    }
}

​

接下来就是代理window,location,navigator,document等等,就开始补环境了这里我就不过多赘述了

5.导出函数

首先我们再次进去浏览器,观察参数,发现主要是传的参数是个数组,其中5是ua,3是载荷进行url拼接

我们在pycham搜索59 !=m,然后加上window.xxx=u,这样我们就把u函数成功导出了

发现ab值已经出现,这里给出我最后执行的代码,到时候只需要python调用js生成ab值即可

function fn(data) {
    var r = window.xxx._v;
    ag=[
    0,
    1,
    1,
    data,
    "",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
]
    return (0,
        window.xxx._u)(r[0], ag, r[1], r[2], this)

}

6.效果演示

测试完成,逆向成功

这样大家就可以获得章若楠小姐姐的全部信息啦,给位lsp还能获取其他小姐姐们的

7.补充

本文因为版权问题,不能展示图片,有需要的私信我就好,有求必应

img

img

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值