Python 实现专属字典生成器
编写一个密码生成工具,这里我们使用弱密码与个性化数组组合形成一个定制字典,例如收集用户的姓名,昵称,QQ号手机号等资源,然后通过Python对搜集到的数据与弱密码进行结合,从而定制出属于某个人的专属密码集,从而提高破解的成功率,一般而言使用Python可以很容易的生成专属字典。
这段弱密码生成代码如下所示:
import os,sys
from random import randint,sample
import argparse
def Open_File(file):
with open(file,"r",encoding="utf-8") as fp:
for item in fp.readlines():
data = "".join(item.split("\n"))
yield data
# 调用: OrderDict("template.log","pass.log",world,flag)
def OrderDict(template,outfile,world,flag):
Count = 0
fp = open(outfile,"a+",encoding="utf-8")
if len(flag) <= 0:
for item in Open_File(template):
for w in world:
fp.write(w + item + "\n")
fp.write(item + w + "\n")
Count = Count + 2
else:
for item in Open_File(template):
for w in world:
for f in flag:
fp.write(item + w + f + "\n")
fp.write(item + f + w + "\n")
fp.write(w + item + f + "\n")
fp.write(w + f + item + "\n")
fp.write(f + item + w + "\n")
fp.write(f + w + item + "\n")
Count = Count + 6
fp.close()
print("[+] 总共生成弱密码条数: {}".format(Count))
# 调用: RandomDict("pass.log",world,flag)
def RandomDict(outfile,world,flag):
Count = 0
fp = open(outfile,"a+",encoding="utf-8")
if len(flag) <= 0:
for item in range(1,1000):
random = sample(world, 2)
fp.write(random[0]+random[1] + "\n")
Count = Count + 1
else:
for item in range(1,1000):
random = sample(world, 2)
for f in flag:
fp.write(random[0] + random[1] + f + "\n")
fp.write(f + random[0] + random[1] + "\n")
fp.write(random[0] + f + random[1] + "\n")
Count = Count + 3
fp.close()
print("[+] 总共生成随机密码条数: {}".format(Count))
def Banner():
print(" _ ____ _ _ ")
print(" | | _ _/ ___|| |__ __ _ _ __| | __")
print(" | | | | | \___ \| '_ \ / _` | '__| |/ /")
print(" | |__| |_| |___) | | | | (_| | | | < ")
print(" |_____\__, |____/|_| |_|\__,_|_| |_|\_\\")
print(" |___/ \n")
print("E-Mail: me@lyshark.com")
if __name__== "__main__":
#关键字: world = ["wang","lyshark","1997","qew","1104"]
#标志: flag = ["@","!","#"]
Banner()
parser = argparse.ArgumentParser()
parser.add_argument("-t","--template",dest="template",help="指定一个基础模板字典.")
parser.add_argument("-k","--keyword",dest="keyword",help="指定一些关键字,用逗号分隔.")
parser.add_argument("-s","--symbol",dest="symbol",help="指定一些特殊符号,用逗号分隔.")
parser.add_argument("-o","--outfile",dest="outfile",help="指定输出字典的名字.")
args = parser.parse_args()
if args.template and args.keyword and args.outfile:
world = [item for item in args.keyword.split(",")]
if args.symbol == None:
# 使用方式: main.py -t template.log -k lyshark,wang,19981211 -o pass.log
flag = []
OrderDict(args.template,args.outfile,world,flag)
else:
# 使用方式: main.py -t template.log -k lyshark,wang,19981211 -s !,@,#,$ -o pass.log
flag = [item for item in args.symbol.split(",")]
OrderDict(args.template,args.outfile,world,flag)
else:
parser.print_help()
使用方法: -t指定模板字典,-k指定关键字序列,以逗号分隔开-s指定一些特殊符号可以不写-o指定输出后的文件名。
- 不指定特殊字符: main.py -t temp.log -k lyshark,wang,abc,zhangsan -o pass.log
- 指定特殊字符: main.py -t temp.log -k lyshark,wang,19981211 -s !,@,#,$ -o pass.log
Python 实现专属字典生成器的更多相关文章
- 基于python的密码字典生成器
最近在网上看到一些作品,然后对其进行了一些完善.只是用于学习,不要去干坏事哦.程序来源于网络,我只是做了一些优化. #!/usr/bin/python# -*- coding:utf-8 -*-# @ ...
- python写一个数字字典生成器
#数字字典生成器 by qianxiao996 #博客地址:https://blog.csdn.net/qq_36374896 #此程序输入开始结束和位数即可在程序所在目录下生成字典 #只支持数字生成 ...
- Python之迭代器,生成器
迭代器 1.什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. from collections import Iterable l = [1,2,3,4] t ...
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- python之迭代器与生成器
python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i i ...
- Python装饰器、生成器、内置函数、json
这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如 ...
- day13 python学习 迭代器,生成器
1.可迭代:当我们打印 print(dir([1,2])) 在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 ...
- Python之迭代器及生成器
一. 迭代器 1.1 什么是可迭代对象 字符串.列表.元组.字典.集合 都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? from collections import Itera ...
- Python之迭代器和生成器(Day17)
一.可迭代对象(iterable) 刚才说过,很多容器都是可迭代对象,此外还有更多的对象同样也是可迭代对象,比如处于打开状态的files,sockets等等.但凡是可以返回一个迭代器的对象都可称之为可 ...
- python学习笔记(四):生成器、内置函数、json
一.生成器 生成器是什么?其实和list差不多,只不过list生成的时候数据已经在内存里面了,而生成器中生成的数据是当被调用时才生成呢,这样就节省了内存空间. 1. 列表生成式,在第二篇博客里面我写了 ...
随机推荐
- FOR ALL ENTRIES IN 与 INNER JOIN 内表
1.区别 FOR ALL ENTRIES IN 与 INNER JOIN 内表,目的都是通过内表找数据库表与之对应的数据,但是有区别. 1.1.写法 FOR ALL ENTRIES IN " ...
- SpringBoot 项目实战 | 瑞吉外卖 Day06
该系列将记录一份完整的实战项目的完成过程,该篇属于第六天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 用户地址簿相关功能 菜品 ...
- <vue 基础知识 7、循环遍历>
代码结构 一. 01-v-for遍历数组 1.效果 2.代码 01-v-for遍历数组.html <!DOCTYPE html> <html lang="en&qu ...
- 如何利用ChatGPT帮你写代码?
最近爆火的ChatGpt相信大家都不陌生,听说它还能写代码,而且能力不凡.作为合格的嵌入式软件工程师,必须得充分利用起来! 获取系统IP地址 先写一个脚本,获取系统IP地址吧,没想到还有详细的注释!这 ...
- 记一次el-checkbox包裹一层div,点击div勾选复选框,点击复选框却没反应的bug
<div class="account-item" v-for="item in accountList" :key="item.id" ...
- Element 动态表头渲染表格
element 中的table表头动态渲染 https://blog.csdn.net/heixiuheixiu666/article/details/104705024/ Element 动态表头渲 ...
- fetch与axios
- Windows Terminal 配色方案
{ "background": "#FFF2E2", "black": "#000000", "blue&qu ...
- RL 基础 | 如何搭建自定义 gym 环境
需实现的方法: __init__(self): 需定义 action_space 和 observation_space,使用 space.Box 之类来表示(from gym import spac ...
- 阿里巴巴MYSQL 开发规范
转载请注明出处: (一) 建表规约 1. [强制]表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否). 说明:任何字段如果 ...