Giter Site home page Giter Site logo

bit4woo / passmaker Goto Github PK

View Code? Open in Web Editor NEW
534.0 16.0 118.0 841 KB

可以自定义规则的密码字典生成器,支持图形界面 A password-generator that base on the rules that you specified

Home Page: https://github.com/bit4woo/passmaker_java

License: GNU General Public License v3.0

Python 100.00%
password-generator password-safety password rules gui-application

passmaker's Introduction

Java版本:

https://github.com/bit4woo/passmaker_java

passmaker

项目地址:https://github.com/bit4woo/passmaker

运行环境:python 2.7.*

0x0、目的

该脚本的主要目标是根据定制的规则来组合生成出密码字典,主要目标是针对企业,希望对安全人员自查“符合密码策略的弱密码”有所帮助。

0x1、规则

使用的核心是密码规则的指定,程序将根据你指定的规则来生成密码。比如:

  • domain+常规弱密码(666666、88888888)
  • domain+键盘弱密码(11qaz2wsx 、zxcv)
  • domain+特殊字符(!@#$)+常规弱密码 (666666、88888888)
  • domain+特殊字符(!@#$)+年份(2017、2018)
  • 等等其他规则

0x2、使用

下载项目源码

git clone https://github.com/bit4woo/passmaker
cd passmaker
python passmaker.py #方法一,需先修改配置文件,要求一定的python基础知识
python passmaker.py -i #方法二,命令行交互方式
python passmaker.py -g #方法三,通过图形界面方式,MAC OS下可能会有问题

方法一:通过config.py

通过修改config.py中的参数,然后直接运行python passmaker.py来生成密码字典。

screnshot_config

其实详细说明已经写在配置文件的注释中了,如下:

#第一步,定义种子(seed),密码的基本组成部分,必须是字典类型
domain= ["baidu.com","badidu"]
year = ["2015","2016","2017"]
special_letter = ["!","@","#","$","%",]
keyboard_walk = open('./seed/4_keyboard_walk.txt').readlines()
common_number = open('./seed/common_number.txt').readlines()
chinese_last_name = open('./seed/Chinese_last_name_top100.txt').readlines()
common_english_name = open('./seed/english_name.txt').readlines()


#第二步,定义密码的组成规则,这里用到的seed字段,都必须在第一步中定义好,而且是字典类型
#rule_list = ["domain+special_letter+year","domain+special_letter+keyboard_walk","domain+special_letter+common_number","domain+year","topic+special_letter+year","topic+special_letter+keyboard_walk","topic+special_letter+common_number","topic+year"]
rule_list = ["domain+special_letter+year"]
keep_in_order = True #以上的规则,是否保持原顺序,如果为False 将对每个规则中的seed进行排列组合后生产密码。


#第三步,对以上生成的密码再进行一些变形处理,变形后的密码不会覆盖之前的记录,而是新增一条。
capitalize = False  #是否进行首字母大写处理
leet = False       #是否进行变形处理
leet2num = {"a":"4",
            "i":"1",
            "e":"3",
            "t":"7",
            "o":"0",
            "s":"5",
            "g":"9",
            "z":"2"}

leet2string ={
            "O" : "()",
            "U" : "|_|",
            "D" : "|)",
            "W" : "\/\/",
            "S" : "$",
            }

leet_rule = leet2num #这个配置参数会被用于程序中,上面leet2num、leet2string是为了供你参考


#第四步,将一些常规的,可直接使用的密码字典合入最终的文件中。
additional_list = ["weak_pass_chinese.txt","weak_pass_top100.txt"]

#第五步,也是最后一步,根据以下密码规则约束,对以上生成的密码进行过滤处理,删除不满足条件的
#常见的密码要求:大写字母、小写字母、特殊符号、数字,四种包含三种
enable_filter = False
min_lenth = 1
filter_rule = {"Upper_letter": False, "Lower_letter": True, "Special_char": False, "Nummber": False}
kinds_needed = 3  # 四者包含其三

方法二:命令行交互

通过运行python passmaker.py -i来通过交互模式配置其中参数,然后生成密码字典。

screnshot

方法三:图形界面

通过运行python passmaker.py -g 来启用图形界面配置其中参数,然后运行生成密码字典。

image-20220729182813850

image-20220729182925355

image-20220729182941113

image-20220729183024073

image-20220729183108447

0x3、作者

bit4woo

如果有好的建议,欢迎通过issue提交给我,谢谢!

passmaker's People

Contributors

bit4woo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

passmaker's Issues

字典生成问题

[生成的字典有的地方换行不完善,导致很多密码都连在一块。希望可以改进下。

报错name 'i' is not defined

环境是macos+python 3.9.15 用3.9的原因是mac下面brew安装tk的包最低支持是3.9的python版本。

以下是配置规则,使用 #rule_list = ["domain+special_letter+year"] 规则的时候不会报错。但是使用第一条rule_list的时候就会报错
name 'i' is not defined

猜测应该是python版本引起的,不知道这个 i 是哪里定义的,能否改一下兼容性。 谢谢。

year = ["2020","2021","2022"]
special_letter = ["!","@","#","$","%"]
keyboard_walk = open('./seed/4_keyboard_walk.txt').readlines()
common_number = open('./seed/common_number.txt').readlines()
chinese_last_name = open('./seed/Chinese_last_name_top100.txt').readlines()
common_english_name = open('./seed/english_name.txt').readlines()


#第二步,定义密码的组成规则,这里用到的seed字段,都必须在第一步中定义好,而且是字典类型
rule_list = ["domain+special_letter+year","domain+special_letter+keyboard_walk","domain+special_letter+common_number","domain+year","topic+special_letter+year","topic+special_letter+keyboard_walk","topic+special_letter+common_number","topic+year"]
#rule_list = ["domain+special_letter+year"]
keep_in_order = False #以上的规则,是否保持原顺序,如果为False 将对每个规则中的seed进行排列组合后生产密码。


#第三步,对以上生成的密码再进行一些变形处理,变形后的密码不会覆盖之前的记录,而是新增一条。
capitalize = True #是否进行首字母大写处理
leet = False       #是否进行变形处理
leet2num = {"a":"4",
            "i":"1",
            "e":"3",
            "t":"7",
            "o":"0",
            "s":"5",
            "g":"9",
            "z":"2"}

leet2string ={
            "O" : "()",
            "U" : "|_|",
            "D" : "|)",
            "W" : "\/\/",
            "S" : "$",
            }

leet_rule = leet2num #这个配置参数会被用于程序中,上面leet2num、leet2string是为了供你参考


#第四步,将一些常规的,可直接使用的密码字典合入最终的文件中。
additional_list = ["weak_pass_chinese.txt","weak_pass_top100.txt"]

#最后一步,根据以下密码规则约束,对以上生成的密码进行过滤处理,删除不满足条件的
#大写字母、小写字母、特殊符号、数字,四种包含三种---常见的密码要求
enable_filter = True
min_lenth = 8
filter_rule = {"Upper_letter": False, "Lower_letter": True, "Special_char": False, "Nummber": False}
kinds_needed = 3  # 四者包含其三


if __name__ =="__main__":
    print(type(keyboard_walk))

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.