一步一步自制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.xdnf.cn/news/141563.html

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

相关文章

人脸防伪检测系统源码分享

人脸防伪检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

✔2848. 与车相交的点

代码实现&#xff1a; 方法一&#xff1a;哈希表 #define fmax(a, b) ((a) > (b) ? (a) : (b))int numberOfPoints(int **nums, int numsSize, int *numsColSize) {int hash[101] {0};int max 0;for (int i 0; i < numsSize; i) {max fmax(max, nums[i][1]);for …

Spring4-IoC3-手写IoC

Spring框架的IoC是基于Java反射机制实现的 Java反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff0c;这种动态获取信息以及动态调用对象方法的功…

学习大数据DAY57 新的接口配置

作业  完成 API 接口和文件的接入, 并部署到生产调度平台, 每个任务最后至少 要有两条 不报错 的日志, 报错就驳回作业  作业不需要复制日志 API Appliation Program Interface 应用程序接口 > JSON 的地址 客户需求: 把 https://zhiyun.pub:9099/site/c-class…

【QT】定时器使用

文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象&#xff0c;确保定时器在正确的…

电子电气架构——中央计算的软件定义汽车架构

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

台风,也称为热带气旋,是一种在热带海洋上形成的强烈风暴系统。台风的形成需要满足以下几个条件:

台风&#xff0c;也称为热带气旋&#xff0c;是一种在热带海洋上形成的强烈风暴系统。台风的形成需要满足以下几个条件&#xff1a; 1. **温暖的海水**&#xff1a;台风通常在海面温度至少达到26.5C&#xff08;79.7F&#xff09;的海域形成&#xff0c;因为温暖的海水能够提供…

XShell快速连接虚拟机(Ubuntu系统)

目录 前言 一 (XShell)(虚拟机 )(Ubuntu)下载 二 虚拟机的ip查找 三 虚拟机中安装连接环境 四 开启ssh-server服务 五 验证是Ubuntu是否开启ssh-server服务 六 连接XShell软件 前言 对于刚开始探索 Linux 世界的新手来说&#xff0c;拥有一台自己的服务器可能并不现实。幸运的…

学习大数据DAY58 增量抽取数据表

作业 1 SQL 优化的常见写法有哪些 - 面试经常被问 使用索引&#xff1a;合理创建和使用索引是提高查询效率的关键。索引可以加速数据的检 索速度&#xff0c;但是索引也会占用额外的存储空间&#xff0c;并且在插入、删除和更新操作时会 有额外的开销。 避免全表扫描&…

【ARM】中断术语介绍

外设产生中断给到gic&#xff0c;gic通过内部判断此中断是FIQ还是IRQ&#xff0c;这个过程就称为assert&#xff08;断言&#xff09; 此中断被发到哪里面去叫target cpu跳转到此中断的中断向量表中叫做taken 整个过程就做routing distribute决定将中断发给哪个cpu&#xff08…

【STM32】DAC数字模拟转换

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 前言 DAC简介 DAC配置 DAC时钟使能 GPIO初始化 DAC配置 DAC使能 读写DAC值 驱动代码 MyDAC.h MyDAC.c main.c 前言 大容量的STM32F101xx和STM32F103xx产品才有DAC外设 大容量…

基于SpringBoot的在线考试系统【附源码】

基于SpringBoot的在线考试系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统功能结构设计 4.3.2 数据库表结构设计 5 系统实现 5.1管理员功能介绍 5.1.1管理员登录 5.1.2 试卷管理 5.1.3 公告信息管理 5.1.…

_Array类,类似于Vector,其实就是_string

例子&#xff1a; using namespace lf; using namespace std;int main() {_Array<int> a(10, -1);_Array<_string> s { _t("one"), _t("two") };_pcn(a);_pcn(s);} 结果&#xff1a; 源代码_Array.h&#xff1a; /***********************…

基础物理-直线运动2

2-1 位置、位移和平均速度 位置与位移 为了确定物体的位置&#xff0c;通常需要相对于某个参考点来测量&#xff0c;这个参考点通常是某个坐标轴的原点&#xff08;或零点&#xff09;&#xff0c;如图 2-1 中的 x 轴。坐标轴的正方向是坐标增大的方向&#xff0c;在图 2-1 中…

掌握远程管理的艺术:揭秘Python的pywinrm库

文章目录 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Python的pywinrm库 &#x1f525;背景&#xff1a;为何选择pywinrm&#xff1f;pywinrm库简介安装pywinrm库简单库函数使用方法场景应用常见问题与解决方案总结 &#x1f525; 掌握远程管理的艺术&#xff1a;揭秘Py…

【ARM】Cache深度解读

Cache的基本概念和使用场景 不同的Master硬件共享数据时—invalid cache 外设和DDR之间没有cache&#xff0c;所以外设直接把数据写入DDR中&#xff0c;但是cpu和DDR之间有cache&#xff0c;cpu会首先访问cache&#xff0c;如果命中直接从cache中拿数据&#xff0c;但是此时的…

浪潮信息首推3秒智能控温!告别服务器开机噪音

在当前的数据中心运维实践中&#xff0c;运维人员在部署服务器时常被“飞机起飞”般的开机噪音所困扰。服务器刚刚接通电源&#xff0c;其内部元件尚处于预热待命状态&#xff0c;而风扇却已全速运转&#xff0c;这不仅加剧了噪音污染&#xff0c;还拖慢了启动速度&#xff0c;…

[数据集][目标检测]智慧交通铁路人员危险行为躺站坐检测数据集VOC+YOLO格式3766张4类别

图片数量(jpg文件个数)&#xff1a;3766 标注数量(xml文件个数)&#xff1a;3766 标注数量(txt文件个数)&#xff1a;3766 标注类别数&#xff1a;4 标注类别名称:["sitting","sleeping","standing","track"] 每个类别标注的框数&…

OpenCore Legacy Patcher 2.0.0 发布,83 款不受支持的 Mac 机型将能运行最新的 macOS Sequoia

在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.0.0) Install macOS on unsupported Macs 请访问原文链接&#xff1a;https://sysin.org/blog/install-macos-on-unsupported-mac/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

《深度学习》PyTorch 手写数字识别 案例解析及实现 <下>

目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码&#xff0c;如下所示 2、建立神经网络模型 输出结果&#xff1a; 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析&#xff1a; 1&#xff09;para…