python暴力破解加密的压缩文件(一)

依旧在做实验之前,对实验中会应用到的一些知识做一个总结~~~~

文章目录

  • 一、生成由所有大小写字母和数字组成任意长度的字符串
      • 1.random模块的choice
      • 2.String模块的ascii_letters和digits
  • 二、re模块实现字符串匹配
      • 1.findall(匹配规则,要检验的字符串)
      • 2.search(匹配规则,要检验的字符串)
  • 三、借助zipfile模块打开压缩文件
      • zipfile模块中的ZipFile
        • 1.创建ZipFile对象,表示一个zip文件
        • 2.ZipFile.namelist()
        • 3.ZipFile.extract(member[, path[, pwd]])
        • 4.ZipFile.extractall([path[, members[, pwd]]])

一、生成由所有大小写字母和数字组成任意长度的字符串

1.random模块的choice

以下是官方的定义:

choice() 方法返回一个列表,元组或字符串的随机项。
以下是 choice() 方法的语法:
import random
random.choice( seq )
其中参数 seq – 可以是一个列表,元组或字符串。

测试一下:
python暴力破解加密的压缩文件(一)_第1张图片
其实就是从输入的列表、元组或字符串中随机选取一个元素输出。
python暴力破解加密的压缩文件(一)_第2张图片
这里的列表形式,使用join连接一下就会得到字符串形式:
python暴力破解加密的压缩文件(一)_第3张图片
这样我们就能得到十组每组六位的以‘1234ab’组成的字符串。

2.String模块的ascii_letters和digits

ascii_letters是生成所有字母,从a-z和A-Z
digits是生成所有数字0-9

测试样例:
python暴力破解加密的压缩文件(一)_第4张图片
好了,这样咱就能用所有大小写字母和数字组成任意长度的字符串了!!
示例:

import random, string
    
for i in range(10):
    chars = string.ascii_letters + string.digits
    s = [random.choice(chars) for i in range(7)]
    print('{0}'.format(''.join(s)))
    
#输出:
UfcVbQQ
ghZH23k
W3n0DPf
JeLSgmp
W9PVHTU
arp9WkU
8isgnpc
bQWZBYZ
IRWIZom
iNJQiV1

二、re模块实现字符串匹配

re模块(正则表达式)可以用来检验字符串是否符合某种规则,在密码合格验证程序中能起到很好的作用。

1.findall(匹配规则,要检验的字符串)

python暴力破解加密的压缩文件(一)_第5张图片
如果要取反输出的话,切记要在[]内部加入’^'号,例:
python暴力破解加密的压缩文件(一)_第6张图片
对比以下两个就知道:
python暴力破解加密的压缩文件(一)_第7张图片
python暴力破解加密的压缩文件(一)_第8张图片

2.search(匹配规则,要检验的字符串)

这个函数跟findall的不同之处在于,它在字符串里碰到第一个符合条件的字符就返回,不会再继续找了。另外,它返回的数据不是列表的形式,而是一个匹配对象(a match object),为了便于观察匹配的结果,我们可以借用group()方法。
python暴力破解加密的压缩文件(一)_第9张图片

三、借助zipfile模块打开压缩文件

zipfile模块中的ZipFile

zipfile是python里用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常常用的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了,现在只介绍一下ZipFile类中在本实验会用到的几个方法。

1.创建ZipFile对象,表示一个zip文件

import zipfile
f = zipfile.ZipFile(filename, 'r') # 这里的第二个参数用r表示是读取zip文件,w或a是创建一个zip文件

2.ZipFile.namelist()

功能:获取zip文档内所有文件的名称列表

for f_name in f.namelist(): #z.namelist() 会返回压缩包内所有文件名的列表。
    print(f_name)

3.ZipFile.extract(member[, path[, pwd]])

功能:将zip文档内的指定文件解压到当前目录。
说明:参数member指定要解压的文件名称或对应的ZipInfo对象;参数path指定了解析文件保存的文件夹;参数pwd为解压密码。

4.ZipFile.extractall([path[, members[, pwd]]])

功能:将zip文档内的所有文件解压到当前目录。
说明:参数members的默认值为zip文档内的所有文件名称列表,也可以自己设置,选择要解压的文件名称。

  注意:若是先创建的zip对象中有path路径,那么参数只需要给出pwd即可

你可能感兴趣的:(python暴力破解加密的压缩文件(一))