一步一步自制py脚本并且并且修改为exe可执行文件教学外附带SHA-1解密exe文件资源

第一步:安装 Python

  1. 下载 Python:访问 Python 官网 下载并安装最新版本的 Python。
  2. 安装时选择添加到环境变量 PATH:在安装过程中,确保勾选“Add Python to PATH”选项。

第二步:编写 Python 脚本

  1. 创建一个新的 Python 文件:使用文本编辑器(如 VSCode、Notepad++ 或 PyCharm)创建一个新的文件,命名为 MISC-SHA-1解密.py

运行以下命令以确保Python和pip已正确安装:

python --version
pip --version

  1. 编写代码:在文件中编写你的 Python 代码。例如,下面是一个简单的示例代码:

 以这个py脚本为例,这里面写的是SHA-1的解密py脚本(简易)

import hashlib
import stringdef sha1_hash(input_string):sha1 = hashlib.sha1()sha1.update(input_string.encode('utf-8'))return sha1.hexdigest()# 生成字符集合,包括数字、小写字母、大写字母和特殊字符
characters = string.ascii_letters + string.digits + "!@#$%^&*()-_=+[]{}|;:',.<>?/`~"  # a-z, A-Z, 0-9, 特殊字符# 要匹配的目标SHA-1散列值
target_hashes = ['7cf184f4c67ad58283ecb19349720b0cae756829', '50c9e8d5fc98727b4bbc93cf5d64a68db647f04f','32096c2e0eff33d844ee6d675407ace18289357d','c2c53d66948214258a26ca9ca845d7ac0c17f8e7','e69f20e9f683920d3fb4329abd951e878b1f9372',
]  # 请确保这些是您要匹配的散列值# 初始化一个列表来存储匹配结果
matching_results = []# 以目标散列值的顺序进行匹配
for target_hash in target_hashes:found = False  # 标记匹配是否找到for char in characters:# 计算当前字符的SHA-1散列current_hash = sha1_hash(char)# 检查是否与目标散列匹配if current_hash == target_hash:matching_results.append(char)  # 直接存储字符,即使重复也会添加found = True# 如果没有找到匹配的字符,则添加空字符串if not found:matching_results.append(' ')  # 添加一个空字符串作为未找到的匹配表示# 将匹配结果拼接成字符串
result_string = ''.join(matching_results)# 输出最终结果格式
final_result = f"{{{result_string}}}"
# 如果需要去掉多余的空格,使用strip()函数
print(final_result.strip())  # 打印格式化后的结果

第三步:安装 PyInstaller打包

  1. 打开命令提示符:按 Win + R,输入 cmd,然后按 Enter。
  2. 安装 PyInstaller:在命令提示符中输入以下命令并按 Enter:
  1. 打开命令行:在您的计算机上打开命令行工具(例如CMD或PowerShell)。

  2. 导航到脚本所在目录:使用cd命令移动到包含您的Python脚本的目录。例如:

如下图所示,右键点击复制路径

第四步:将 Python 脚本转换为 .exe 文件

  1. 导航到脚本所在目录:使用 cd 命令导航到包含MISC-SHA-1解密.py 的目录。例如:

这个是我的路径如下所示,要去到E盘 

cd "E:\桌面文件\happy 2024\解题脚本存放"
  1. 运行 PyInstaller:输入以下命令将脚本转换为可执行文件:

我的路径如下

PS E:\桌面文件\happy 2024\解题脚本存放> pyinstaller --onefile --windowed MISC-SHA-1解密.py

第五步:找到生成的 .exe 文件

如下图所示,

我生成的文件在E:\桌面文件\happy 2024\解题脚本存放\dist\MISC-SHA-1解密.exe

  1. 查找输出目录:PyInstaller 会在当前目录下创建一个 dist 文件夹。
  2. 找到 .exe 文件:在 dist 文件夹中,你会找到名为 MISC-SHA-1解密.exe

第六步:运行 .exe 文件

双击MISC-SHA-1解密.exe 文件,应该会看到一个命令行窗口弹出

如下图所示

附录 :SHA-1解密exe文件资源

可执行文件如下:

可执行脚本如下:

import hashlib
import stringdef sha1_hash(input_string):sha1 = hashlib.sha1()sha1.update(input_string.encode('utf-8'))return sha1.hexdigest()
# 生成字符集合
characters = string.ascii_letters + string.digits + "!@#$%^&*()-_=+[]{}|;:',.<>?/`~"  # a-z, A-Z, 0-9 
# 将所有字符的SHA-1散列存储到字典中
hash_map = {sha1_hash(char): char for char in characters}# 要匹配的SHA-1散列列表(在这里写入要解密的SHA-1散列)
hashes_to_match = ['7cf184f4c67ad58283ecb19349720b0cae756829','50c9e8d5fc98727b4bbc93cf5d64a68db647f04f','32096c2e0eff33d844ee6d675407ace18289357d','c2c53d66948214258a26ca9ca845d7ac0c17f8e7','e69f20e9f683920d3fb4329abd951e878b1f9372','60ba4b2daa4ed4d070fec06687e249e0e6f9ee45','da4b9237bacccdf19c0760cab7aec4a8359010b0','da4b9237bacccdf19c0760cab7aec4a8359010b0','84a516841ba77a5b4648de2cd0dfcb30ea46dbb4','356a192b7913b04c54574d18c28d46e6395428ab','da4b9237bacccdf19c0760cab7aec4a8359010b0','3c363836cf4e16666669a25da280a1865c2d2874','86f7e437faa5a7fce15d1ddcb9eaeaea377667b8','3c363836cf4e16666669a25da280a1865c2d2874','84a516841ba77a5b4648de2cd0dfcb30ea46dbb4','ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4','b6589fc6ab0dc82cf12099d1c2d40ab994e8410c','fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f','58e6b3a414a1e090dfc6029add0f3555ccba127f','ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4','4a0a19218e082a343a1b17e5333409af9d98f0f5','58e6b3a414a1e090dfc6029add0f3555ccba127f','86f7e437faa5a7fce15d1ddcb9eaeaea377667b8','356a192b7913b04c54574d18c28d46e6395428ab','da4b9237bacccdf19c0760cab7aec4a8359010b0','4a0a19218e082a343a1b17e5333409af9d98f0f5','da4b9237bacccdf19c0760cab7aec4a8359010b0','58e6b3a414a1e090dfc6029add0f3555ccba127f','e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98','fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f','84a516841ba77a5b4648de2cd0dfcb30ea46dbb4','0ade7c2cf97f75d009975f4d720d1fa6c19f4897','58e6b3a414a1e090dfc6029add0f3555ccba127f','e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98','1b6453892473a467d07372d45eb05abc2031647a','ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4','c1dfd96eea8cc2b62785275bca38ac261256e278','902ba3cda1883801594b6e1b452790cc53948fda','c2b7df6201fdd3362399091f0a29550df3505b6a'
]# 根据散列值输出对应的字符,未找到的散列输出空格
result = []
for hash_value in hashes_to_match:result.append(hash_map.get(hash_value, " "))# 输出结果
print("对应字符输出:")
print("".join(result))

SHA-1

SHA-1(安全散列算法1)是一种广泛使用的加密散列函数,它将任意长度的数据输入转换为固定长度的160位(20字节)散列值。SHA-1的原理可以分为以下几个步骤:

1. 填充数据:首先,输入数据会被填充到一个特定的长度,使其长度对512取模等于448。填充的方式是先添加一个“1”位,然后添加足够数量的“0”位,最后在数据末尾添加一个64位的表示原始数据长度的二进制数。

2. 分块处理:填充后的数据被分成多个512位(64字节)的块。SHA-1会逐块处理这些数据。

3. 初始化哈希值:SHA-1使用五个32位的初始哈希值(H0, H1, H2, H3, H4),这些值是固定的,来源于特定的常数。

4. 消息扩展:对于每个512位的块,SHA-1会生成80个32位的消息字(W0到W79)。前16个字直接来自当前块,后64个字通过特定的公式从前面的字生成。

5. 主循环:SHA-1的核心是一个主循环,执行80次迭代。在每次迭代中,使用当前的哈希值、消息字和一个常数进行计算,更新哈希值。

6. 输出结果:处理完所有块后,最终的哈希值由五个32位的哈希值(H0到H4)组合而成,形成一个160位的散列值。

SHA-1哈希算法流程

对于任意长度的明文,SHA1首先对其进行分组,使得每一组的长度为512位,然后对这些明文分组反复重复处理。

对于每个明文分组的摘要生成过程如下:

(1) 将512位的明文分组划分为16个子明文分组,每个子明文分组为32位。

(2) 申请5个32位的链接变量,记为A、B、C、D、E。

(3) 16份子明文分组扩展为80份。

(4) 80份子明文分组进行4轮运算。

(5) 链接变量与初始链接变量进行求和运算。

(6) 链接变量作为下一个明文分组的输入重复进行以上操作。

(7) 最后,5个链接变量里面的数据就是SHA1摘要。

SHA-1的分组过程

对于任意长度的明文,SHA1的明文分组过程与MD5相类似,首先需要对明文添加位数,使明文总长度为448(mod512)位。在明文后添加位的方法是第一个添加位是l,其余都是0。然后将真正明文的长度(没有添加位以前的明文长度)以64位表示,附加于前面已添加过位的明文后,此时的明文长度正好是512位的倍数。与MD5不同的是SHA1的原始报文长度不能超过2的64次方,另外SHA1的明文长度从低位开始填充。

经过添加位数处理的明文,其长度正好为512位的整数倍,然后按512位的长度进行分组(block),可以划分成L份明文分组,我们用Y0,Y1,……YL-1表示这些明文分组。对于每一个明文分组,都要重复反复的处理,这些与MD5是相同的。

对于512位的明文分组,SHA1将其再分成16份子明文分组(sub-block),每份子明文分组为32位,我们使用M[k](k= 0, 1,……15)来表示这16份子明文分组。之后还要将这16份子明文分组扩充到80份子明文分组,我们记为W[k](k= 0, 1,……79),扩充的方法如下。

W t = M t , 当0≤t≤15

W t = ( W t-3 ⊕ W t-8⊕ W t-14⊕ W t-16 ) <<< 1, 当16≤t≤79

SHA1有4轮运算,每一轮包括20个步骤(一共80步),最后产生160位摘要,这160位摘要存放在5个32位的链接变量中,分别标记为A、B、C、D、E。这5个链接变量的初始值以16进制位表示如下。

A=0x67452301

B=0xEFCDAB89

SHA-1的运算

SHA1有4轮运算,每一轮包括20个步骤,一共80步,当第1轮运算中的第1步骤开始处理时,A、B、C、D、E五个链接变量中的值先赋值到另外5个记录单元A′,B′,C′,D′,E′中。这5个值将保留,用于在第4轮的最后一个步骤完成之后与链接变量A,B,C,D,E进行求和操作。

SHA1的4轮运算,共80个步骤使用同一个操作程序,如下:

A,B,C,D,E←[(A<<<5)+ ft(B,C,D)+E+Wt+Kt],A,(B<<<30),C,D

其中 ft(B,C,D)为逻辑函数,Wt为子明文分组W[t],Kt为固定常数。这个操作程序的意义为:

将[(A<<<5)+ ft(B,C,D)+E+Wt+Kt]的结果赋值给链接变量A;

将链接变量A初始值赋值给链接变量B;

将链接变量B初始值循环左移30位赋值给链接变量C;

 将链接变量C初始值赋值给链接变量D;

将链接变量D初始值赋值给链接变量E。

 

 为什么要讲SAH-1这个算法呢?

SHA-1是一种广泛使用的哈希函数,它将任意长度的输入(通常是一个字符串)转换为固定长度的输出(通常是一个40字符的十六进制数)。

单个字符的SHA-1哈希值有以下特点:

1. 固定长度:无论输入的字符串有多长,SHA-1哈希函数都会生成一个40字符的十六进制数作为输出。

2. 不可逆性:SHA-1是一种单向函数,也就是说,它不能被“解密”回原始输入。一旦输入被哈希,就无法从输出中恢复原始输入。但是单个SHA-1字符可以通过逆思维来写脚本解出。

3. 碰撞抵抗:SHA-1被设计为具有抗碰撞的特性,也就是说,找到两个不同的输入,它们产生相同的哈希值是非常困难的。

4. 一致性:对于相同的输入,SHA-1总是产生相同的输出。

5. 随机性:SHA-1的输出看起来像是随机的,即使输入只有微小的变化,输出也会有很大的不同。

 最后设计一个SHA-1解密大家来解一下,解出来的可以放评论区展示成果(可以使用我的脚本或者是exe文件也可以自己找在线解码来解)。

7cf184f4c67ad58283ecb19349720b0cae756829
50c9e8d5fc98727b4bbc93cf5d64a68db647f04f
32096c2e0eff33d844ee6d675407ace18289357d
c2c53d66948214258a26ca9ca845d7ac0c17f8e7
e69f20e9f683920d3fb4329abd951e878b1f9372
60ba4b2daa4ed4d070fec06687e249e0e6f9ee45
da4b9237bacccdf19c0760cab7aec4a8359010b0
da4b9237bacccdf19c0760cab7aec4a8359010b0
84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
356a192b7913b04c54574d18c28d46e6395428ab
da4b9237bacccdf19c0760cab7aec4a8359010b0
3c363836cf4e16666669a25da280a1865c2d2874
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
3c363836cf4e16666669a25da280a1865c2d2874
84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4
b6589fc6ab0dc82cf12099d1c2d40ab994e8410c
fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
58e6b3a414a1e090dfc6029add0f3555ccba127f
ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4
4a0a19218e082a343a1b17e5333409af9d98f0f5
58e6b3a414a1e090dfc6029add0f3555ccba127f
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
356a192b7913b04c54574d18c28d46e6395428ab
da4b9237bacccdf19c0760cab7aec4a8359010b0
4a0a19218e082a343a1b17e5333409af9d98f0f5
da4b9237bacccdf19c0760cab7aec4a8359010b0
58e6b3a414a1e090dfc6029add0f3555ccba127f
e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98
fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
0ade7c2cf97f75d009975f4d720d1fa6c19f4897
58e6b3a414a1e090dfc6029add0f3555ccba127f
e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98
1b6453892473a467d07372d45eb05abc2031647a
ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4
c1dfd96eea8cc2b62785275bca38ac261256e278
902ba3cda1883801594b6e1b452790cc53948fda
c2b7df6201fdd3362399091f0a29550df3505b6a

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

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

相关文章

基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

关联比赛: 2021第二届云原生编程挑战赛2&#xff1a;实现一个柔性集群调度机制 参赛心得 历时快两个月的第二届云原生编程挑战赛结束了&#xff0c;作为第一次参赛的萌新&#xff0c;拿下了28名的成绩&#xff0c;与第一名差了19万分&#xff0c;因为赛制时间太长&#xff0c…

基于python+django+vue的社区爱心养老管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的社…

103.WEB渗透测试-信息收集-FOFA语法(3)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;102.WEB渗透测试-信息收集-FOFA语法&#xff08;2&#xff09; FOFA使用实例 组件框架 …

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key&#xff0c;也就是defaultZone不支持snake-c…

cmd命令

常用命令 查看电脑名称&#xff1a; hostname 查看网卡信息&#xff1a; ipconfig 快速打开网络设置界面&#xff1a; control.exe netconnections 或 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpld 打开防火墙设置&#xff1a; wf.msc 指定网卡设置IP地址&#…

Vue:使用v-model绑定的textarea在光标处插入指定文本

一、问题描述 使用v-model绑定的textarea如果需要改变其内容&#xff0c;一般只要改变v-model对应的变量即可&#xff0c;但如果需要在textarea的当前光标位置插入指定文本&#xff0c;那就需要操作DOM了。于是我们写了一段js&#xff1a; const insertTextAtCursor (text) …

基于TCP发送北斗消息给船舶设备终端

文章目录 引言I 自定义动态数据交换协议信息交换接口通信格式消息发送指令状态码错误信息返回指令II Netty实现TCP客户端III Java 原始API实现TCP客户端知识扩展: 基于Netty的定位数据平台通信协议定位方式移动定位设备see also引言 需求:发送北斗消息给船舶设备终端 动态信…

windows安装docker、elasticsearch、kibana、cerebro、logstash

文章目录 1. 安装docker1.1. 两大要点1.1.1. 安装启用hyper-v电脑不存在hyper-v的情况 1.1.2. 下载安装docker 2. 在docker里面安装elasticSearch&#xff0c;kibana&#xff0c;cerebro3. 安装logstash-将数据导入到elasticSearch3.1 安装logstash3.1.1 注意事项3.1.1.1. 等了…

【VSCode】VSCode Background 背景插件辅助窗口程序

前排贴上Github项目链接 GitHub窗口项目链接 这是一个基于VSCode上由shalldie上传的background扩展制作的windows窗口程序。 该程序旨在通过窗口程序尽可能的完善该扩展原有的功能。 background - shalldie 的最大优势是我目前仅在其扩展上发现了UseFront的选项&#xff0c;这…

从汇编语言到高级语言:人类计算机科学的伟大探索

从20世纪中叶第一台电子计算机的诞生&#xff0c;到如今的智能设备遍布全球&#xff0c;计算机科学的发展历程是一部充满着人类探索精神的伟大史诗。计算机语言作为人类与机器交流的桥梁&#xff0c;见证并推动了这一切。从最早的汇编语言到如今多样的高级语言&#xff0c;我们…

基于python+django+vue的鲜花商城系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的线…

Acrobat XI 安装教程

软件介绍 Adobe Acrobat 是由Adobe公司开发的一款PDF&#xff08;Portable Document Format&#xff0c;便携式文档格式&#xff09;编辑软件。借助它&#xff0c;可以以PDF格式制作和保存文档&#xff0c;以便于浏览和打印&#xff0c;同时还可以使用一些高级工具来创建、编辑…

AI论文写作测评!类似茅茅虫论文写作助手网站

在当前的学术研究和写作环境中&#xff0c;AI论文写作助手成为了许多学者和学生的重要工具。其中&#xff0c;千笔-AIPassPaper和茅茅虫论文写作助手是两款备受关注的平台。本文将对这两款工具进行详细测评&#xff0c;并推荐适合不同需求的用户使用。 千笔-AIPassPaper AI论文…

2024/9/15 408“回头看”之应用层小总结(下)

域名系统DNS: 本地域名服务器 本地域名服务器起着代理的作用&#xff0c;会将报文转发到根域名服务器、顶级域名服务器、权限域名服务器。 递归查询&#xff1a; 迭代查询&#xff1a; 文件传送协议FTP: FTP客户和FTP服务器之间使用的是tcp连接。 控制连接使用21端口&…

中国矿业大学《2023年868+2007年自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《25届中国矿业大学868自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2007年复试真题 2023年初试真题 Part1&#xff1a;完整版真题 2007年复试真题 2…

Mathtype永久激活码激活安装包以及如何关联到word、wps中

一、安装MathType 先下载MathTYpe安装包并解压&#xff0c;里面会有两个文件夹 &#xff0c;先安装1&#xff0c;按点击2进行激活 MathType安装包&#xff1a;https://pan.quark.cn/s/25337b0aad13 提取码&#xff1a;saTD MathType激活工具&#xff1a;https://pan.quark.cn/…

Android源码导入Android Studio

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 需要先把 Android 源码编译一遍 然后执行下面指令就可以导入android源码了 关于 Android 源码编译可以参考这篇文章【LineageOS源码下载和编译&#xf…

解锁定位服务:Flutter应用中的高德地图定位

前言 在现代移动应用开发中&#xff0c;定位服务已成为一项基本功能&#xff0c;它使得应用能够获取用户的地理位置信息&#xff0c;为用户提供更加个性化的服务。 Flutter 作为跨平台的移动应用开发框架&#xff0c;支持集成多种服务&#xff0c;包括定位服务。 本文将介绍如…

王者荣耀改重复名(java源码)

王者荣耀改重复名 项目简介 “王者荣耀改重复名”是一个基于 Spring Boot 的应用程序&#xff0c;用于生成王者荣耀游戏中的唯一名称。通过简单的接口和前端页面&#xff0c;用户可以输入旧名称并获得一个新的、不重复的名称。 功能特点 生成新名称&#xff1a;提供一个接口…