jake kara ‣ Apple screenshot PNGs contain non-standard chunk ░ • Projects • Blog December 11, 2016 Apple screenshot PNGs contain non-standard chunk I did some idle poking around in the PNG file format, and found something weird. Here’s the gist. I read up just enough on the .PNG standard to get a sense of how the data is structured. The first few bytes in the file are the same on every PNG, followed by a series of “chunks” that are structured the same way. Each chunk has a chunk type, which is one of set of predefined chunks, such as IHDR for the image header, and IDAT for the image data. I wrote a simple loop to run through each chunk and print out the chunk type and its length in bytes. Oddly enough, the .PNG I was using to test out my code had a chunk type that wasn’t documented: iDOT. Here’s the out (note that because there are so many IDAT chunks in a given file, I just print the number and combined size at the end, or else the terminal output would just be way too long.): Valid PNG signature ==================== chunk_length: 13 chunk_type: IHDR width: 2818 height: 2328 bit_depth: 8 colour_type: 6c compression_method: 0 filter_method: 0 interlace_method: 0 ==================== chunk_length: 2728 chunk_type: iCCP ==================== chunk_length: 9 chunk_type: pHYs ==================== chunk_length: 415 chunk_type: iTXt ==================== chunk_length: 28 chunk_type: iDOT ==================== chunk_length: 0 chunk_type: IEND ==================== Found a total of 642 IDAT chunks consuming 10512756 bytes.