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

news2024/9/23 7:27:52

第一步:安装 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 string

def 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 string

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

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

相关文章

HTB-Base(strcmp函数绕过、sudo -l提权)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Base靶场&#xff0c;起点内容到此完结 渗透过程 信息搜集 服务器开放了22SSH服务 和 80HTTP服务 目录爆破 通过目录扫描出/login 和/asserts文件夹 发现/login 拥有目录遍历漏洞login.php.swp 是使用…

Mysql_使用简介

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

循环练习 案例

swich新特性 jdk12 穿透 逢七过 //含有七和被七整除舍去 public class test1 {public static void main(String[] args){for (int i 1; i <100 ; i) {if(i%70||i%107||i/107){continue;}System.out.println(i);}} } 求平方根 //输入大于2的整数&#xff0c;求平方根&…

AI基础 L22 Uncertainty over Time I 时间的不确定性

Time and Uncertainty 1 Time and Uncertainty States and Observations • discrete-time models: we view the world as a series of snapshots or time slices • the time interval ∆ between slices, we assume to be the same for every interval • Xt: denotes the se…

C++编译环境(IDE)推荐及安装

IDE是什么 嗨嗨嗨&#xff0c;我又来水博文了 今天来给大家推荐几款好用的IDE IDE是集成开发环境&#xff08;Integrated Development Environment&#xff09;的缩写&#xff0c;是一种软件应用程序&#xff0c;提供了用于软件开发的各种工具和功能&#xff0c;包括代码编辑…

windows C++ 并行编程-PPL 中的取消操作(一)

并行模式库 (PPL) 中取消操作的角色、如何取消并行工作以及如何确定取消并行工作的时间。 运行时使用异常处理实现取消操作。 请勿在代码中捕捉或处理这些异常。 此外&#xff0c;还建议你在任务的函数体中编写异常安全的代码。 例如&#xff0c;可以使用获取资源即初始化 (RA…

LidarView之定制版本号

介绍 LidarView软件需要关注2个版本号&#xff1a;1.Application版本号&#xff1b;2.安装包版本号 Application版本号 改变LV_VERSION_FULL可达到改变软件版本号的目的 SET(LV_VERSION_FULL "V1.3.0")标题栏版本号 关于对话框 安装包版本号 在Inno Setup Compi…

【退役之再次线上部署】Spring Boot + VUE + Nginx + MySQL

这篇博客写在凌晨 4 点 20 分&#xff0c;这个时候我刚线上部署完成 web 项目&#xff0c;自己写的全栈项目 这个点儿&#xff0c;也睡不着了&#xff0c;索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的&#xff0c;所以写在前面 Nginx 配置文件 location location /a…

如何做系统架构?从动态系统思考的角度

在动态系统思考的背景下&#xff0c;系统架构不再只是一个静态的、结构化的设计&#xff0c;而是一个随着时间推移、基于不同要素互动产生涌现行为的动态过程。系统架构师的任务不仅仅是定义系统的形态和结构&#xff0c;更是通过剖析系统的互动网络、功能涌现和使用场景&#…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《计及抢修人员调度的配电网信息-物理协同恢复策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

个人随想-向量数据库,你到底应该选择谁?

随着大模型的新起&#xff0c;vectorstore这1、2年也非常的火。从以前只能用chroma到现在几十种向量数据库&#xff0c;选都选不过来。 以我接触过的很多公司来说&#xff0c;他们去选择向量数据库的时候&#xff0c;很多都和迷茫&#xff0c;不知道应该选择哪个向量数据库&am…

MySQl篇(数据类型)(持续更新迭代)

目录 常见类型一&#xff1a;数值类型 常见类型二&#xff1a;字符串类型 一、文本字符串类型 1. char & varchar 1.1. CHAR(M)类型 1.2. VARCHAR(M)类型 1.3. 两者应用 2. enum & set 二、二进制字符串类型 1. BINARY & VARBINARY类型 2. 二进制字符串和…

C++ IO框架

文章目录 I/O 复用概述I/O 模型一个输入操作的两个阶段 select 函数概述详细解析函数内容详解select总结 poll 函数概述详细解析函数内容详解 epoll 函数概述基础API注意事项总结一下select, poll, epoll的区别 Reactor 和 Proactor概述概念服务器连接多个客户端的业务场景解决…

【DVWA】——File Upload(文件上传)

&#x1f4d6; 前言&#xff1a;文件上传漏洞是由于对上传文件未作过滤或过滤机制不严&#xff08;文件后缀或类型&#xff09;&#xff0c;导致恶意用户可以上传脚本文件&#xff0c;通过上传文件可达到控制网站权限的目的。 目录 &#x1f552; 1. Low&#x1f552; 2. Mediu…

Window10安装多智能体强化学习平台(SMAC)

基本步骤可以参照博客&#xff1a;window10安装多智能体强化学习平台&#xff08;SMAC&#xff09;_conda如何安装smac库-CSDN博客 注意1&#xff1a;上面所涉及的python第三方库版本不一定要安装博客指定版本。 注意2&#xff1a;星际争霸需要安装国际服(国服不支持)&#x…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁&#xff1a; 锁重试和看门狗机制&#xff1a; 主从一致性&#xff1a; 首先引入依赖&#xff0c;配置好信息 3.使用Redisson的分布式锁 可重入锁&#xff1a; 可重入锁实现是通过redsi中的hash实现的&#xff0c;key依旧是业务名称加id&#xff0c;然后第一个…

正式发售!《黑神话:悟空》背后的技术力量——UE5与实时云渲染

千呼万唤始出来&#xff0c;《黑神话&#xff1a;悟空》终于在今年8月发售了&#xff0c;相信大家都已经玩起来了&#xff01; 作为国产游戏的画质巅峰之作&#xff0c;《黑神话&#xff1a;悟空》凭借其令人叹为观止的画面质量和游戏体验&#xff0c;赢得了广泛的好评。这一切…

实时监控分析广告数据跳转统计平台源码

广告跳转实时分析页面统计系统&#xff0c;可选择生成html页面样式&#xff0c;可自定义设置页面域名后缀&#xff0c;可指定跳转指定网址&#xff0c; 可记录单个页面的访问记录&#xff0c;可对生成的单个链接进行备注&#xff0c;自定义等待时间进行跳转。 源码下载&#…

内网渗透- 内网渗透的基本知识

攻击流程讲解 内网介绍 内网也指局域网&#xff0c;是指在某一区域内由多台计算机互联而成的计算机组&#xff0c;组网范围通常在数千米以内。在局域网中&#xff0c;可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等。内网是封闭的…

Python 课程11-Web 开发

前言 Web 开发已经成为现代软件开发的核心领域之一&#xff0c;许多应用程序和服务都通过 Web 来与用户和其他系统交互。Python 作为一门广泛使用的编程语言&#xff0c;提供了多种 Web 开发框架&#xff0c;其中最流行的两个框架是 Flask 和 Django。 Flask 是一个轻量级的 W…