900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 暴力破解加密压缩文件

暴力破解加密压缩文件

时间:2019-01-15 21:49:18

相关推荐

暴力破解加密压缩文件

实验目的

应用Python程序设计语言的相关知识,对加密的压缩文件进行破解。

实验所用仪器(或实验环境)

Python3.8

实验基本原理及步骤(或方案设计及理论计算)

任务1:定义一个函数,函数带有一个参数L(类型为整数),函数返回一个长度为L、包含大小写字母和数字的随机密码(类型为字符串)。

在任务1中,可以借助random中的choice,以及string库中的ascii_letters;至少用3个不同的长度测试函数的返回值。

ascii_letters基本上是ascii_lowercase和ascii_uppercase字符串常量的串联。如图:

为了使密码中也包含数字,在使用string.digits。如图:

任务2:定义一个函数,函数带有一个参数(类型为字符串,表示一个密码),函数判断密码是否符合要求:8 位以上,包含英文大小写字母、数字。如果符合要求,返回True;否则返回False。

在任务2中,如果想尝试更简洁的代码,可以考虑使用re模块;测试用例可以参考以下8组:

测试用例 输入 输出

示例1 13t11jtk False

示例2 12345678901 False

示例3 3aA245362 True

示例4 123t2lASDJ True

示例5 password False

示例6 Avbw23r9gfs True

示例7 23523523613 False

示例8 AJFQWEFQWFK False

在这里使用re正则式进行匹配,需要该密码同时包含小写,大写以及数字。

任务 3:定义一个函数,函数带有两个参数,一个是要解压的文件路径,一个是解压密码。如果解压成功则返回True;否则返回False。

在任务3中,打开压缩文件可以借助模块zipfile中的ZipFile。

首先生成一个test3.txt文件,再在终端对其进行压缩和加密。

测试如图:

实验数据记录(或仿真及软件设计)

程序及运行结果:

最后将所有模块连接的时候存在问题,该代码还不完善

# -*- coding: utf-8 -*-"""Created on Sun May 10 16:33:48 @author: natur"""import stringimport randomimport reimport zipfiledef rand_pass(L): #intgenerate_pass = ''.join([random.choice(string.ascii_letters + string.digits)for i in range(L)])return generate_passdef check_pass(password): #stringif len(password) < 2:return Falseelse:lowerRe = pile('[a-z]')upperRe = pile('[A-Z]')digitRe = pile('[0-9]')#wrongRe = pile("[^a-zA-Z0-9]") #not match#elif true_pass.search(password) != None: #无效字符#return Falseif(lowerRe.search(password) != None and upperRe.search(password) != Noneand digitRe.search(password) != None):return Trueelse:return Falsedef ZipPwd(zip_file,password):if zipfile.is_zipfile(zip_file) != True:return print("非有效的zipfile")else:with zipfile.ZipFile(zip_file,"r") as zFile:#read zipfiletry:zFile.extractall(pwd = str.encode(password)) #1.运行了一个半小时还没结果#zFile.extractall(pwd = password) #2.可以很快解压成功,但口令不对print("zip文件解压成功,密码为:%s"%(password))return Trueexcept:print("zip文件解压失败,密码为:%s"%(password))return False#解密一个不知道密钥的压缩文件 if __name__ == '__main__':zip_file = input("请输入文件路径:")L = int(input("请输入猜测的密码的长度:"))while True:password0 = rand_pass(L)if check_pass(password0) == True:password = password0if ZipPwd(zip_file,password) == True:break

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。