Python生成密码词典(转载)

想要写这个代码是很久以前的事情了,以前就一直觉得密码只能记得个大概,知道一些元素,但又忘记了具体是什么,就很烦。。。然后前几天又有同学遇到了这个困惑,老是忘记自己学校账号的密码,于是就想着写这么一个脚本…可是由于自身水平不够,一直没想到怎么写,然后就在网上copy了一个脚本,顺便修改整合了一下。
该代码适用于在cmd命令行中运行,将你输入的密码单元以’*’显示
Talk is cheap,show me the code.Here we go.

#将密码以星号显示,idle无效,在cmd下有效
def pwd_input(msg = ''):  
    import msvcrt  
    if msg != '':  
        print(msg)  
    chars = []  
    while True:  
        newChar = str(msvcrt.getch(),encoding='utf-8')
        #newChar = msvcrt.getch()
        if newChar in '\3\r\n': # 如果是换行,Ctrl+C,则输入结束  
            print('')
            if newChar in '\3': # 如果是Ctrl+C,则将输入清空,返回空字符串  
                chars = []  
            break  
        elif newChar == '\b': # 如果是退格,则删除末尾一位  
            if chars:  
                del chars[-1]  
                msvcrt.putch(b'\b')
                msvcrt.putch(b' ')
                msvcrt.putch(b'\b')
        else:  
            chars.append(newChar)  
            msvcrt.putch(b'*') # 显示为星号  
    return ''.join(chars)
i=1
#=====================================================================
#以写的方式创建密码单元本
with open ("foo.txt", "w") as fo:
    text=' '
    while(text!=''):
        text=pwd_input('请输入密码的第%d个单元(按下回车结束输入):' %i)
        #text=input('请输入密码的第%d个单元(按下回车结束输入):' %i)
        i=i+1
        fo.write(text+'\n')

def createWords(currentWidth,wordslist,lastresultList,totalArray):
    if 1==currentWidth:
        lastresultList=[]
        lastresultList.extend(wordslist)
        totalArray.extend(wordslist);
        return lastresultList;
    else:
        preWords= createWords( currentWidth-1, wordslist, lastresultList,totalPwd)
        lastresultList=[]
        for word in wordslist:
            for lastWord in preWords:
                newResult=word+lastWord
                totalArray.append(newResult)
                lastresultList.append(newResult)
    return lastresultList
# ===========================================================================
fo=open('foo.txt','r')
array = [];
totalPwd= [];
for line in fo.readlines():
    line = line.strip("\n")
    array.append(line)
array.pop()
fo.close()
print('======================')
print('单元数据共:%d个' %(len(array)))


xwidth=int(input('请输入所要组成密码的单元数:')) #生成密码的用的元数据个数,生成2个单元的密码,这里可以为大于1的任何整数,
resultWorlds=createWords(xwidth,array,array,totalPwd)
print("组成的%d位密码共%d个" %(xwidth,len(resultWorlds)))
with open('pw.txt','w') as f:
    for i in range(len(totalPwd)):
        f.write(totalPwd[i]+'\n')

以上脚本使用方法:在cmd中运行,根据操作提示即可生成根据特定单元生成的密码字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值