[原创] 网页端 x-s,x-t,x-common,fingerprint 分析
发表于:
2023-9-19 21:02
11888
[原创] 网页端 x-s,x-t,x-common,fingerprint 分析
其实最早改版的时候我就还原出来了,至于为啥没发,毕竟人家刚改版。 以下只是思路,没有算法也不要问我要算法,我不做那个,只是研究学习。
三个参数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进制。至此这个指纹就到这了,具体收集什么就不讲了,得挨个去分析。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-9-21 17:53
被wbwnnx编辑
,原因: update