学习Python第十五天:第一个程序python程序

第一个程序:ZIP文件口令破解机

编写ZIP文件口令破解机要从学习zipfile库的使用方法着手,打开pythn解释器,我们用help('zipfile')命令进一步了解这个库,并重点看一下zipfile类中的extractall()方法,这个类和这个方法对我们编程破解有口令保护的ZIP文件时很有用的,请注意extractall()方法用可选参数指定密码的方式。

import zipfile
help('zipfile')

让我们快速编写一个脚本来测试一下ZIP文件库的用法,导入库后,用带有口令保护的ZIP文件的文件名,实例化一个ZIPfile类,要解压这个ZIP文件,我们使用extractall()方法,并在可选参数pwd上填入口令。

import zipfilezfile = zipfile.ZipFile("evil.zip")
zfile.extractall(pwd="secret")

接下来我们要执行脚本以确保其正常运行,注意,在执行前,我们当前的工作目录只有脚本和zip文件,执行脚本后,它会将evil.zip的内容解压到一个名为evil的新创建的目录中,该目录包含有口令保护的zip文件中的文件。

如果用一个错误的密码去执行这个脚本会发生什么呢,让我们在脚本中增加一些捕获和处理异常的代码,显示错误的信息。

import zipfilezfile = zipfile.ZipFile("evil.zip")
try:zfile.extractall(pwd="oranges")
except Exception as e:print('e')

这时我们会看到报错了,因此我们可以用因口令不正确抛出的异常来测试我们的字典文件(即代码中的dictionary.txt)中是否有zip文件的口令,实例化一个zipfile类之后,我们打开字典文件,遍历并测试字典中的每个单词,如果extractall()函数的执行没有出错,则打印一条信息,输出正确的口令,如果报错,就忽略这个异常,继续测试下一个口令。

import zipfilezfile = zipfile.ZipFile("evil.zip")
passfile = open('dictionary.txt')
for line in passfile.readline():password = line.strip('\n')try:zfile.extractall(pwd=password)print('password=',password)exit(0)except Exception as e:pass

现在再来清理一下我们的代码,我们要用函数模块化脚本,而非线性执行的程序。

import zipfiledef extractfile(zfile,password):try:zfile.extractall(pwd=password)return passwordexcept:returndef main():zfile =zipfile.ZipFile('evil.zip')passfile = open('dictionary.txx')for line in passfile.readline():password = line.strip('\n')guess = extractfile(zfile,password)if guess:print("密码是:",password)
if __name__ =='__main__':main()

在将程序模块化分离成函数之后,我们现在还能去提高性能,我们可以利用线程同时测试多个口令,而不是只能逐个测试库中的单词,对库中的每个单词,我们都会生成一个新的线程去测试它。

import zipfile
from threading import Threaddef extractfile(zfile,password):try:zfile.extractall(pwd=password)print("密码是:",password)except:pass
def main():zfile = zipfile.ZipFile('evil.zip')passfile = open('dictionary.txt')for line in passfile.readline():password = line.strip('\n')t = Thread(target=extractfile,args=(zfile,password))t.start
if __name__ =='__main__':main()

现在,我们的zip口令破解脚本就算完工啦。今天的学习分享就到这里了,谢谢大家的观看,如果有什么不对的地方还请大家多多指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588090.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…

基于jsp网上教师点评系统

基于jsp网上教师点评系统 关键词&#xff1a;教师点评 信息技术 JSP技术 系统实现 首页 评分规则 教室信息 后台首页 相关技术介绍 B/S架构 对于架构&#xff0c;听起来说我们可能比较陌生&#xff0c;但对于通俗的语法讲。他的访问方式是通过网址还是说通过点图标这…

垄断与商品化背景下的网络安全三大整合策略

我国的网络安全产业已经发展了20余年&#xff0c;大大小小的企业几乎覆盖了网络安全的所有领域。随着安全需求的逐渐递增&#xff0c;安全产品也朝着平台化、规模化发展&#xff0c;这就倒逼着安全厂商需要整合越来越多的安全能力&#xff0c;并与其产品相融合。这个过程&#…

鸿蒙OS元服务开发:【(Stage模型)设置悬浮窗】

一、设置悬浮窗说明 悬浮窗可以在已有的任务基础上&#xff0c;创建一个始终在前台显示的窗口。即使创建悬浮窗的任务退至后台&#xff0c;悬浮窗仍然可以在前台显示。通常悬浮窗位于所有应用窗口之上&#xff1b;开发者可以创建悬浮窗&#xff0c;并对悬浮窗进行属性设置等操…

Kafka架构概述

Kafka的体系结构 Kafka是由Apache软件基金会管理的一个开源的分布式数据流处理平台。Kafka具有支持消息的发布/订阅模式、高吞吐量与低延迟、持久化、支持水平扩展、高可用性等特点。可以将Kafka应用于大数据实时处理、高性能数据管道、流分析、数据集成和关键任务应用等场景。…

用于AGV物流机器人的爱普生陀螺仪传感器XV7000系列

适用于AGV物流机器人的爱普生陀螺仪传感器XV7000系列:XV7001BB&#xff0c;XV7011BB。以前我们都知道XV7001BB&#xff0c;XV7011BB适用于扫地机器人&#xff0c;其实对于AGV物流机器人来说&#xff0c;XV7000系列生陀螺仪传感器也是其中重要一环。AGV机器人又叫做AGV搬运机器人…

概率论基础——拉格朗日乘数法

概率论基础——拉格朗日乘数法 概率论是机器学习和优化领域的重要基础之一&#xff0c;而拉格朗日乘数法与KKT条件是解决优化问题中约束条件的重要工具。本文将简单介绍拉格朗日乘数法的基本概念、应用以及如何用Python实现算法。 1. 基本概念 拉格朗日乘数法是一种用来求解…

element-ui tableData导出为xlsx文件

下载 npm i / yarn add file-saver、xlsx库 引入 import FileSaver from “file-saver”; import XLSX from “xlsx”; const simexport (data) > {// if (data.create_time && data.create_time.length > 0) {// data.start_time parseTime(data.create_tim…

2024水大会|【第二届智慧水环境管理与技术创新论坛】领衔专家刘炳义教授邀您聚首成都

2024年5月13日—15日中华环保联合会、福州大学、上海大学在四川省成都市联合举办“2024全国水科技大会暨技术装备成果展览会”。 大会以“加快形成新质生产力&#xff0c;增强水业发展新动能”为主题&#xff0c;由开幕式、院士论坛、主旨报告、高峰对话、主题峰会、专题论坛、…

monitor link 联合smart link配合应对复杂的网络

monitor link关键词&#xff1a;上行和下行端口&#xff0c;当上行端口异常&#xff0c;下行端口立即down掉&#xff0c;也就是一种联动机制 如果上行端口里面是smart link方式&#xff0c;则当主从端口都出问题时候&#xff0c;下行端口才会down掉 monitor link 配置步骤 1创…

macbook更改默认打开方式

1、mac上更改文件的默认打开方式&#xff0c;例如将.sql文件默认方式改成文本编辑 2、单击右键&#xff08;两指单机触摸板&#xff09;-> 显示简介 -> 打开方式 -> 选择新的默认打开方式 -> 全部更改 3、再次打开就设置完成了

R语言颜色细分

1.如何对R语言中两种颜色之间进行细分 2.代码&#xff1a; x <- colorRampPalette(c("#FC8D62","#FDEAE6"))(12) #打印向量值 # 按字典顺序排序颜色值 x_sorted <- sort(x,decreasing TRUE)# 打印排序后的颜色值 print(x_sorted)#展示颜色 scales:…