一款插件化的密码爆破框架
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
dic 首次提交 Sep 24, 2018
doc 首次提交 Sep 24, 2018
lib 添加遗漏的lib模块代码 Sep 25, 2018
plus 去除rar爆破插件注释以及设置好解压路径 Sep 25, 2018
test 首次提交 Sep 24, 2018
.gitignore 添加遗漏的lib模块代码 Sep 25, 2018
LICENSE 首次提交 Sep 24, 2018
README.md 修正README的序号 Sep 24, 2018
pwcracker.py 首次提交 Sep 24, 2018
requirements.txt 首次提交 Sep 24, 2018

README.md

pwcracker:一款插件化密码爆破框架

version Python 2.7 License Plugins

密码破解脚本调用框架,目前支持密文,文件,服务和应用等类型的20种密码破解。

一、简介

该项目主要解决以下问题

问题 解决
一些自定义算法,不常用的文件,冷门的服务如何爆破? 支持自定义插件编写
python的爆破脚本很多,特别零散,如何把它们集合到一起? 将其核心爆破功能编写成插件,由框架统一调用
编译型的爆破工具,在爆破过程中莫名失败,如何调试? 可以临时修改脚本输出调式

目前工具的优势和缺陷,请各位根据其特点。自行选择在那种场景下使用。

优点 缺陷
支持多种类型的爆破,比如密文,文件,服务和应用等 速度相对比较慢:于hydra等工具相比
支持通用算法,也可以自定义算法 部分插件的环境有点难配置:有些插件用的python包比较难安装,容易报错
支持多种爆破模式多账号多密码,单账号多密码,多账号单密
支持单个目标,也可以批量

二、快速使用

2.1 安装

git clone https://github.com/c0ny1/pwcracker
pip install -r requirement.txt
python pwcracker.py

2.2 参数列表

$ python pwcracker.py -h
usage: pwcracker.py [options]

* An expandable password cracking framework. *
By c0ny1 (http://gv7.me)

optional arguments:
  -h, --help            show this help message and exit

CRACK:
  -t TARGET             The target to crack,target format:protocol://path:port
  -T FILE               Load the target file to be cracked.
  -u USERNAME, --username USERNAME
                        The user name to crack.
  -U FILE               The user name dictionary file to load.
  -p PASSWORD, --password PASSWORD
                        Passwords to crack.
  -P FILE               Load the password dictionary file to be cracked.
  -r THREADS            Num of scan threads for each scan process, 3 by default

SHOW:
  -s, --show            Show all plugins
  -i PLUGIN_NAME, --info PLUGIN_NAME
                        Show one plugins
  -v                    Show the details of the cracking password.
  -V, --version         show program's version number and exit

2.3 Example:

(1)爆破md5

python pwcracker.py -t md5:// -P D://password.txt

(2)爆破zip文件

python pwcracker.py -t zip://d://test.zip -U D://username.txt -P D://password.txt

(3)爆破telnet

python pwcracker.py -t telnet://192.168.1.108:23 -U D://username.txt -P D://password.txt

三、插件列表

序号 插件 描述
1 md2 用于爆破md2算法的密文
2 md4 用于爆破md4算法的密文
3 md5 用于爆破md5算法的密文
4 sha1 用于爆破sha1算法的密文
5 sha224 用于爆破sha224算法的密文
6 sha256 用于爆破sha256算法的密文
7 sha384 用于爆破sha384算法的密文
8 sha512 用于爆破sha512算法的密文
9 ftp 用于爆破ftp服务的账户密码
10 ssh 用于爆破ssh服务的账户密码
11 telnet 用于爆破telnet服务的账户密码
12 mysql 用于爆破mysql数据库的账户密码
13 oracle 用于爆破oracle数据库的账户密码
14 oracle_sid 用于爆破oracle数据库的sid
15 mssql 用于爆破mssql数据库的账户密码
16 vnc 用于爆破vnc服务的账户密码
17 7z 用于爆破7z文件的密码
18 rar 用于爆破rar文件的密码
19 zip 用于爆破zip文件的密码
20 pdf 用于爆破pdf文件的密码

四、插件编写

4.1 插件模板:

#coding=utf-8

def plu_info():
	dict_plugin={};
	dict_plugin['name']="md5" # 插件名称
	dict_plugin['author']="c0ny1<root@gv7.me>" # 作者
	dict_plugin['date'] = "2018-09-24 18:23" # 最后更新时间
	dict_plugin['description'] = "Used to crack MD5 ciphertext." # 描述
	dict_plugin["usage"] = "python pwcracker.py -t test://127.0.0.1 -u root -p root" # 使用例子
	return dict_plugin

def doCheck(address,username_list,password_list):
	pass

def doCracker(address,username,password):
	pass

4.2 说明

  1. plu_info()函数用于返回插件的一些信息,当执行python pwcracker.py --info plugin_name,会在控制台显示插件的信息。

  2. doCheck(address,username_list,password_list)函数是在爆破前对爆破的目标,字典列表,密码列表进行检查。如果检查合格则返回True,就可以进行爆破了。若果检查是存在问题,则返回False,框架就会终止运行并提示不合法的数据位置。

  3. doCrack(address,username,password)函数是必须要实现的。传入的参数分别是爆破的目标,用户名和密码。我们需要在函数体内实现爆破的核心功能。爆破成功,则return True,msg,失败则return False,msg。这里msg是成功或者失败附带的信息,没有的话可以设置为None。

注意:

  1. plu_info()和doCheck(address,username_list,password_list)为可选实现,doCrack(address,username,password)必须实现!
  2. 具体例子可以参数项目plus下的插件。

4.3 API

框架提供的API

api 描述
getPath(address) 从目标address中分析出路径,或者主机等目标主体等信息
getPort(address) 从目标address中分析出port
getParam(address) 从目标address中分析出携带的参数
isIP(ip) 判断是否是合法的ip
isPort(port) 判断是否是合法的port,即范围为大于等于0,小于等于65535
checkIP 检查ip是否存活
checkPort 检查端口是否开放

五、参考项目