首页 渗透工具 正文
  • 本文约2919字,阅读需15分钟
  • 9343
  • 0

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

密码破解脚本调用框架,目前支持密文,文件,服务和应用等类型的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

三、插件列表

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

四、插件编写

4.1 插件模板:

#coding=utf-8

def plu_info():
    dict_plugin={};
    dict_plugin['name']="md5" # 插件名称
    dict_plugin['author']="c0ny1<[email protected]>" # 作者
    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检查端口是否开放

五、参考项目

温馨提示:本文最后更新于2019年5月8日 05:31,若内容或图片失效,请在下方留言或联系博主。
评论
更换验证码