【APP逆向38】滑块处理

news/2025/3/10 22:13:56/文章来源:https://www.cnblogs.com/xwltest/p/18763834
  • 当我们在逆向时,有的登录界面,需要滑块或者点选之类的图片验证
  • 这篇我们主要了解使用opencv识别滑块
  • 1.获取滑块图片并且保存在本地
import base64
import requestsres = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"CheckCaptchaAppId_v1.0.1","CaptchaAppId":2075530305}',
)
esid = res.json()['Response']['SId']res = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"GetImageData_v1.0.1","ESId":"%s"}' % esid,
)
data_dict = res.json()# 背景图片,base64
l_image = data_dict['Response']['ImageDataL']
l_image_content = base64.b64decode(bytes(l_image, encoding="ascii"))
with open('l_image.png', mode='wb') as f:f.write(l_image_content)# 缺口图片,base64
s_image = data_dict['Response']['ImageDataS']
s_image_content = base64.b64decode(bytes(s_image, encoding="ascii"))
with open('s_image.png', mode='wb') as f:f.write(s_image_content)
  • 2.识别并且计算距离
import base64
import requests
import jsonimport cv2
import numpy as npdef get_image_object(bs_image):obj = base64.b64decode(bytes(bs_image, encoding="ascii"))img_buffer_np = np.frombuffer(obj, dtype=np.uint8)# 从指定的内存缓存中读取一维numpy数据, 并把数据转换(解码)成图像矩阵格式img_np = cv2.imdecode(img_buffer_np, 1)bg_img = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY)return bg_imgdef get_distance(l_image_object, s_image_object):# 边缘检测bg_edge = cv2.Canny(l_image_object, 255, 255)tp_edge = cv2.Canny(s_image_object, 255, 255)bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)  # 寻找最优匹配x = max_loc[0]return xres = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"CheckCaptchaAppId_v1.0.1","CaptchaAppId":2075530305}',
)
esid = res.json()['Response']['SId']res = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"GetImageData_v1.0.1","ESId":"%s"}' % esid,
)
data_dict = res.json()l_image = data_dict['Response']['ImageDataL']
l_image_object = get_image_object(l_image)s_image = data_dict['Response']['ImageDataS']
s_image_object = get_image_object(s_image)# 计算距离
distance = get_distance(l_image_object, s_image_object)
print(distance)
  • 3.提交滑块
import base64
import requests
import json
import time
import random
import cv2
import numpy as npdef get_image_object(bs_image):obj = base64.b64decode(bytes(bs_image, encoding="ascii"))img_buffer_np = np.frombuffer(obj, dtype=np.uint8)# 从指定的内存缓存中读取一维numpy数据, 并把数据转换(解码)成图像矩阵格式img_np = cv2.imdecode(img_buffer_np, 1)bg_img = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY)return bg_imgdef get_distance(l_image_object, s_image_object):# 边缘检测bg_edge = cv2.Canny(l_image_object, 255, 255)tp_edge = cv2.Canny(s_image_object, 255, 255)bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)  # 寻找最优匹配x = max_loc[0]return xres = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"CheckCaptchaAppId_v1.0.1","CaptchaAppId":2075530305}',
)
esid = res.json()['Response']['SId']res = requests.post(url='https://m.captcha.qq.com/',data='{"Action":"GetImageData_v1.0.1","ESId":"%s"}' % esid,
)
data_dict = res.json()l_image = data_dict['Response']['ImageDataL']
l_image_object = get_image_object(l_image)s_image = data_dict['Response']['ImageDataS']
s_image_object = get_image_object(s_image)
distance = get_distance(l_image_object, s_image_object)sid = data_dict['Response']['UniqueSId']# 提交滑块
time.sleep(random.randint(3, 5))
data = '{"Action":"VerificationCaptchaImageAnswer_v1.0.1","UniqueSId":"%s","LeftTopX":"%s","ranNum":0,"Frequency":1}' % (sid, distance)
res = requests.post(url='https://m.captcha.qq.com/',data=data,
)print(res.text)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897008.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty基础—1.网络编程基础一

大纲 1.什么是OSI开放系统互连 2.OSI七层模型各层的作用 3.TCP/IP协议的简介 4.TCP和UDP的简介 5.TCP连接的三次握手 6.TCP连接的四次挥手 7.TCP/IP中的数据包 8.TCP通过确认应答与序列号提高可靠性 9.HTTP请求的传输过程 10.HTTP协议报文结构 11.Socket、短连接、长连接、网络…

硅基流动+Chatbox实现deepseek R1使用自由

解锁 DeepSeek R1 全能力:高性价比AI对话全流程指南🌟 用最低成本体验顶尖开源模型,对话成本低至 2 分钱/次!一、注册 SiliconFlow 领取千万Tokens▶️ 操作步骤:点击专属链接注册:https://cloud.siliconflow.cn/i/KoKtjLvD 手机验证码登录 → 立即获得 2000万 Tokens(…

3.1.1 线性回归的基本元素

看看批量梯度下降和小批量梯度下降的图形,与我们的理解是相符的注意到小批量梯度下降不是严格单减的,只是趋势是单调减少的(图中的纵轴Cost指的是对于整个训练数据的损失) 每次的批量的大小显然是一个超参数。当批量大小为\(1\)的时候叫做随机梯度下降,当批量大小为\(m\)的…

报错

SSM整合报org.springframework.beans.factory.NoSuchBeanDefinitionException 显示没有找到serviceImpl对应的bean,但@autowired显示正常原因:web.xml文件中没有配置监听器ContextLoaderListener,导致web服务器启动后,没有读取Spring的配置文件,使得bean没有注入到Spring的…

ssh登录ubuntu后终端不显示颜色

1、在 ~/.bashrc 文件找到 “#force_color_prompt=yes”,去掉前面的注释; 2、在 ~/.bash_profile文件种添加以下脚本,并执行 “source ~/.bash_profile”# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$…

Echarts圆环图实现进度条末尾带一个方块的效果

效果这样 直接上代码吧 <template><div ref="chartDom" style="width: 260px; height: 460px; background-color: white"></div> </template><script setup lang="ts"> // import { useI18n } from vue-i18n // i…

CF2068E. Porto Vs. Benfica

Porto Vs. Benfica 翻译自官方题解。我们首先做一些定义,这将帮助我们: 定义。 用 \(f(v)\) 表示支持者俱乐部从顶点 \(v\) 出发,想要到达顶点 \(n\) 所需的最少道路数,且警察仍然可以封锁恰好一条道路。 因此,\(f(1)\) 是问题的答案,且 \(f(n) = 0\)。 定义。 用 \(g(v,…

使用 Power Automate发送图文并茂的Teams消息

前言最近,有朋友使用Automate发送Teams消息,发现如果图片在SharePoint中,发送的时候因为认证的问题图片没办法显示。其实,我们可以将图片转换成Base64流进行引用,就能正常的显示了。正文1.我们新建一个Automate Flow,如下图:2.然后,添加Teams操作,如下图:3.消息我们需…

006TypeScript开发实战

一、全家桶-状态管理 状态管理的选择 vuex:目前依然使用较多的状态管理库 pinia:强烈推荐,未来趋势的状态管理库(用这个)1、 安装:npm install pinia 安装完成 2、新建文件夹 这里这样写 这里引入pinia 新建文件 这样写 这里引用一下 可以看到页面上 点击之后变成

《Python极客项目编程(第2版)》 | PDF免费下载 | epub free download

本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。点击下载书籍信息 作者: [美] 马赫什文基塔查拉姆(Mahesh Venkitachalam) 出版社: 人民邮电出版社 原作名: Python Playground: Geeky Pro…

课堂教学质量评价分析系统 AI+教育

课堂教学质量评价分析系统的核心技术基于YOLOv11和CNN算法,课堂教学质量评价分析系统检测到的行为数据(如玩手机、举手、睡觉、交头接耳、趴桌子、行走运动)和表情数据(如开心、厌恶、愤怒、悲伤、沮丧、恐惧、无表情)会被传递到情感模型进行进一步分析。同时,系统还会结…

04. 串口通信

一、串口通信简介串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接收字节。串口通信的数据包由发送设备的 TXD 接口传输到接收设备的 RXD 接口。在串口通信的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式…