当前位置: 首页 > article >正文

山石-Ultrasonic-好久不见45

.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

这段配置文件的作用是:

  • 指定应用程序运行时依赖的 .NET Framework 版本为 .NET Framework 4.7.2

  • 确保应用程序在启动时加载正确的运行时环境。

  1. 检查是否有原始图像。

  2. 弹出一个保存文件对话框,让用户选择保存加密图像的位置。

  3. 将图像保存为PNG格式,然后对图像数据进行加密。

  4. 将加密后的图像数据保存到用户指定的文件路径。

  1. 遍历图像的每个字节。

  2. 对每个字节执行以下操作:

    • 减去1。

    • 将字节的高3位右移5位,低5位左移3位,然后将它们按位或。

    • 对结果取反(按位取反)。

  3. 返回加密后的字节数组。

逆向还原图片

def decrypt_image_bytes(encrypted_bytes):

    decrypted_bytes = bytearray(len(encrypted_bytes))  # 创建与加密数据等长的字节数组

    for i, b in enumerate(encrypted_bytes):  # 遍历每个字节
        b = ~b & 0xFF  # 按位取反并确保结果为一个字节
        b = ((b & 0xF8) >> 3) | ((b & 0x07) << 5)  # 恢复高低位顺序
        b = (b + 1) & 0xFF  # 加1并确保结果为一个字节
        decrypted_bytes[i] = b  # 存入解密后的字节

    return bytes(decrypted_bytes)  # 返回解密后的字节数据


# 主程序:读取加密图像文件,解密并保存为新的图像文件
if __name__ == "__main__":
    # 读取加密图像文件
    encrypted_file_path = "enc.png"  # 加密图像文件路径
    decrypted_file_path = "dec.png"  # 解密后保存的文件路径

    try:
        with open(encrypted_file_path, "rb") as f:  # 以二进制模式读取文件
            encrypted_data = f.read()  # 读取加密数据

        # 调用解密函数
        decrypted_data = decrypt_image_bytes(encrypted_data)

        # 保存解密后的图像文件
        with open(decrypted_file_path, "wb") as f:  # 以二进制模式写入文件
            f.write(decrypted_data)

        print(f"解密成功!解密后的图像已保存为:{decrypted_file_path}")

    except FileNotFoundError:
        print(f"错误:文件 {encrypted_file_path} 未找到。")
    except Exception as e:
        print(f"解密过程中发生错误:{e}")

flagf62ead9d005bbf8fe4b7a5e9c2f56cc56}


http://www.kler.cn/a/566960.html

相关文章:

  • 【计算机网络】常见tcp/udp对应的应用层协议,端口
  • 2025年4月1日-2日AutoCable 中国汽车线束线缆及连接技术创新峰会即将开幕
  • Apache DolphinScheduler系列3-任务配置经验分享
  • 模型优化之强化学习(RL)与监督微调(SFT)的区别和联系
  • 【多模态】Magma多模态AI Agent
  • 黑马Java面试教程_P5_微服务
  • 用大白话解释缓存Redis +MongoDB是什么有什么用怎么用
  • [Lc双指针_2] 盛水最多的容器 | 有效三角形的个数 | 和为S的两个数字
  • Spring Boot 消息队列(以RabbitMQ为例)
  • Java注释/JDK开发工具生成API/关键字、标识符规范
  • 企业级本地知识库部署指南(Windows优化版)
  • 什么是 Prompt?——一篇详细的介绍
  • FloodFill 算法(典型算法思想)—— OJ例题算法解析思路
  • Win 11 C盘相邻的分区是恢复分区导致无法扩容
  • PDF文件转换为PNG图像
  • DH法建立6自由度机械臂正运动学模型
  • 数据库设计报告
  • 介绍一款飞算JavaAI编程工具,集成到idea,图文并茂
  • Graph Convolutional Networks(GCN)图卷积网络
  • 解释 Node.js 中的异步编程模型,如何使用回调、Promise 和async / await 处理异步操作?