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

news2024/11/26 14:54:50

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

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

import zipfile
help('zipfile')

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

import zipfile


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

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

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

import zipfile


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

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

import zipfile


zfile = 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 zipfile

def extractfile(zfile,password):
    try:
        zfile.extractall(pwd=password)
        return password
    except:
        return
    
def 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 Thread

def 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.coloradmin.cn/o/1565342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在仿真环境中运行lio-sam

文章目录 前言LIO-SAM环境编译运行键盘控制编译lio-sam遇到的问题前言 Gazebo 仿真提供了一个高效且成本低廉的平台,使研究人员和开发者能够在安全且可控的虚拟环境中设计、测试和优化机器人系统。它允许快速原型制作和迭代,精确控制测试条件,并能模拟复杂或危险的场景,从…

2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现: 随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好…

【解决】Unity Profile | FindMainCamera

开发平台:Unity 2020.3.7f1c1 关键词:FindMainCamera   问题背景 ModelViewer 是开发者基于 UnityEngine 编写的相机控制组件。ModelView.Update 中调度52次并触发3次GC.Collect。显然并不期望并尽可能避免 Update 造成的GC 问题。事实上 FindMainCame…

C语言第三十九弹---预处理(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中,预处…

经久耐用耐强腐蚀PFA材质气体洗涤瓶全氟烷氧基树脂尾气吸收瓶

PFA洗气瓶是一种常用于净化和干燥各种气体的实验室器皿,以去除其中的水分、油脂、颗粒物等杂质,从而使需要用到的气体满足实验要求。 PFA气体吸收瓶 PFA洗气瓶的工作原理: 主要是通过液体吸收、溶解或发生化学反应来去除气体中的杂质。在洗气…

LeetCode题练习与总结:螺旋矩阵

一、题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:ma…

物联网行业趋势——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和应用场景的日益扩大,物联网行业呈现出迅猛发展的势头。作为当今世界最具前瞻性和战略意义的领域之一,物联网行业的趋势和未来发展值得深入探讨。 ​一、物联网行业正逐渐实现全面普及。随着物…

matlab使用教程(32)—求解偏微分方程(3)

1求解 PDE 方程组 此示例说明由两个偏微分方程构成的方程组的解的构成,以及如何对解进行计算和绘图。 以如下 PDE 方程组为例 要在 MATLAB 中求解该方程,您需要对方程、初始条件和边界条件编写代码,然后在调用求解器pdepe 之前选择合适的解…

“帮助“Java成长的世界级大师不简单!

文章目录 初探编程:“天啊,真酷,程序真的能学习。”哺育Java成长,成为Java幕后英雄出书《Effective Java》斩获Jolt图书大奖 是谁?作品一出版就获得著名的Jolt图书大奖,每一版本豆瓣评分均超9.0&#xff01…

某眼实时票房接口获取

某眼实时票房接口获取 前言解决方案1.找到veri.js2.找到signKey所在位置3.分析它所处的这个函数的内容4.index参数的获取5.signKey参数的获取运行结果关键代码另一种思路票房接口:https://piaofang.maoyan.com/dashboard-ajax https://piaofang.maoyan.com/dashboard 实时票房…

LabVIEW专栏三、探针和断点

探针和断点是LabVIEW调试的常用手段,该节以上一节的"测试耗时"为例 探针可以打在有线条的任何地方,打上后,经过这条线的所有最后一次的数值都会显示在探针窗口。断点可以打在程序框图的所有G代码对象,包括结构&#xf…

意大利公司注册

意大利是发达工业国家,是欧洲第四大、世界第八大经济体。机械设备、汽车制造、生物医药、航天航空等居于世界领先地位,中小企业发达,被誉为“中小企业王国”,旅游资源和历史文化遗产丰富。2021年,意大利GDP为1.78万亿欧…

Intellij IDEA / Android studio 可持续开发笔记

Intellij 的Java/安卓工具链有着一种不可持续性,这种不可持续性体现在多个方面。 首先是不可持续运行。IDEA 使用时间越长,内存占用越大,从不主动释放。运行时间越长,日志越多,从不主动清理。 然后是不完整的开源&am…

docker搭建CI/CD环境配置过程中的常见问题

一、Jenkins 1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepo…

Ollama教程——入门:开启本地大型语言模型开发之旅

Ollama教程——入门:开启本地大型语言模型开发之旅 引言安装ollamamacOSWindows预览版LinuxDocker ollama的库和工具ollama-pythonollama-js 快速开始运行模型访问模型库 自定义模型从GGUF导入模型自定义提示 CLI参考创建模型拉取模型删除模型复制模型多行输入多模态…

【Spring】SpringBoot整合ShardingSphere并实现多线程分批插入10000条数据(进行分库分表操作)。

📝个人主页:哈__ 期待您的关注 一、ShardingSphere简介 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成…

hadoop 高可用(HA)、HDFS HA、Yarn HA

目录 hadoop 高可用(HA) HDFS高可用 HDFS高可用架构 QJM 主备切换: Yarn高可用 hadoop 高可用(HA) HDFS高可用 HDFS高可用架构 QJM 主备切换: Yarn高可用

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定:为了方便,本文后面把PL/SQL简称PL。 PL程序都是以块(BLOCK)为基本单位,整个PL块分三部分:声明部分(使用DECLARE开头)、执行部分(以BEGIN开头)和异…

IP地址获取不到的原因是什么?

在数字化时代的今天,互联网已成为我们日常生活和工作中不可或缺的一部分。而IP地址,作为互联网通信的基础,其重要性不言而喻。然而,有时我们可能会遇到IP地址获取不到的问题,这会给我们的网络使用带来诸多不便。那么&a…