当前位置: 首页 > news >正文

某某盾-滑块验证-自动获取validate值-(逆向js+python)

我是标题

  • 1.从get?网站获取滑块图片以及token
    • 1.1获取fp值
    • 1.2 获取cb值
    • 1.3 模拟发包
  • 2.获取滑块移动距离
  • 3.发包获取最终的validate值
    • 3.1轨迹生成
    • 3.2 check网站发包
    • 3.3 获取data值
  • 4.结论

在这里插入图片描述
本实验是根据某某盾示例网站
主要分为两个部分
1.从get?网站获取滑块图片以及token
2.根据获取的图片获取滑块移动距离
3.根据移动距离和token发包到check?网站得到validate值

1.从get?网站获取滑块图片以及token

模拟网站发包,需要获取fp值和cb值
yyyyyy

1.1获取fp值

网站的js做了混淆,看起来很乱,但是不影响逆向寻找,js代码,具体扣代码的方法就不再介绍了。
可以直接搜索图上关键字可以在网站上找到js具体的位置。
在这里插入图片描述
需要注意的是混淆的数组,需要加上下面两个函数,将数组的顺序改为正确的顺序。
还需要注意fp是和网站的域名相关,就是验证应用在的网站域名,设为输入变量hrefff。
在这里插入图片描述
传入变量所在位置
在这里插入图片描述

1.2 获取cb值

同样获取cb的js代码也做了混淆,需要加入下面两个函数,注意是两个函数。第二个函数要传入参数。
在这里插入图片描述
cb原代码在webpack里面,需要加载器。
第一个框为加载器,可以用模板,也可以从源网站拷贝执行器。
第二个框为所需要方法,字典寻找方式。原代码是用十六进制数组方式寻找。具体可以从源代码的加载器寻找0x**,找到具体方法。
第三个框为获取cb执行代码。
在这里插入图片描述

1.3 模拟发包

本文中所有用的头文件

import cv2
import numpy as np 
import requests
import execjs
import json
import re
import os
import random
import time

用python模拟发包

    get_web = 'https://xxxxx/api/v3/get'payload ={"referer":"https://xxxxx/trial/jigsaw","zoneId":"CN31","dt":"yyyyyy","acToken":"undefined","id":"yyyyyy","fp":Get_fp(),"cb":Get_cb(),"https":"true","type":2,"version":"2.25.0","dpr":"1.25","dev":1,"ipv6":"false","runEnv":10,"group":"","scene":"","lang":"zh-CN","sdkVersion":"undefined","iv":3,"width":320,"audio":"false","sizeType":10,"smsVersion":"v3","token":"","callback":"__JSONP_4ti1bll_29"}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}res = requests.get(get_web, params=payload,headers=headers)print(res.text)res_str = re.search("\((.*?)\);",res.text)#匹配res_json = json.loads(res_str.groups()[0])if (res_json['msg'] == 'ok'):bg_image    = res_json['data']['bg']ft_image    = res_json['data']['front']token       = res_json['data']['token']save_image(bg_image,'bg_image.png')save_image(ft_image,'ft_image.png')

执行js文件

def js_from_file(file_name):"""读取js文件:return:"""with open(file_name, 'r', encoding='UTF-8') as file:result = file.read()string = "\/*解决浏览器环境问题*/\const  { JSDOM }= require('jsdom');\const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');\const window = dom.window;\const document = window.document;\XMLHttpRequest = window.XMLHttpRequest;\"return (string + result)
def Get_fp():# 编译加载js字符串context1 = execjs.compile(js_from_file('..\\fp.js'),cwd=r'C:\Users\xxx\AppData\Roaming\npm\node_modules')   #使用 execjs 类的compile()方法编译加载上面的 JS 字符串,返回一个上下文对象fp = context1.call('fp','dun.163.com')#print(fp)return fpdef Get_cb():# 编译加载js字符串context1 = execjs.compile(js_from_file('..\\cb.js'),cwd=r'C:\Users\xxx\AppData\Roaming\npm\node_modules')   #使用 execjs 类的compile()方法编译加载上面的 JS 字符串,返回一个上下文对象cb = context1.eval("getcb()")#print(cb)return cb

在这里插入图片描述

在这里插入图片描述

2.获取滑块移动距离

具体不再解释,主要是通过灰度图的边缘化后图片做匹配,直接可以返回两者相差的距离。注意距离是x方向和y方向都有,返回只取了x方向的值。

#获取滑块在背景上位置
def slider_location(slider_img,bg_image):"""TM_SQDIFF 平方差匹配法    该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大TM_CCORR 相关匹配法  该方法采用乘法操作;数值越大表明匹配程度越好。TM_CCOEFF 相关系数匹配法   1表示完美的匹配;-1表示最差的匹配。TM_SQDIFF_NORMED    归一化平方差匹配法      TM_CCORR_NORMED 归一化相关匹配法      TM_CCOEFF_NORMED    归一化相关系数匹配法"""res = cv2.matchTemplate(bg_image,slider_img,cv2.TM_CCOEFF_NORMED)threshold = 0.9while (len(np.where(res >= threshold)[1])==0 and threshold!=0):threshold-=0.1if (threshold):return np.where(res >= threshold)[1]  #选取x坐标的第0个值else:return 0
#获取滑动距离 返回距离
def get_distance():slider_img =cv2.imread('.\\bg_image.png',0)   #0获取灰度值bg_image=cv2.imread('.\\ft_image.png',0)# 识别图片边缘bg_edge = cv2.Canny(bg_image, 100, 200)tp_edge = cv2.Canny(slider_img, 100, 200)cv2.imwrite('sd_image1.png',tp_edge)cv2.imwrite('bg_image1.png',bg_edge)return slider_location(tp_edge,bg_edge)[0]

在这里插入图片描述

3.发包获取最终的validate值

3.1轨迹生成

根据滑块移动距离和第一步返回的cookie值发包核对得到validate值。
根据滑块的移动距离需要构造轨迹坐标,我的轨迹坐标方法比较烂,就不贴出来了。是下图这种样子的。
在这里插入图片描述

3.2 check网站发包

如下ts_str 就是轨迹的json的转字符串形式
注意token一定要和get?返回的一样。

    get_web = 'https://xxxxx/api/v3/check'payload ={"referer":"https://xxxxx/trial/jigsaw","zoneId":"CN31","dt":"yyyyyy","id":"yyyyyyyyyyy","acToken":"undefined","token":token,"data":Get_data(token,ts_str),"width":320,"type":2,"version":"2.25.0","cb":Get_cb(),'extraData':"",'bf':0,"runEnv":10,"sdkVersion":"undefined","iv":3,"callback":"__JSONP_mbi1bll_30"}  #随机生成callbackres = requests.get(get_web, params=payload,headers=headers)if len(res.text)> 150:print(res.text)return 1#print(token)return 0

在这里插入图片描述

3.3 获取data值

data为字典的转字符串的形式,内包含很多加密变量。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.结论

现在的成功率不高,应该是滑块轨迹做的不好,很容易被发现,以后可以再具体研究。
做了20次实验,
6次超过20次以外
14次平均成功次数为小于5次
在这里插入图片描述
在这里插入图片描述

相关文章:

某某盾-滑块验证-自动获取validate值-(逆向js+python)

我是标题 1.从get&#xff1f;网站获取滑块图片以及token1.1获取fp值1.2 获取cb值1.3 模拟发包 2.获取滑块移动距离3.发包获取最终的validate值3.1轨迹生成3.2 check网站发包3.3 获取data值 4.结论 本实验是根据某某盾示例网站 主要分为两个部分 1.从get&#xff1f;网站获取滑…...

C++:set和map的使用

set和map的使用 1.关联式容器2.key模型和key_value模型3.set3.1一些注意点3.2set的使用3.3习题 4.multiset5.map5.1一些注意点5.2map的使用5.3习题 6.multimap 1.关联式容器 序列式容器&#xff1a;比如我们之前讲的vector、string、list等均为序列式容器&#xff0c;特点是按…...

同城售后系统退款业务重构心得 | 京东云技术团队

一、重构背景 1.1、退款 到家、小时购、天选退款有2套结构&#xff0c;代码逻辑混乱&#xff1b; 其中小时购、天选部分售后单是和平生pop交互退款&#xff0c;部分是和售后中台交互退款&#xff1b;并且兼容3套逻辑&#xff1b; 痛点&#xff1a;代码繁重&#xff0c;缺乏…...

【计算机网络笔记】TCP连接管理(图解三次握手和四次挥手)

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…...

C++ 初阶 类和对象(中)

前言&#xff1a;C初阶系列&#xff0c;每一期博主都会使用简单朴素的语言将对应的知识分享给大家&#xff0c;争取让所有人都可以听懂&#xff0c;C初阶系列会持续更新&#xff0c;上学期间将不定时更新&#xff0c;但总会更的 目录 一、构造函数 1.1为什么要有构造函数&…...

【漏洞复现】Metinfo5.0.4任意文件包含漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1、蚁剑直接连接图片马2、读取敏感目录3、读取php源码4、执行PHP命令5、包含木马写Shell &#xff08;图片马制作新方法&#xff09; 以 metinfo_5.0.4为例 该环境的文件上传…...

【计算机网络实验/wireshark】tcp建立和释放

wireshark开始捕获后&#xff0c;浏览器打开xg.swjtu.edu.cn&#xff0c;网页传输完成后&#xff0c;关闭浏览器&#xff0c;然后停止报文捕获。 若捕获不到dns报文&#xff0c;先运行ipconfig/flushdns命令清空dns缓存 DNS报文 设置了筛选条件&#xff1a;dns 查询报文目的…...

STM32:I²C通信原理概要

一、IIC通信原理 IIC通信和串口通信有一定的相似之处&#xff0c;都有一根共地线和两根数据线。但是传递外部信息&#xff0c;串口有两根数据线可以进行双向通信&#xff0c;也就是全双工通信。而在IIC通信下&#xff0c;其中一条数据线是用于提供同步时钟脉冲的时钟线(SCL)&am…...

【开题报告】基于 Spring Boot 的在线预约导游系统的设计与实现

1.引言 在旅游行业中&#xff0c;导游起到了重要的作用&#xff0c;他们为游客提供了专业的旅游服务和相关信息。然而&#xff0c;传统的导游预约方式可能存在一些问题&#xff0c;如信息不透明、预约流程繁琐等。因此&#xff0c;我们计划开发一个基于 Spring Boot 的在线预约…...

如何使用ps制作ico图标文件

如何使用ps制作ico图标文件 Chapter1 如何使用ps制作ico图标文件Chapter2 ICOFormat.8bi&#xff08;Photoshop Ico、Cur插件&#xff09;的下载使用1. ICOFormat.8bi的作用2. ICOFormat.8bi使用 Chapter3 ps手机计算机图标教程,手绘设计精美手机APP软件图标的PS教程步骤 01 制…...

【Linux】logrotate实现“日志文件定时分割“

问题背景 项目部署的过程中&#xff0c;经常会需要查看程序的执行日志。我之前的做法都是用nohup ... > xxx.log 2>&1 &将日志保存到xxx.log文件中的。但是问题是&#xff0c;程序有时会运行很长时间&#xff0c;一直保存在一个文件里&#xff0c;文件会越来越大…...

Android可绘制资源概览(背景、图形等)

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、drawable 分类3.1 Bitmap fileXML …...

力扣2095.删除链表的中间节点(java快慢指针)

Problem: 2095. 删除链表的中间节点 文章目录 思路解题方法复杂度Code 思路 利用快慢指针&#xff0c;快指针每次走两步&#xff0c;慢指针每次走一步&#xff08;循环退出条件是fast指针不为空同时fast.next不为空&#xff09;&#xff0c;但是我们容易发现这样到最后slow指针…...

【Vue-Element-Admin】table添加自定义索引

通过给 typeindex 的列传入 index 属性&#xff0c;可以自定义索引。该属性传入数字时&#xff0c;将作为索引的起始值。也可以传入一个方法&#xff0c;它提供当前行的行号&#xff08;从 0 开始&#xff09;作为参数&#xff0c;返回值将作为索引展示。 <el-table:data&q…...

0008Java安卓程序设计-ssm基于Android平台的健康管理系统

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,…...

Mac 禁用一些高占用cup的进程

什么是CrashReporter&#xff1f; CrashReporter在应用程序崩溃的任何时候都会运行&#xff0c;它旨在保存应用程序状态&#xff0c;以帮助开发人员找出应用程序崩溃原因。基本上&#xff0c;一个进程是启动、崩溃&#xff08;并调用CrashReporter&#xff09;&#xff0c;然后…...

layui form表单 调整 label 宽度

这个可以调整所有label .layui-form-label {width: 120px !important; } .layui-input-block {margin-left: 150px !important; }情况是这样的&#xff0c;表单里有多个输入框&#xff0c;只有个别label 是长的&#xff0c;我就想调整一下个别长的&#xff0c;其它不变 <di…...

轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/PrimitiveEntityTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 细节请见&#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调用隔…...

[ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决

业务需求&#xff1a;需要做到table表格中某些行数据不能被选中&#xff0c;比如在审核一些记录数据时&#xff0c;已经被审核的数据就不能再次提交审核&#xff0c;特别是批量多选的情况&#xff0c;列表中既有已经审核的&#xff0c;也有未审核的&#xff0c;只要求选中未审核…...

【PY】倒计时日历

大家有时候会不会觉得时间记不住呢&#xff1f;PY倒计时日历可以满足你。 main.py&#xff1a; from tkinter import Tk,Canvas from datetime import date,datetime def get_events():list_events[]with open(events.txt)as file:for line in file:lineline.rstrip(\n)curre…...

Qwen-Image-2512实现Python爬虫数据自动化处理:电商图片批量生成方案

Qwen-Image-2512实现Python爬虫数据自动化处理&#xff1a;电商图片批量生成方案 1. 引言 如果你是做电商的&#xff0c;或者负责过电商运营&#xff0c;肯定遇到过这个头疼的问题&#xff1a;上架一个新商品&#xff0c;或者给一批老商品换季上新&#xff0c;需要准备大量的…...

Dify工作流架构:声明式编排与可视化执行引擎的技术实现

Dify工作流架构&#xff1a;声明式编排与可视化执行引擎的技术实现 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify…...

谷歌DeepMind与卡内基梅隆大学揭秘声音背后的脸

这项由谷歌DeepMind与卡内基梅隆大学联合开展的研究&#xff0c;发表于2024年的计算机视觉与模式识别顶级会议CVPR&#xff08;IEEE/CVF Conference on Computer Vision and Pattern Recognition&#xff09;&#xff0c;论文编号为arXiv:2404.01975&#xff0c;有兴趣深入了解…...

FanControl:颠覆式开源风扇控制工具的全方位应用指南

FanControl&#xff1a;颠覆式开源风扇控制工具的全方位应用指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...

Ollama平台部署GLM-4.7-Flash:从零开始搭建本地大模型服务

Ollama平台部署GLM-4.7-Flash&#xff1a;从零开始搭建本地大模型服务 1. 为什么选择GLM-4.7-Flash&#xff1f; 在众多开源大模型中&#xff0c;GLM-4.7-Flash以其独特的定位脱颖而出。这个30B参数的MoE&#xff08;混合专家&#xff09;模型&#xff0c;在性能与效率之间取…...

爆款AI写教材工具登场!一键生成低查重教材,轻松开启编写之旅

编写教材的困境与AI的解决方案 在编写教材时&#xff0c;如何准确地满足多样化的需求呢&#xff1f;不同年级的学生在认知能力上存在显著差异&#xff0c;教材内容若过于深奥或过于简单都无法达到效果&#xff1b;而课堂教学和自主学习等不同的环境对教材的要求各不相同&#…...

5步实现Switch控制器PC全功能适配:从连接到精通的设备适配指南

5步实现Switch控制器PC全功能适配&#xff1a;从连接到精通的设备适配指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitc…...

轴承故障诊断实战:从振动信号到Python代码的完整分析流程

轴承故障诊断实战&#xff1a;从振动信号到Python代码的完整分析流程 在工业设备维护领域&#xff0c;轴承作为旋转机械的核心部件&#xff0c;其健康状态直接影响设备运行效率与安全性。传统的人工巡检方式已难以满足现代工业对故障预警的实时性需求&#xff0c;而基于振动信号…...

量子行走:从理论到Python实现——4. 量子算法设计与实现

目录 4. 量子算法设计与实现 4.1 基础量子算法 4.1.1 Deutsch-Jozsa算法 4.1.2 量子傅里叶变换 4.1.3 Grover搜索算法 4.2 Shor因数分解与离散对数 4.2.1 算法框架与经典预处理 4.2.2 量子相位估计的精度分析 4.3 变分量子算法 4.3.1 变分量子本征求解器 4.3.2 量子近…...

基于Python的律师事务所案件管理系统毕业设计

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在开发一套基于Python的律师事务所案件管理系统&#xff0c;以满足现代法律事务处理的高效性和智能化需求。具体研究目的如下&#xff1a; 首先&#xf…...