【渗透测试】PNG图片隐藏部分恢复

1、图片原尺寸还原方法一

缺点就是有点慢,毕竟遍历的次数比较多

python 复制代码
import binascii
import struct
import sys

filename = sys.argv[1]
crcbp = open(filename, "rb").read()  # 打开图片
crc32frombp = int(crcbp[29:33].hex(), 16)  # 读取图片中的CRC校验值
print(f"图片中的CRC校验值:\t{crc32frombp}")

for i in range(4000):  # 宽度1-4000进行枚举(如果图片太大,可以适当自行增大)
    for j in range(4000):  # 高度1-4000进行枚举(如果图片太大,可以适当自行增大)
        data = crcbp[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        # print(crc32)
        if crc32 == crc32frombp:  # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
            print(f"图片大小(宽×高):\t{i} × {j}")
            print(f'换算后hex:\t\t{hex(i)}, {hex(j)}')

2、图片原尺寸还原方法二

这个方法有时候结果不太准确,可以两个方法相互印证

python 复制代码
import struct
import sys
import zlib

filename = sys.argv[1]
with open(filename, 'rb') as f:
    all_b = f.read()
    crc32key = int(all_b[29:33].hex(), 16)
    data = bytearray(all_b[12:29])
    n = 4095
    for w in range(n):
        width = bytearray(struct.pack('>i', w))
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x + 4] = width[x]
                data[x + 8] = height[x]
            crc32result = zlib.crc32(data)
            if crc32result == crc32key:
                print("宽为:", end="")
                print(width)
                print("高为:", end="")
                print(height)
                exit(0)

3、PNG图片尺寸修改

修改后,PNG图片即可恢复修改前的大小,显示隐藏的部分。

相关推荐
2401_8898846619 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
研究点啥好呢19 小时前
3月15日GitHub热门项目推荐 | 从本地部署到生产实践
人工智能·python·github·cursor·vibe coding
no_work19 小时前
卷积神经网络cnn图像识别项目合集
人工智能·python·深度学习·神经网络·机器学习·cnn
李宥小哥19 小时前
SQLite05-常用函数
java·开发语言·jvm
皮卡狮19 小时前
C++面向对象编程的三大核心特性之一:多态
开发语言·c++
程序媛徐师姐19 小时前
Python基于Django的网络漏洞扫描工具的开发与优化【附源码、文档说明】
python·django·漏洞扫描工具·漏洞扫描·网络漏洞扫描工具·python网络漏洞扫描工具·pytho网络漏洞扫描
zzb158019 小时前
Agent学习-ReAct框架
java·人工智能·python·机器学习·ai
zhangx1234_19 小时前
java list介绍
java·开发语言·list
Java面试题总结19 小时前
Go运行时系统解析: runtime包深度指南
开发语言·后端·golang
Dxy123931021619 小时前
PyTorch的OneCycleLR详细介绍:解锁“超级收敛”的油门控制术
人工智能·pytorch·python