Python压缩解压缩zip文件及破解zip文件密码的方法


Posted in Python onNovember 04, 2015

python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。

例如,在py脚本所在目录中,有如下文件:

readability/readability.js
readability/readability.txt
readability/readability-print.css
readability/sprite-readability.png
readability/readability.css

将 readability 目录中的文件压缩到脚本所在目录的 readability.zip 文件中,保持相同的文件结构,然后打印出生成的压缩包 的文件列表,再用两种方式分别解压文件到脚本所在目录的 output 目录和 output/bak 目录中。

脚本如下:

#!/usr/vin/env python
# coding: utf-8
"""
压缩和解压zip文件
"""

import os
import zipfile

def compress(zip_file, input_dir):
  f_zip = zipfile.ZipFile(zip_file, 'w')
  for root, dirs, files in os.walk(input_dir):
    for f in files:
      # 获取文件相对路径,在压缩包内建立相同的目录结构
      abs_path = os.path.join(os.path.join(root, f))
      rel_path = os.path.relpath(abs_path, os.path.dirname(input_dir))
      f_zip.write(abs_path, rel_path, zipfile.ZIP_STORED)

def extract(zip_file, output_dir):
  f_zip = zipfile.ZipFile(zip_file, 'r')

  # 解压所有文件到指定目录
  f_zip.extractall(output_dir)

  # 逐个解压文件到指定目录
  for f in f_zip.namelist():
    f_zip.extract(f, os.path.join(output_dir, 'bak'))

def printdir(zip_file):
  f_zip = zipfile.ZipFile(zip_file, 'r')
  print '== printdir() ============================'
  f_zip.printdir()
  print
  print '== namelist() ============================'
  for f in f_zip.namelist():
    print f

if __name__ == '__main__':
  zip_file = 'readability.zip'
  compress(zip_file, os.path.join(os.getcwd(), 'readability'))
  printdirzip_file)
  extract(zip_file, 'output')</pre>

python暴力破解含密码的zip压缩文件
思路:

1.先自己生成一份txt的密码字典

2.然后读取出来,一个个的尝试,当密码错误是,程序会报错中断,所以密码错误,要使用pass

3.当解压缩成功后,中断程序,输出正确密码

import zipfile
import os
from threading import Thread
import time
#压缩文件的路径
path = r'C:\Users\Administrator\Desktop\moeMaid-master.zip'
#password='1234'

def pojie_zip(path,password):
 if path[-4:]=='.zip':
  #path = dir+ '\\' +file
  #print path
  zip = zipfile.ZipFile(path, "r",zipfile.zlib.DEFLATED)
  #print zip.namelist()
  try:
   #若解压成功,则返回True,和密码
   zip.extractall(path='C:\\Users\\Administrator\\Desktop\\',members=zip.namelist() , pwd=password)
   print ' ----success!,The password is %s' % password
   zip.close()
   return True
  except:
   pass #如果发生异常,不报错
  print 'error'
  
  
def get_pass():
 #密码字典的路径
 passPath='C:\\Users\\Administrator\\Desktop\\zip.txt'
 passFile=open(passPath,'r')
 for line in passFile.readlines():
  password=line.strip('\n')
  print 'Try the password %s' % password
  if pojie_zip(path,password):
   break
 passFile.close()
if __name__=='__main__':
 start=time.clock()
 get_pass()
 print "done (%.2f seconds)" % (time.clock() - start)

Python压缩解压缩zip文件及破解zip文件密码的方法

这是我解压缩一个5.4M文件的速度,其实时间都花在了解压缩上了

Python 相关文章推荐
详解Python中的正则表达式
Jul 08 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
如何运行带参数的python脚本
Nov 15 Python
Python 实现try重新执行
Dec 21 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
python实现批量移动文件
Apr 05 Python
浅谈Python数学建模之数据导入
Jun 23 Python
python通过文件头判断文件类型
Oct 30 #Python
python制作花瓣网美女图片爬虫
Oct 28 #Python
python制作最美应用的爬虫
Oct 28 #Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 #Python
详解JavaScript编程中的window与window.screen对象
Oct 26 #Python
深入讲解Python中的迭代器和生成器
Oct 26 #Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 #Python
You might like
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
留言板翻页的实现详解
2006/10/09 PHP
PHP 实用代码收集
2010/01/22 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
python strip()函数 介绍
2013/05/24 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
浅谈Python中函数的参数传递
2016/06/21 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
经济担保书范文
2014/04/02 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
高中历史教学反思
2016/02/19 职场文书
总结Python常用的魔法方法
2021/05/25 Python
python 离散点图画法的实现
2022/04/01 Python