首页
社区
课程
招聘
[原创] 网页端 x-s,x-t,x-common,fingerprint 分析
发表于: 2023-9-19 21:02 11908

[原创] 网页端 x-s,x-t,x-common,fingerprint 分析

2023-9-19 21:02
11908

其实最早改版的时候我就还原出来了,至于为啥没发,毕竟人家刚改版。
以下只是思路,没有算法也不要问我要算法,我不做那个,只是研究学习。

三个参数X-S,X-S-Common,X-T, 先说下我的思路,我是找到了一个/webprofile的接口,这个有的人应该比我懂,data里面长这样
图片描述

这个profiledata就是浏览器一堆环境,我最开始破解的版本是3.3.3,看来这已经升级了,但估计大体没变化。咱们直接搜索profiledata。
图片描述
我们先下断o.getv18, reportBroswerInfo_awaiter和reportBroswerInfo_generator
vmp文件就在window.xhsFingerprintV3.getV18里面,点进去看看大体框架,我只能说跟某程的加固框架是同一个,特征很明显。等过一会再写一个testab的文章哈哈哈

咱们随机先下一个断点log,随便输出什么都可以,然后步过执行发现reportBroswerInfo_awaiter和reportBroswerInfo_generator都没有日志输出,而且等reportBroswerInfo_generator之后 n 就已经出来了,说明getv18里面就是一个整体流程。

然后就开始下日志断点,搜索apply一些关键点来下,观察一下作用域里的值,那些是用来存储数据的哪些是用来存储指令集的,第一次多下一点一点一点缩小范围减少日志输出。
图片描述
比如这都调用charcodeat了,那说明就开始算法的加密了,直接设置条件断点设置字符串等于charcodeat中断

断下之后打开闭包数据找一找,发现了这么一堆,看到ey开头赶紧拿去base64解码,这个搞多了都懂。
图片描述
出来是这么个东西
图片描述
这就是初始化的浏览器环境,这省事了,直接下这个变量的日志断点就可以了,然后观察值的变化,发现v18结束,这个值确实出来了。
图片描述
这一看就是16进制的数据,直接复制出来看最后两位F3十进制是243,直接控制台往上翻,确实对应上了,82的十进制也是130
图片描述
看下这个数组长度是8,那说明这个是个分组加密,上面的日志还有很多,这里就不说了,说到这基本算法都能猜出来了,就差还原了,也是继续下log,这次log就下在微运算上,把微算法分析在拼接。
幸亏是对称加密,结果不变,不然都不好断。
所以初始位置暂定为 192, 88 来断点这是加密结果开头的两个十六进制。
断下之后我们一步一步往下走,就开始发现每8个字节进行加密了,后续把这个charcodeat的日志打全或者单步就发现这些字节就是上面base64的指纹。
图片描述
后面的流程上面也说过了,就开始拼接微运算的算法,结果大致如下。
图片描述
发现运算的时候还会去取一些固定的数组的值,就是最开始截图的数据存储的地方
图片描述
等还原结束我才发现了这个算法其实调用库会非常简单,key在我还原的时候已经发现了,但是不能说哈哈哈,最后就是8个一组的数据,转16进制。至此这个指纹就到这了,具体收集什么就不讲了,得挨个去分析。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2023-9-21 17:53 被wbwnnx编辑 ,原因: update
收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 3070
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-9-20 10:36
2
雪    币: 49
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这很屌啊 感谢分享 
2023-9-20 11:13
1
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
大佬私信联系方式
2023-10-13 23:14
0
游客
登录 | 注册 方可回帖
返回
//