案例地址:rs5欧治
加密cookie+cookie生成逻辑
加密cookie:

生成逻辑:

开始前的注意事项
瑞数我们直接扣代码即可,讲扣代码步骤之前,有几个需要注意的点:
- 需要清空cookie然后打开脚本断点后刷新页面会得到ts代码,再运行会得到ts代码的解释器,然后再运行就回到主文件(html文件)
*





- 到达此文件后需要固定此html文件(替换内容),不然会变化
*

- 复制js文件时需要解除格式化,不然会有格式化检测
*

- 不是外链地址的就是会变的,这里就是ts不是外链的:
*

扣代码+补环境
扣代码就是将ts文件拿下来,然后将编译ts的解释器(script标签的js文件)拿下来直接放本地然后运行即可:

这里报错就是环境问题了,下面就开始补环境,先将补环境脚本放过来然后先写一个window = global:

然后对比网页来看这里是啥:

这里可以看出是window.top = window(大Window补window即可),补上之后继续运行:

这里一直运行不停是因为属性没补全然后导致触发定时器,所以将这三个补上即可:

直接这样补看看函数干了什么事:

运行:

这里是createElement入参是div,我们需要先看看document.createElement('div')在浏览器返回了什么:

返回的是标签,那就补对象,记住标签都是对象:

补完之后运行:

没有新的报错,不要慌,我之所以将div单独写成一个空对象放外面就是方便我将它挂代理然后看看里面干了啥事儿:

补进div标签中,运行:

在浏览器中看看返回啥,然后补上:


补上之后再运行:

document中的getElementByTagName,补一下,然后运行:

接着补标签:


再运行:

这里的话我们可以去浏览器中看看,应该补上面那个而不是下面那个attachEvent,这里我们需要借助联调,先说怎么联调:
- 第一步,右键文件在终端打开:

- 第二步,输入命令回车:
- node --inspect-brk xxx.js(xxx是你的文件名)
- 第三步,打开浏览器点开这里的小绿标:

- 第四步,打开第一个按钮

- 然后运行看报错即可

现在会了联调就要去浏览器中找报错位置来对比我们补的环境了,先在js编写的解释器中找到call的位置打上断点,这里是编译ts的地方,我们需要从这里进入ts被编译后的VM文件中:



现在我们就可以搜索报错位置来对比了:

运行过来对比:


所以我们要和浏览器中的保持一致,那就先补一个addEventListener即可,然后运行:

缺meta,那就补:


挂上代理继续运行:

那就再挂一个meta[1]看看:

里面缺了一个,那就补:

继续补:


再补,location直接复制就行:


再补:

这里不退出但是一直加载东西,那就是定时器,我们直接置空就行:

打印cookie看看:

这里就拿到值了,但是我们需要测试是否是假值,他可能会有蜜罐,当你没补某一个值的时候会返回给你一个假值,这里我们测试一下:

这里是通过200了,但是返回的是一堆空白,那怎么搞,下面来讲一下排错顺序
补出假值后排错
先看location,document.xxx(xxx = createElement、createElementById等)等一些常见的有没有补全:

然后看自己打印的有啥没补上:

然后看undefined:

这里直接说结论了,就是ActiveXObject的问题,直接写window.ActiveXObject = undefined就行了
py编写
ts文件和服务器cookie获取和替换:


py调用替换后的js文件得到rs的cookie:

第二次请求带着服务器返回的cookie和rs的cookie拿到数据:


result:

小结
文章到此就结束了,如有问题请及时提出,后续出rs案例补环境就不会这么详细了,因为环境都差不多,加油加油