python写密码函数_python函数的实例,书写一个创建有针对性的专用密码字典的程序...

python学习,实战学习,函数的学习与使用,综合知识的运用。包括for ,while循环,if...else.. 和if... elif ... else 的条件判断!

问题描述:书写一个创建有针对性的专用密码字典的程序,其中包括的功能模块有:

0,退出程序

1,输入密码原始字符串

2,添加非法字符到列表

3,清空原始密码列表

4,整理原始密码列表

5,改变默认密码长度

6,创建密码列表

7,显示所有密码

8,创建字典文件

实例代码:

#coding=utf-8

'''

Created on 2017年6月1日

@author: 叮当

'''

import os

import platform

import itertools

import time

def main():

''' 主程序 '''

global rawList #原始数据列表

rawList = []

global denyList #非法单词列表

denyList = [' ', '', '@']

global pwList #最终的密码列表

pwList = []

global minLen #密码的最小长度

minLen = 6

global maxLen #密码的最大长度

maxLen = 16

global timeout

timeout = 3

global flag

flag = 0

run ={

'0':exit, #退出

'1':getRawList, #创建原始列表

'2':addDenyList, #添加不可能出现的元素

'3':clearRawList, #清空列表

'4':setRawList, #原始列表排序

'5':modifyPasswordLen, #修改最终密码的长度

'6':createPasswordList, #创建最终的字典列表

'7':showPassword, #显示密码

'8':createPasswordFile #创建密码文件

}

while True:

mainMenu()

op = raw_input('输入选项:')

if op in map(str, range(len(run))):

run.get(op)()

else:

tipMainMenuInputError()

continue

def mainMenu():

''' 主菜单 '''

global denyList

global rawList

global pwList

global flag

clear()

print(u'| |'),

print(u'='*40)

print(u'| |')

print(u'| | 0: 退出程序')

print(u'| | 1: 输入密码原始字符串')

print(u'| | 2: 添加非法字符到列表')

print(u'| | 3: 清空原始密码列表')

print(u'| | 4: 整理原始密码列表')

print(u'| | 5: 改变默认密码长度(%d-%d)' %(minLen, maxLen))

print(u'| | 6: 创建密码列表')

print(u'| | 7: 显示所有密码')

print(u'| | 8: 创建字典文件')

print(u'| |'),

print(u'='*40)

print(u'| |')

print(u'当前非法的字符为:%s' %denyList)

print(u'当前原始密码元素为:%s' %rawList)

print(u'共有密码%d个' %len(pwList))

if flag:

print(u'已在当前目录创建密码文件dic.txt')

else:

print(u'尚未创建密码文件')

def clear():

''' 清屏函数 '''

OS = platform.system()

if ( OS == u'Windows'):

os.system('cls')

else:

os.system('clear')

def tipMainMenuInputError():

''' 错误提示 '''

clear()

print(u'只能输入0-7的整数,等待%id秒后重新输入' %timeout)

time.sleep(timeout)

def getRawList():

''' 获取原始数据列表 '''

clear()

global denyList

global rawList

print(u'输入回车后直接退出')

print(u'当前添加密码列表为: %s' %rawList)

st = None

while not st == '':

st = raw_input('请输入密码元素字符串:')

if st in denyList:

print(u'这个字符串是预先设定的非法字符串')

continue

else:

rawList.append(st)

clear()

print(u'输入回车后直接退出')

print(u'当前添加密码列表为: %s' %rawList)

def addDenyList():

''' 添加非法词 '''

clear()

global denyList

print(u'输入回车后直接退出')

print(u'当前非法字符为: %s' %denyList)

st = None

while not st == '':

st = raw_input('请输入需要添加的非法字符串:')

denyList.append(st)

clear()

print(u'输入回车后直接退出')

print(u'当前非法字符列表为: %s' %denyList)

def clearRawList():

''' 清空原始数据列表 '''

global rawList

rawList = []

def setRawList():

''' 整理'原始数据列表 '''

global rawList

global denyList

a = set(rawList)

b = set(denyList)

rawList = []

for str in set(a - b):

rawList.append(str)

def modifyPasswordLen():

''' 修改默认密码长度 '''

clear()

global maxLen

global minLen

while True:

print(u'当前密码长度为:%d-%d' %(minLen-maxLen))

min = raw_input("请输入密码的最小长度:")

max = raw_input("请输入密码的最大长度:")

try:

minLen = int(min)

maxLen = int(max)

except ValueError:

print(u'密码长度只能输入数字[6-18]')

break

if minLen not in xrange(6,19) or maxLen not in xrange(6,19):

print(u'密码长度只能输入数字[6-18]')

minLen = 6

maxLen = 16

continue

if minLen ==maxLen:

res = raw_input("确定将密码长度设定为%d吗?(Yy/Nn)" %minLen)

if res not in list('YyNn'):

print(u'输入错误,请重新输入')

continue

elif res in list('yY'):

print(u'好吧,你确定就好')

break

else:

print(u'给个机会,改一下吧')

continue

elif minLen > maxLen:

print(u'最小长度比最大长度还大,可能吗?请重新输入')

minLen = 6

maxLen = 16

else:

print(u'设置完毕,等待%d秒后回到主菜单' %timeout)

time.sleep(timeout)

break

def createPasswordList():

''' 创建密码列表 '''

global rawList

global pwList

global maxLen

global minLen

titleList = []

swapcaseList = []

for st in rawList:

swapcaseList.append(st.swapcase())

titleList.append(st.title())

sub1 = []

sub2 = []

for st in set(rawList + titleList +swapcaseList):

sub1.append(st)

for i in xrange(2,len(sub1)+1):

sub2 += list(itertools.permutations(sub1, i))

for tup in sub2:

PW = ''

for subPW in tup:

PW += subPW

if len(PW) in xrange(minLen, maxLen + 1):

pwList.append(PW)

else:

pass

def showPassword():

''' 显示创建的密码 '''

global pwList

global timeout

for i in xrange(len(pwList)):

if i%4 == 0:

print("%s\n" %pwList[i])

else:

print("%s\t" %pwList[i])

print("\n")

print(u'显示%d秒,回到主菜单' %timeout)

time.sleep(timeout)

def createPasswordFile():

''' 创建密码字典文件 '''

global flag

global pwList

print(u'当前目录下创建字典文件dic.txt')

time.sleep(timeout)

with open('./dic.txt', 'w+') as fp:

for PW in pwList:

fp.write(PW)

fp.write('\n')

flag =1

if __name__ == '__main__':

main()

运行结果截图:

4f81af901e620b203d95825626b31390.png

508ad815b5523f098bd76f1a2d4acedc.png

78c8151a202971b480aaacaa789a8b49.png

62f630079f71af99bebf6d1eaacd660f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值