暴力破解加密压缩文件

暴力破解加密压缩文件实验目的应用Python程序设计语言的相关知识,对加密的压缩文件进行破解。实验所用仪器(或实验环境)Python3.8实验基本原理及步骤(或方案设计及理论计算)任务1:定义一个函数,函数带有一个参数L(类型为整数),函数返回一个长度为L、包含大小写字母和数字的随机密码(类型为字符串)。在任务1中,可以借助random中的choice,以及string库中的ascii_letters;至少用3个不同的长度测试函数的返回值。ascii_letters基本上是ascii_lowercase和

大家好,又见面了,我是你们的朋友全栈君。

  • 实验目的

应用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 2020

@author: natur
"""

import string
import random
import re
import zipfile

def rand_pass(L): #int
    generate_pass = ''.join([random.choice(string.ascii_letters + string.digits)
                             for i in range(L)])
    return generate_pass

def check_pass(password):  #string
    if len(password) < 2:
        return False
    else:
        lowerRe = re.compile('[a-z]')
        upperRe = re.compile('[A-Z]')
        digitRe = re.compile('[0-9]')
        #wrongRe = re.compile("[^a-zA-Z0-9]")  #not match
        #elif true_pass.search(password) != None:  #无效字符
            #return False
        if(lowerRe.search(password) != None and upperRe.search(password) != None
           and digitRe.search(password) != None):
            return True
        else:
            return False
        
def ZipPwd(zip_file,password):
    if zipfile.is_zipfile(zip_file) != True:
        return print("非有效的zipfile")
    else:
        with zipfile.ZipFile(zip_file,"r") as zFile:#read zipfile
            try:
                zFile.extractall(pwd = str.encode(password))  #1.运行了一个半小时还没结果
                #zFile.extractall(pwd = password)  #2.可以很快解压成功,但口令不对
                print("zip文件解压成功,密码为:%s"%(password))
                return True
            except:
                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 = password0
            if ZipPwd(zip_file,password) == True:
                break
            

            

            
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136779.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Qt5学习笔记——QRadioButton与QButtonGroup[通俗易懂]

    Qt5学习笔记——QRadioButton与QButtonGroup[通俗易懂]【我是小标题:使用QToolButton实现radiobutton功能。】QRadioButton是什么?  下图是Windows系统中典型的radiobutton显示效果。    QRadioButton是一个可以switchon或off的按钮,对应的状态为checked和unchecked。一组QRadioButton通常用于表示程序中“多选一”的选择,例如单项选择题。在一组r

    2022年10月29日
  • imx6 添加matrix keypad

    imx6 添加matrix keypadfreescale增加matrixkeypad1.添加设备树,imx6有矩阵键盘功能,支持8*8的键盘kernel_imx/arch/arm/boot/dts/imx6qdl.dtsi/*addedbyyue.zhong*/#include//键值定义的地方,这是一个链接文件,指向kernel_imx/include/dt-bindings/input/i

  • 解决docker下载镜像速度过慢_docker image是什么

    解决docker下载镜像速度过慢_docker image是什么前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

  • python写入换行符_python write换行

    python写入换行符_python write换行在Python中,用open()函数打开一个txt文件,写入一行数据之后需要一个换行如果直接用f.write(’\n’)只会在后面打印一个字符串’\n’,而不是换行’需要用f.write(’\r\n’)注意点:1、python文件写入的时候,当写入一段话之后叠加一个换行符#特别注意的是python中的换行是\n,而不是/n是反斜杠\,而不是斜杠/例子#先写入一…

  • 现代文译为古文(形容环境幽静雅致的古诗)

    现代文译为古文(形容环境幽静雅致的古诗)1.今文:身不由己古译:向来心是看客心,奈何人是剧中人。2.今文:我们越来越陌生了古译:相達何必曾相识,再看君卿已陌路。3.今文:我也不想你,你也就别想我了,古译:我断不思量,你莫思量我。4.今文:物是人非,我们回不去了,古译:柳絮随风各西东,人事无非已不同。5.今文:每时每刻都在想你古译:思君如流水,何有穷已时。6.今文:再看熟悉的地方,一切物是人非古译:青瓦长忆旧时雨,朱伞深巷无故人…

  • 自编码器原理概述_编码器结构及工作原理

    自编码器原理概述_编码器结构及工作原理个人博客:http://www.chenjianqu.com/原文链接:http://www.chenjianqu.com/show-62.html自编码器的概念自编码器(Auto-Encoder),是一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。自编码器由两部分组成:编码器:这部分能将输入压缩成潜在空…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号