zoukankan      html  css  js  c++  java
  • 【Python】zip文件密码破解

    掌握基础语法后,尝试使用python的zipfile模块练手。

    zipfile是Python里用来做zip格式编码的压缩和解压缩的。

    这里将大体的思路分解成四段代码,逐一完善功能;

    第一段代码:解压zip

    首先了解python解压zip文件的库

    import zipfile
    
    # 定义通用解压函数
    def tryZipPwd(zFile,savePath,pw =None):
    
        # 如果密码是空就直接解压,使用异常判断
        try:
            # 如果密码为空就直接解压
            if pw == None:
                zFile.extractall(path=savePath)
            else:
                # 将密码转换为utf-8编码
                zFile.extractall(path=savePath,pwd=pw.encode('utf-8'))
            print('[+] ZIp文件解压成功,密码:%s' %(pw))
            return True
        except:
            print('[-]Zip文件解压失败,密码:%s' % (pw))
            return False
    

    第二段 解压zip函数的使用

    将通用解压zip的函数,传入参数引用就可以了

    # 指定密码打开Zip文件,密码是123qwer
    #with zipfile.ZipFile('C:/Users/Windows32/Desktop/untitled/sucess.zip') as zFile:
    #    tryZipPwd(zFile,'C:/Users/Windows32/Desktop/untitled/','1234qwer')
    
    

    第三段代码 读取文件内容

    python逐行读取文件内容的三种方法;

    方法1:

    f = open("foo.txt")             # 返回一个文件对象  
    line = f.readline()             # 调用文件的 readline()方法  
    while line:  
        print line,                 # 后面跟 ',' 将忽略换行符  
        # print(line, end = '')   # 在 Python 3中使用  
        line = f.readline()  
    
    f.close()  
    

    方法2:

    for line in open("foo.txt"):  
        print line,  
    

    方法3:

    f = open("c:\1.txt","r")  
    lines = f.readlines()#读取全部内容  
    for line in lines  
        print line  
    

    第四段代码-读取密码文本,批量传入密码尝试解压zip文件

    综合以上的代码就可以实现zip压缩包的密码破解了,pass.txt是CSDN泄露的TOP100常用密码,写了for循环与while循环的代码;

    # -*- coding: utf-8 -*-
    import zipfile
    
    # 定义通用解压函数
    def tryZipPwd(zFile,savePath,pw =None):
    
        try:
            if pw == None:
                zFile.extractall(path=savePath)
            else:
                zFile.extractall(path=savePath,pwd=pw.encode('utf-8'))
            print('[+] ZIp文件解压成功,密码:%s' %(pw))
            return True
        except:
           # print('[-]Zip文件解压失败,密码:%s' % (pw))
            return False
    
    # 指定密码打开Zip文件
    #with zipfile.ZipFile('C:/Users/Windows32/Desktop/untitled/sucess.zip') as zFile:
    #    tryZipPwd(zFile,'C:/Users/Windows32/Desktop/untitled/','1234qwer')
    
    # 逐行读取文本里的密码,然后传入通用解压函数中
    passFile = open('C:/Users/Windows32/Desktop/untitled/pass1.txt')
    
    # for循环
    # 当破解成功后退出程序与关闭文件流
    for i in open('C:/Users/Windows32/Desktop/untitled/pass1.txt'):
        # 将文本里的换行清除
        password = i.strip('
    ')
        with zipfile.ZipFile('C:/Users/Windows32/Desktop/untitled/sucess.zip') as zFile:
            # 传回函数执行状态,如果返回结果为真,就代表解压zip文件成功,输出当前的密码
            flag = tryZipPwd(zFile,'C:/Users/Windows32/Desktop/untitled/',password)
            if flag:
                print("sucess pass is %s" % (i))
                exit(0)
                passFile.close()
        i = passFile.readline()
    passFile.close()
    
    
    # while循环
    line =  passFile.readline()
    while line:
        line = line.strip('
    ')
        with zipfile.ZipFile('C:/Users/Windows32/Desktop/untitled/sucess.zip') as zFile:
            flag = tryZipPwd(zFile,'C:/Users/Windows32/Desktop/untitled/',line)
            if flag:
                print("sucess pass is %s" % (line))
                exit(0)
                passFile.close()
        line = passFile.readline()
    passFile.close()
    
  • 相关阅读:
    三元表达式 列表和字典推导式 函数对象 名称空间 作用域 global和nonlocal 函数装饰器 枚举对象
    函数参数 打散机制 字符串比较 返回值
    函数简介
    三种字符串的介绍 文件的读写
    字符编码
    数据类型及其常用方法 数据类型转换 可变与不可变 值拷贝与深浅拷贝
    流程控制 while和for循环
    变量命名规范 常量 输入和输出 注释 数据类型 运算符 逻辑运算符
    语言分类 编译型和解释型语言分析 环境变量 代码执行的方式 pip介绍 变量
    Python django tests
  • 原文地址:https://www.cnblogs.com/17bdw/p/6132540.html
Copyright © 2011-2022 走看看