编写一个密码生成工具,这里我们使用弱密码与个性化数组组合形成一个定制字典,例如收集用户的姓名,昵称,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 实现专属字典生成器的更多相关文章

  1. 基于python的密码字典生成器

    最近在网上看到一些作品,然后对其进行了一些完善.只是用于学习,不要去干坏事哦.程序来源于网络,我只是做了一些优化. #!/usr/bin/python# -*- coding:utf-8 -*-# @ ...

  2. python写一个数字字典生成器

    #数字字典生成器 by qianxiao996 #博客地址:https://blog.csdn.net/qq_36374896 #此程序输入开始结束和位数即可在程序所在目录下生成字典 #只支持数字生成 ...

  3. Python之迭代器,生成器

    迭代器 1.什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. from collections import Iterable l = [1,2,3,4] t ...

  4. python基础—迭代器、生成器

    python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...

  5. python之迭代器与生成器

    python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i i ...

  6. Python装饰器、生成器、内置函数、json

    这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如 ...

  7. day13 python学习 迭代器,生成器

    1.可迭代:当我们打印 print(dir([1,2]))   在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 ...

  8. Python之迭代器及生成器

    一. 迭代器 1.1 什么是可迭代对象 字符串.列表.元组.字典.集合 都可以被for循环,说明他们都是可迭代的. 我们怎么来证明这一点呢? from collections import Itera ...

  9. Python之迭代器和生成器(Day17)

    一.可迭代对象(iterable) 刚才说过,很多容器都是可迭代对象,此外还有更多的对象同样也是可迭代对象,比如处于打开状态的files,sockets等等.但凡是可以返回一个迭代器的对象都可称之为可 ...

  10. python学习笔记(四):生成器、内置函数、json

    一.生成器 生成器是什么?其实和list差不多,只不过list生成的时候数据已经在内存里面了,而生成器中生成的数据是当被调用时才生成呢,这样就节省了内存空间. 1. 列表生成式,在第二篇博客里面我写了 ...

随机推荐

  1. 蓝桥杯历年省赛试题汇总 C/C++ B组

    B组 省赛 部分 A组的题目可以在这里查看 → 刷题笔记: 蓝桥杯 题目提交网站:Here 2012 第三届 微生物增殖 古堡算式 海盗比酒量 奇怪的比赛 方阵旋转 大数乘法 放旗子 密码发生器 夺冠 ...

  2. vue插件实现循环滚动列表——vue-seamless-scroll

    https://blog.csdn.net/weixin_45389051/article/details/106379832?utm_medium=distribute.pc_relevant.no ...

  3. C# 防XSS攻击 示例

    思路: 对程序代码进行过滤非法的关键字 新建控制台程序,编写代码测试过滤效果 class Program { static void Main(string[] args) { //GetStrReg ...

  4. STM32CubeMX教程19 I2C - MPU6050驱动

    1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST- ...

  5. Hive(2)-Hive安装及简单使用

    本文的安装版本为Hive 3.1.2,且安装为单节点. 1. 安装参考及注意事项 (1) 官网:http://hive.apache.org/ (2) 上篇博客:Hadoop 3.1.3伪分布式环境安 ...

  6. SV interface and Program3

    时钟域的理解 在仿真过程中,时钟跳变的一瞬间,CPU将时间域划分为不同的时钟域执行不同的代码 信号在芯片中都是金属丝,在进行跳变的时候都是电容的充放电过程,通常使用时钟上升沿进行模拟,而不使用时钟下降 ...

  7. 12-异步FIFO

    1.异步FIFO的应用 跨时钟域 批量数据 传输效率高 2.异步FIFO结构 FIFO深度 - 双端口RAM设计 3.异步FIFO深度计算 4.异步FIFO读写地址的编码 5.异步FIFO读写时钟域的 ...

  8. IDEA控制台输出中文乱码

    1.问题 如下图,我使用的文件编码格式为UFT-8,这里会出现中文乱码的问题. 且我并不方便直接修改全局文件编码格式,有可能会造成未知错误. 2.解决 参考链接:IDEA 控制台中文乱码 4 种解决方 ...

  9. 神经网络优化篇:详解局部最优的问题(The problem of local optima)

    局部最优的问题 在深度学习研究早期,人们总是担心优化算法会困在极差的局部最优,不过随着深度学习理论不断发展,对局部最优的理解也发生了改变.向展示一下现在怎么看待局部最优以及深度学习中的优化问题. 这是 ...

  10. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.25)

    来给大家伙送福利了! 一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘, ...