极验滑块验证三个W超详细解密(3)
书接上文
5.第五个请求,返回生成验证码的三张图片
接口地址:https://api.geetest.com/get.php
123456789101112131415161718192021222324252627282930# 第五次请求,获取各项图片params = { 'is_next': 'true', 'type': 'slide3', 'gt': gt, 'challenge': challenge, 'lang': 'zh-cn', 'https': 'true', 'protocol': 'https://', 'offline': 'false', 'product': 'popup' ...
极验滑块验证三个W超详细解密(2)
书接上文
第二个w获取流程
第二个w也可以不用去获取,因为第二个w不涉及到验证码的获取和验证,至少现在还没有
点击验证码,获取到如下包,一个 ajax.php 和 get.php
4.第四个请求,携带解密后的w,用于识别验证码是否加载成功
接口地址:https://api.geetest.com/ajax.php
第二个w解密流程第二个w要找到加密位置,需要看html页面,他是通过动态加载script标签,然后通过加载js来完成加密
打上断点,刷新页面,通过观察加载德script标签,发现并不是我们需要的请求,所以直接过掉
过掉所有断点后,我们再点击按钮,将验证码加载出来,这一次断点再次打上,通过观察会发现是我们要请求的接口,然后我们向上追栈
向上追一个栈,我们来到这个函数,我们分析一下 [$_HCDk(340)] 就是调用最上面的那个方法, 他传入了一个new le(f),
往上面看,这里创建了几个参数,其中n已经包含了src,也就是在这里已经完成了w的加密,我们在上面打一下断点,看一下n在这里做了什么
在n下面重新打上断点后,进来发现n里面的script标签 ...
极验滑块验证三个W超详细解密(1)
网址:滑动模式 (geetest.com)
验证码运行流程
浏览器向极验服务器索要各项数据,极验服务器返回各种数据完成验证码加载
用户滑动后,各项滑动的参数也会发送给极验服务器,返回成功或者失败的状态
然后客户端带着成功或者失败的状态发给商家的服务器,然后商家的服务器会去找极验验证是否是正常
抓包分析刷新页面,第一个html文件不用管
gt.js, 因为涉及到跨域的问题,该文件就是用来解决跨域问题
第一个包,发送第一个请求,浏览器向极验进行请求注册一个验证码,返回的两个参数将贯穿始终,因为这是用来验证是哪次请求,哪个验证码
第二个包 该请求携带上述返回的两个参数,用于获取验证码类型,返回的数据用于加载浏览器中的验证码
第三个包 接下来该请求携带第一个加密的w,返回的数据没有意义,但是同样用于加载验证码
第四个包 点击验证码后,加载了一大堆东西,该接口同样携带w,有点类似上面的get,该接口返回的数据看上去没有任何意义
第五个包 接下来又有一个请求,该请求携带的参数似乎未加密,该接口返回的数据包含三张图,一张完整背景,一张滑块,一张带缺口的背景图
通过测试 ...
补环境扣代码过瑞数4
补环境扣代码过瑞数4
参考网址:http://www.fangdi.com.cn/index.html
加密入口正常F12会有两个debugger,直接永不在此暂停过掉
FSSBBIl1UgzbN7N80T 的值是4开头就是瑞数4的标志,我们直接用hook的形式去获取cookie
1234567891011121314151617181920212223242526272829303132// ==UserScript==// @name 获取cookie// @namespace 42// @version 0.1// @description Hook Crypto// @match http://www.fangdi.com.cn/*// @grant none// @run-at document-start// ==/UserScript==(function() { // 严谨模式 检查所有错误 'use strict'; // document ...
安卓aosp编译刷机过root检测
安卓aosp编译刷机过root检测
前提设备:
一部已经解锁oem的手机,我这里用的是pixel3a
虚拟机内安装ubuntu系统,版本是 18.04.6,其它版本也没有什么问题
刷机1.根据机型确定镜像文件与驱动我的手机是pixel3a,准备刷安卓10
官方包 https://developers.google.cn/android/images(对应的镜像文件) QP1A.190711.020
AOSP版 https://source.android.com/docs/setup/about/build-numbers QP1A.190711.020 android-10.0.0_r2 (这里是用于确定我们的手机适用的安卓10版本)
Piexl 4驱动 https://developers.google.cn/android/drivers (下载对应的驱动文件) QD1A.190821.011
2.系统初始化
Python软连接
1sudo ln -s /usr/bin/python3.6 /usr/bin/python
git ...
万方protobuf协议解析数据获取
protobuf是json和xml相识的数据通信协议,提供了高效率的序列化和反序列化机制,序列化就是将数据转换成二进制发送个服务器,反序列化就是将接收到的二进制转换成对应的对象
网站:https://s.wanfangdata.com.cn/
接口:https://s.wanfangdata.com.cn/SearchService.SearchService/search
解析流程我们打开网站进行搜索,网页并没有刷新,说明可能是xhr请求,我们看一下,这个search结尾的接口比较符合
我们能看到他这里的响应头带了一个 application/grpc-web+proto proto是 protobuf协议的简称,我们在看一下请求头和响应数据,看上去好像都是乱码,我们从发起程序处开始跟栈
我们跟栈要找一下跟我们搜索的关键字有关的代码,这里看上去有点像原始的请求头数据,我们先把它复制下来
1234567891011121314{ "searchType": "paper", "searchWord& ...
webSocket获取实时数据与AES解密
网址:https://599.com/live/
解密流程打开该网站,可以看到有些数据一直有发生变化,然后我们抓包看一下,虽然数据在变化,但是却没有新的包进来
有几个xhr响应的数据是经过加密的,这里加密的数据其实是当前网页显示的已加载的数据,但是经过了加密,网页刷新完成后,所有的数据都是通过websocket进行推送。而之前的,就是已经展示出来的数据就是在这几个xhr响应里面
打开ws请求栏,我们能很明显的看到有数据推送,而且返回的数据是经过加密的,发送的数据是 {"device":"pc","topic":"USER.topic.app.8"}
我们用 AioWebSocket 模块来编写websocket请求,尝试获取一下数据,可以看到,数据可以正常获取,且没有需要携带其它认证参数,唯一需要解决的是将反回的数据进行解密
123456789101112131415161718192021222324async def startup(uri): # 异步执行webso ...
贝壳app请求头Authorization字段解析
app:2.66.0
接口:https://app.api.ke.com/api/secondhand/resblock/framegroup/list?resblockId=2413600823455693
需求:获取贝壳小区里面的户型图数据
接口分析:通过抓包可以发现,里面有很多的字段都看不太懂,我们可以通过撰写请求来确定哪些字段是需要携带,哪些是不需要携带的,其中 Cookie,Device-id-s,Authorization 字段是一定需要携带的
cookie可以固定,只需要一个 lianjia_udid 字段就可以了
Device-id-s 跟设备有关,这里也可以写死
wll-kgsa 这个字段在高版本的app中,需要携带,使用低版本就不需要携带,请求头中还需要携带 Lianjia-Version 等跟版本有关的 字段才行
Authorization 这个字段必须携带,基本贝壳app所有的接口都必须携带,这个接口应该是跟请求体有关,相同的请求参数该字段相同
请求代码:
12345678910111213141516171819202122232425262 ...
得物app社区评论获取newSign和X-Auth-Token参数解析
app:4.74.5
接口:https://app.dewu.com/sns-itr/v1/reply/content-reply-list
解析流程该app不走系统代理,所以需要sockes转发,而且有frida反调试,需要删除libmsaoaidsec.so文件
正常抓包,找到接口,发现请求参数有个newSign 和请求头中有个X-Auth-Token需要获取到
直接搜索newSign关键字,发现它进入得是一个拦截器,最终是m37139c方法对newSign参数做了处理,我们看一下m37139c方法
看上去好像是一个aes加密,传入了一个map参数,我们可以hook一下,传入了哪些参数
传入得字典也是请求头中得其它参数,我们在回过头来看一下m37139c方法做了哪些处理,传入得map后又添加了下面几个参数,然后字符串拼接,直接hook encode方法就可以得到拼接后的字符串,其它的几个参数都可以固定,但是uuid需要我们去获取
12345678v=4.84.0timestamp=1660649735904uuid=0d9686a78e2aa975 -> ...
猿人学第12题Base64请求参数加密
网址:https://match.yuanrenxue.cn/match/12
接口:https://match.yuanrenxue.cn/api/match/12?page=1
解析流程请求参数m加密,
追栈到这就结束了, yuanrenxue 加上页数 进行base64编码即可
1base64.b64encode(f'yuanrenxue{i}'.encode()).decode()