黑客技术手段,python暴力突破ZIP文件密码!

Python 和放大镜的二进制代码

1 准备材料

如果你感觉学不会?莫慌,小编推荐大家加入群,

前面548中间377后面875,群里有志同道合的小伙伴,

互帮互助,还可以拿到许多视频教程!

首先在目录C:UsershyDesktop(就是windows10系统下的桌面)下创建test.zip文件,设其密码为123456

password.txt是密码字典 ,里面是我随便输入的一些密码。

下面使用PyCharm编写代码

ZIP FLIE

在python中操作zip文件, 基本上都是使用zipfile模块,他可以创建、解压文件,获取zip文件的元数据信息。

我们想要操作一个zip文件,第一步就是初始化ZipFile实例。下面我们打开我们准备好的test.zip文件。

import zipfile

zF = zipfile.ZipFile(r"C:UsershyDesktopest.zip");

目前我们只是传入一个参数地址,实例化了一个对象,想要解压文件还要是要到extractall方法,三个参数,path是解压的路径(默认为解压文件所在路径),members是需要解压出来的文件(默认为全部文件),pwd是密码。

extractall(self,path=None,members=None,pwd=None)

import zipfile

zF = zipfile.ZipFile(r"C:UsershyDesktopest.zip")

zF.extractall(pwd="1111111")

我们会发现运行提示错误

提示我们的pwd的参数编码不对, 这是因为在python3中pwd需要的是byte, 所以需要我们自己转化

zF.extractall(pwd=”1111111”.encode(“ascii”))

再运行提示

这才是正常的密码错误提示,这时候更在一下密码即可

zF.extractall(pwd=”123456”.encode(“ascii”))

不过因为我们提前不知道密码,所以就用到密码字典啦,首先实例字典引用,然后把它转化为列表

zpassword=open(r"C:UsershyDesktoppassword.txt")

zpw=zpassword.readlines() #readines()以列表的形式返回一个list,按照每行读取

这时候可能会提示错误,也有可能不是gbk

这是因为我系统默认的编码为gbk 但是我的密码字典是utf-8,所以报错。可是如果用sys.getdefaultencoding()查看,你会发现

是utf-8,这个并不准确,正确的方法是:

在Windows平台下,进入DOS窗口,输入:chcp

我的活动代码页为:936,它对于的编码格式为GBK

所以要我们自己取设置读取使用的编码:

zpassword=open(r"C:UsershyDesktoppassword.txt",encoding="utf-8")

另外为了直观的看到进度,我添加了进度条功能,只要用的是

print(" "+"这里写内容"+,end=""),# 代表不换行,然后清空本行从开头书写。

def progressbar(nowprogress,toyal): #nowprogress现在的进度数 toyal#总数

get_progress=int((nowprogress+1)*(50/toyal)) #显示多少>

get_pro=int(50-get_progress)#显示多少-

percent=(nowprogress+1)*(100/toyal)

print(" "+"["+">"*get_progress+"-"*get_pro+']'+"%.2f" % percent + "%",end="")

至于print上面的就是数学上的知识啦。

看这篇文章的估计都不是特别新的新手,就不一步一步教了,

#-*- coding: UTF-8 -*-

import zipfile

def progressbar(nowprogress,toyal): #nowprogress现在的进度数 toyal#总数

get_progress=int((nowprogress+1)*(50/toyal)) #显示多少>

get_pro=int(50-get_progress)#显示多少-

percent=(nowprogress+1)*(100/toyal)

print(" "+"["+">"*get_progress+"-"*get_pro+']'+"%.2f" % percent + "%",end="")

def setpass(zip,password):

try:

zip.extractall(pwd=password.encode("ascii"))

return password

except Exception as e:

return

def main():

zf=zipfile.ZipFile(r"C:UsershyDesktopest.zip")

zpassword=open(r"C:UsershyDesktoppassword.txt",encoding="utf-8")

zpw=zpassword.readlines()

for i in zpw:

progressbar(zpw.index(i),len(zpw))

password=i.strip("/n")

gess=setpass(zf,password)

if gess:

print(" "+"正确密码:"+password)

exit(0)

if __name__=="__main__":

main()

这个程序简单,最主要的是你有个强大的密码字典,另外,感兴趣的还可以添加命令行输入路径功能,多线程解压,破解功能。

最后:还望各位看官手下留情,多多指教~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181023A1NSWA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券