暴力破解加密压缩文件

暴力破解加密压缩文件实验目的应用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)
上一篇 2022年6月3日 上午6:36
下一篇 2022年6月3日 上午6:36


相关推荐

  • 【数据结构与算法】详解什么是双向链表,并用代码手动实现一个双向链表

    【数据结构与算法】详解什么是双向链表,并用代码手动实现一个双向链表上一篇文章讲解了链表的相关知识 并用代码实现了一个链表结构 那么本文将介绍一下另一种特殊的链表结构 叫做双向链表 顾名思义 普通的链表都是从 head 开始往后遍历结构内的元素 那么双向链表就是既可以从头开始遍历 又可以从结构的末尾开始遍历 上一篇文章的跳转链接 本文就来详细讲解一下双向链表的概念以及如何实现一个双向链表 公众号 Lpyexplore 的编程小屋关注我 每天更新 带你在 python 爬虫的过程中学习前端 还有更多电子书和面试题等你来拿数据结构 双向链表一 什么是双向链表二

    2026年3月18日
    2
  • android 系统签名

    android 系统签名最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份。   安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID在应用程序安装到设

    2022年6月21日
    32
  • java多线程编程详细入门教程

    java多线程编程详细入门教程1 概念 amp amp nbsp amp amp nbsp amp amp nbsp amp amp nbsp amp amp nbsp 线程是 jvm 调度的最小单元 也叫做轻量级进程 进程是由线程组成 线程拥有私有的程序技术器以及栈 并且能够访问堆中的共享资源 这里提出一个问题 为什么要用多线程 有一下几点 首先 随着 cpu 核心数的增加 计算机硬件的并行计算能力得到提升

    2026年3月18日
    1
  • “找不到VMware Tools 安装包”的解决办法——安装VMware Tools

    “找不到VMware Tools 安装包”的解决办法——安装VMware Tools最近刚接触虚拟机,在VMware下安装的是Ubuntu16.04.4。在安装完Ubuntu以后,想安装一个VMwareTools来解决文件在win10和虚拟机之间的拖拽问题,但是按照网上的教程左键点击“虚拟机——安装VMwareTools”选项卡以后没有找到VMwareTools的压缩包。VMwareTools的好处在于可以直接将win10下的文件拖拽或者复制粘贴到ubuntu中,而且…

    2022年5月9日
    366
  • Mysql+Mybatis分页查询

    Mysql+Mybatis分页查询一,首先做一个查询所有并显示daopublicinterfaceProductDAO{ publicList&lt;Product&gt;list();}mapper&lt;mappernamespace="hust.mm.dao.ProductDAO"&gt; &lt;selectid="list"resultType="Product"&gt; s..

    2022年6月2日
    107
  • golang 数据库开发(golang append)

    前言:微博参与话题#给你四年时间你也学不会生信#先前的富集分析教程本文主要针对非模式物种,但是有参考基因组可用1.R包安装及database下载#non-model,buthavethegenome>source(“https://bioconductor.org/biocLite.R”)>biocLite(“AnnotationHub”)>biocLite(…

    2022年4月14日
    82

发表回复

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

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