python文件的操作以及简易shadow文件密码破解器

news2025/2/23 13:00:10

python文件对象以及简易shadow文件密码破解器

文章目录

  • python文件对象以及简易shadow文件密码破解器
      • 文件对象的方法
    • 打开文件
    • 关闭文件
    • 文件读取
    • 文件指针的刷新
    • 文件迭代
    • 写入文件
      • write()
      • writelines()
    • 案例shawod密码破解脚本

文件对象的方法

常用函数功能f = open(‘PATH’)打开指定路径的文件f 是文件对象。

f.read()从文件对象中读取文件内容

f.readline()读取一行内容

f.readlines()返回一个列表,元素是文件的每一行内容

f.write()向文件中写入内容

f.writelines()以列表的方式向文件中写入内容。

f.close()关闭文件

time.sleep()沉睡响应的秒数

打开文件

open()方法的参数

访问模式操作说明
r以读方式打开默认打开文件的方式 文件不存在则报错。
w以写方式打开文件存在则清空,不存在则创建。
a以追加模式打开不存在则创建。
+以读写模式打开如r+,w+,a+。
b以二进制模式打开如rb,wb,ab。

使用open()方法来打开文件

f=open("文件绝对路径位置") 

关闭文件

使用close()方法来关闭文件

文件.close()

文件读取

read()方法读取整个文件

file = file.read()

readline()方法每使用一次读取一行

file = file.readline

readlines()方法读取全部的文件将其封装成列表的形式

file = file.readlines

文件指针的刷新

seek()方法

Syntax: f.seek(offset, whence),f指的是file(或$你的文件名)
Parameters:
offset: 将光标向前移动n个位置
whence: 参考位置,一般参数为0,1,2
0 :将开头作为参考位置
1 :将当前作为参考位置
2 :将末尾作为参考位置

file.seek(5,1)

文件迭代

可以使用with open() as f: 来代替open()方法

这样就不需要自己手动关闭文件了

写入文件

write()

write() 内建方法功能与read() 和readline() 相反。它把含有文本数据或二进制数据块的字符串写入到文件中去。写入文件时,不会自动添加行结束标志,需要程序员手工输入。

f = open('sec.dic', 'a')
f.write('360\n')

f.close()
f = open('sec.dic', 'a')
f.write("eversec\n")
8
f.close()

writelines()

和readlines() 一样,writelines() 方法是针对列表的操作,它接受一个字符串列表作为参数,将它们写入文件,行结束符并不会被自动加入,所以如果需要的话,必须在调用writelines() 前给每行结尾加上行结束符。

['venustech\n', 'nsfocus\n', 'topsec\n', 'dbappsecrutiy\n', 'knownsec\n', 'colasoft\n', 'sangfor\n', 'qianxin\n', 'chaitin\n', 'sbr-info\n']
f = open('sec.dic', 'a')
f.writelines(l)
f.close()

案例shawod密码破解脚本

利用crypt标准库来进行破解

def mimapojie():   
    import crypt
    password=""
    print("[+] 脚本启动成功 ")
    wordlist=input("请输入能的密码字典的绝对路径:")
    with open(wordlist, "r", encoding="utf-8") as f:
            key = input("请输入要破解的密钥:")
            print("[+] 等待破解密码")
            salt = key[0:key.rfind("$") + 1:1]       

            for line in f:
                line = line.strip()
                jm = crypt.crypt(line, salt)
                if jm == key:
                    password=line
                    print(f"[+] 密码破解成功密码为:{password}")
                    break

            if password !="":
                pass
            else:
                print("[-]密码不存在")
mimapojie()

工具测试:
在这里插入图片描述
注释:哈希方法
3.3 新版功能.

crypt 模块定义了哈希方法的列表(不是所有的方法在所有平台上都可用)。

crypt.METHOD_SHA512

基于 SHA-512 哈希函数的模块化加密格式方法,具备 16 个字符的 salt 和 86个字符的哈希算法。这是最强的哈希算法。

crypt.METHOD_SHA256

另一种基于 SHA-256 哈希函数的模块化加密格式方法,具备 16 个字符的 salt 和 43 个字符的哈希算法。

crypt.METHOD_BLOWFISH

另一种基于 Blowfish 的模块化加密格式方法,有 22 个字符的 salt 和 31 个字符的哈希算法。

3.7 新版功能.

crypt.METHOD_MD5

另一种基于 MD5 哈希函数的模块化加密格式方法,具备 8 个字符的 salt 和 22 个字符的哈希算法。

crypt.METHOD_CRYPT

传统的方法,具备 2 个字符的 salt 和 13 个字符的哈希算法。这是最弱的方法。

模块属性
3.3 新版功能.

crypt.methods

可用口令哈希算法的列表,形式为 crypt.METHOD_* 对象。该列表从最强到最弱进行排序。

模块函数
crypt 模块定义了以下函数:

crypt.crypt(word, salt=None)

word 通常是用户在提示符或图形界面上输入的口令。可选参数 salt 要么是 mksalt() 返回的字符串,即 crypt.METHOD_* 之一(尽管不是所有平台都可用),要么就是一个完全加密的包含 salt 值的口令,正如本函数的返回值。如果未给出 salt,将使用最强的哈希方法( methods() 返回)。

查验口令通常是传入纯文本密码 word ,和之前 crypt() 调用的结果进行比较,应该与本次调用的结果相同。

salt (随机的 2 或 16 个字符的字符串,可能带有 $digit{TX-PL-LABEL}#x60; 前缀以提示相关方法) 将被用来扰乱加密算法。 salt 中的字符必须在 [./a-zA-Z0-9] 集合中,但 Modular Crypt Format 除外,它会带有 $digit{TX-PL-LABEL}#x60; 前缀。

返回哈希后的口令字符串,将由 salt 所在字母表中的字符组成。

由于有些 crypt(3)) 扩展可以接受各种大小的 salt 值,建议在查验口令时采用完整的加密后口令作为 salt。

在 3.3 版更改: 除了字符串之外, salt 还可接受 crypt.METHOD_* 值。

crypt.mksalt(method=None, *, rounds=None)

返回用指定方法随机生成的 salt。如果没有给出 method,则使用 methods() 返回的强度最高方法。

返回一个字符串,可用作传入 crypt() 的 salt 参数。

rounds 指定了 METHOD_SHA256, METHOD_SHA512 和 METHOD_BLOWFISH 的循环次数。 对于 METHOD_SHA256 和 METHOD_SHA512 而言,必须为介于 1000 和 999_999_999 之间的整数,默认值为 5000。 而对于 METHOD_BLOWFISH,则必须为 16 (24) 和 2_147_483_648 (231) 之间的二的幂,默认值为 4096 (212)。

3.3 新版功能.

在 3.7 版更改: 加入 rounds 参数。

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

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

相关文章

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry,简称OTel,是一个与供应商无关的开源可观测性框架,用于检测、生成、收集和导出 遥测数据,如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具,用于接 收、…

有哪些项目适合程序员业余时间做,并且短期内能赚点小钱?

要我说,程序员赚点小钱就别指望着自己搞个大项目了。 这几年的市场环境不好,如果你没点家底的话,打工攒的那点积蓄让你创业,一不小心就会血本无归。 对于程序员来说,最合适的还是给别人打工!低风险稳定回款…

盗版gpt去广告

一. 内容简介 盗版gpt去广告 二. 软件环境 2.1 Tampermonkey 三.主要流程 3.1 创建javascript脚本 点击添加新脚本 就是在 (function() {use strict;// 在这编写自己的脚本 })();脚本,含解析 // UserScript // name 盗版gpt去广告 // namespace …

亿咖通·天穹Pro行泊一体智能驾驶计算平台正式量产

全球出行科技公司亿咖通科技宣布,旗下首款智能驾驶计算平台——亿咖通•天穹Pro行泊一体智能驾驶计算平台(以下简称“该平台”)已向车企正式量产交付。作为亿咖通科技在智能驾驶领域的全新突破,亿咖通•天穹Pro智能驾驶计算平台以…

Centos7安装Docker,安装DockerCompose(集群化部署),Docker私服镜像仓库

0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道…

element-plus的el-tag标签关闭标签时的高亮显示逻辑

1.tag 实战步骤 首页的tag一开始就会存在,而且是不能进行删除的 当点击左侧栏的时候,如果tag没有该菜单名称则新增,如果已经有了那么当前tag背景为蓝色。 删除当前tag,如果是最后一个,那么路由调整到它前面那个标签并且背景变蓝…

LV.12 D13 UART实验 学习笔记

一、UART帧格式详解 UART Universal Asynchronous Receiver Transmitter 即 通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。 通…

奇淫技巧系列之第四篇:如何搜索Jar包中的xml文件

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…

索引创建的原则

索引的创建是数据库优化中非常重要的一部分,正确创建索引可以大大提高查询效率。以下是一些创建索引时需要考虑的原则: 根据查询频率创建索引: 频繁用于检索的列: 那些频繁用于查询的列或经常出现在 WHERE、JOIN、ORDER BY 和 GR…

A股风格因子看板(2023.10 第14期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第14期,指数组合数据截止日2023-09-30,要点如下 近1年A股风格因子检验统…

基于springboot实现学生就业管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现学生就业管理系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,学生就业管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人…

python连接clickhouse (CK)

Author: tkhywang 2810248865qq.com Date: 2023-11-01 11:28:58 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-11-01 11:36:25 FilePath: \PythonProject02\Python读取clickhouse2 数据库数据.py Description: 这是默认设置,请设置customMade, 打开koroFileHead…

FreeRTOS_信号量之互斥信号量

目录 1. 互斥信号量 1.1 互斥信号量简介 1.2 创建互斥信号量 1.2.1 函数 xSemaphoreCreateMutex() 1.2.2 函数 xSemaphoreCreateMutexStatic() 1.2.3 互斥信号量创建过程分析 1.2.4 释放互斥信号量 1.2.5 获取互斥信号量 2. 互斥信号量操作实验 2.1 实验程序 2.1.1 …

pytorch 笔记:GRU

1 介绍 对于输入序列中的每个元素,每一层都计算以下函数: ht​ 是t时刻 的隐藏状态xt​ 是t时刻 的输入ht−1​ 是 t-1时刻 同层的隐藏状态或 0时刻 的初始隐藏状态rt​,zt​,nt​ 分别是重置门、更新门和新门。σ 是 sigmoid 函数∗ 是 Hadamard 乘积。…

kubernetes-service微服务

目录 一、service微服务 二、Ipvs模式 三、ClusterIP 1.ClusterIP 2.headless 四、NodePort 1.NodePort 2.默认端口 五、LoadBalancer 1.LoadBalancer 2.metallb 六、ExternalName 一、service微服务 Kubernetes Service微服务是一种基于Kubernetes的微服务架构&…

与云栖的浪漫邂逅:记一段寻找云端之美的旅程

云端之旅 2023 年的云栖大会如约而至,这次云栖大会也是阿里新任掌门蔡老板当任阿里巴巴董事局主席以来的第一次。大会与以往有很多不一样的地方,其中 AIGC 更是本届大会的重点议题!你会感叹,阿里还是猛啊! 我逛了下展…

十一、W5100S/W5500+RP2040树莓派Pico<ARP 地址解析>

文章目录 1 前言2 简介2 .1 什么是ARP?2.2 ARP的优点2.3 ARP工作原理2.4 ARP应用场景 3 WIZnet以太网芯片4 ARP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着网络安全越来越受到重…

UE5——网络——RPC

RPC(这个是官方文档的资料) 要将一个函数声明为 RPC,您只需将 Server、Client 或 NetMulticast 关键字添加到 UFUNCTION 声明。 例如,若要将某个函数声明为一个要在服务器上调用、但需要在客户端上执行的 RPC,您可以…

@JsonCreator 和 @JsonValue使用说明

Fastxml.jackson提供了JsonValue和JsonCreator注解用于序列化和反序列化时使用. Jackson 是一个流行的 Java 序列化和反序列化库,它可以将 Java 对象转换为 JSON 格式,并将 JSON 格式转换为 Java 对象。在 Jackson 中,@JsonCreator 和 @JsonValue 是两个重要的注解,用于自…

Kafka保证百万级数据写入和重发问题分享

Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景, 那么它如何做到百万级写入速度呢?我们在享受它带来的高并发,高可靠等便利时,同时不得不面对可能存在的问题,项目中最常见的就是丢…