暴力破解加密压缩文件

暴力破解加密压缩文件实验目的应用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
            

            

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云设置DDNS(动态域名解析)

    阿里云设置DDNS(动态域名解析)阿里云设置DDNS(动态域名解析)搭建内网服务器时,因为运营商分配的公网ip地址是动态的。在一段时间后或者重启路光猫后,会导致公网ip变化,此时阿里云设置DNS将失效。因此需要进行动态域名解析。阿里云没有像花生壳一样的内置到路由器的动态域名解析服务。所以,我们没办法在路由器段进行动态域名解析设置。但是,阿里云提供了DNS的API,各个语言的API都有,因此我们可以在服务器端来实现这个动态域名解析服务。下面讲一下我实现的整个过程,我是通过go语言完成的。如下。1.设置DNS域名解析服务进入阿里云的

    2022年6月7日
    50
  • Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」

    Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」CCFCSP认证考试真题(201712-2):游戏问题描述解题思路参考答案测试用例小结问题描述试题编号: 201712-2试题名称: 游戏时间限制: 1.0s内存限制: 256.0MB问题描述  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。  游戏开始,从1…

    2025年9月1日
    7
  • Spring Aop底层原理详解(利用spring后置处理器实现AOP)

    Spring Aop底层原理详解(利用spring后置处理器实现AOP)写在前面:对于一个java程序员来说,相信绝大多数都有这样的面试经历,面试官问:你知道什么是aop吗?谈谈你是怎么理解aop的?等等诸如此类关于aop的问题。当然对于一些小白可能会一脸懵逼;对于一些工作一两年的,可能知道,哦!aop就是面向切面变成,打印日志啊,什么什么的,要是有点学习深度的呢可能会说aop底层实现利用了jdk动态代理,cglib啊什么的。很多时候可能面试就到此打住了,当然,然后也…

    2025年12月5日
    2
  • 与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输

    与阿根廷一起学习Java Web四个发展:对于信息传输和信息传输

    2022年1月5日
    45
  • 阻止mouseover冒泡行为_onmousedown是什么意思

    阻止mouseover冒泡行为_onmousedown是什么意思一.onmouseenter、onmouseoveronmouseenter事件在鼠标指针进入到绑定事件的那个元素上时触发。该事件通常与onmouseleave(在鼠标指针离开绑定事件的那个元素上时触发)事件一同使用。onmouseenter事件类似于onmouseover事件。唯一的区别是onmouseenter事件不支持冒泡。二.实例演示onmousemov…

    2022年10月8日
    3
  • 密码攻略 黑客亲手打造QQ密码激活成功教程器(转)

    密码攻略 黑客亲手打造QQ密码激活成功教程器(转)密码攻略黑客亲手打造QQ密码激活成功教程器(转)[@more@]现在使用QQ的网友越来越多了。可是如果密码忘记了或嫌输入QQ密码过于麻烦,那怎么办呢。我们可以自己制作一款QQ密码器。如果你感兴趣的话。可以和我一起自己动手做一个这样的Q…

    2022年7月20日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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