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 代码性能优化技巧分享
Aug 07 Python
Django框架中render_to_response()函数的使用方法
Jul 16 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
python实现类之间的方法互相调用
Apr 29 Python
python3.7.0的安装步骤
Aug 27 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
详解python-图像处理(映射变换)
Mar 22 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python3 字符串知识点学习笔记
Feb 08 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
python包的导入方式总结
Mar 02 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
php中的一个中文字符串截取函数
2007/02/14 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
js单例模式的两种方案
2013/10/22 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python之Socket网络编程详解
2016/09/29 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
python内置模块collections知识点总结
2019/12/19 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
物业管理求职自荐信
2013/09/25 职场文书
材料采购员岗位职责
2013/12/17 职场文书
企业领导对照检查材料
2014/08/20 职场文书
个人授权委托书样本
2014/09/13 职场文书
学校运动会广播稿
2014/10/11 职场文书
2014年人大工作总结
2014/12/10 职场文书
主持人开幕词
2015/01/29 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫