PNG图片宽高crc32爆破代码

开始阅读之前,请确认是否处于这个地址,这是对本菜鸟辛勤码字最大的鼓励,感激不尽!


用winhex打开图片,前面 89 50 4e 47打头就是PNG格式的图片。
在这里插入图片描述
红框是IHDR标识,橙框是文件头,蓝框是crc检验码。

其它PNG图片的文件格式解析自行了解,这里简单粗暴上代码

# coding:utf8
# python3
# Clover modified on 2022/05/13
import zlib
import struct
import sys
crc32key = 0x35FD4C38 #crc校验码,前面补上0x告诉编译器这个是16进制数字
data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xCE\x00\x00\x01\x49\x08\x06\x00\x00\x00')   #从IHDR开始复制复制4+13=17个字节。
n = 1080 #理论上四个字节分辨率最高可以是65535,但一般图象分辨率不超过1080
for w in range(n):#高和宽不对都会影响CRC32的值,所以要一起爆破
	width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
	#Clover:不知道上面说的q和h是什么,i代表整形,4个字节存放,所以设置'i'输出才是4个字节
	for h in range(n):
		height = bytearray(struct.pack('>i', h))#'>' means big-endian, 高位在前
		#Clover:1080最多用到16进制的低三位,其他情况自己改下代码
		for x in range(2,4):
			data[x+4] = width[x]
			data[x+8] = height[x]
		crc32result = zlib.crc32(data)
		if crc32result == crc32key:
			print(width,height)
            #找到了,结束程序
			sys.exit(0)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值