png格式的图片,文件头是89 50 4e 47 0d 0a 1a 0a 00 00 00 0d
IHDR | 文件头数据块 | 否 | 否 | 第一块 | ||
域的名称 | 字节数 | 说明 | ||||
Width | 4 bytes | 图像宽度,以像素为单位 | ||||
Height | 4 bytes | 图像高度,以像素为单位 | ||||
Bit depth | 1 byte | 图像深度: | ||||
ColorType | 1 byte | 颜色类型: | ||||
Compression method | 1 byte | 压缩方法(LZ77派生算法) | ||||
Filter method | 1 byte | 滤波器方法 | ||||
Interlace method | 1 byte | 隔行扫描方法: |
第二行前四位是宽,接下来四位是高,0806是下边这个。后边的C1 D0 B3 D4 就是校验码。校验的范围从494844到000000
Bit depth | 1 byte | 图像深度: | ||||
ColorType | 1 byte | 颜色类型: |
crc校验的py2代码:
# -*- coding: utf-8 -*-
import binascii
import struct
crc32key = 0xC1D0B3E4
for i in range(0, 65535):
height = struct.pack('>i', i)
data = b'\x49\x48\x44\x52\x00\x00\x0C\xC0'+height+ b'\x08\x06\x00\x00\x00'
crc32result = binascii.crc32(data) & 0xffffffff
if crc32result == crc32key:
print ''.join(map(lambda c: "%02X" % ord(c), height))