常見圖片格式分析-bmp,png


一、bmp圖片

①   單色位圖:每個像素最多可以表示2種顏色,只需要使用長度為1的二進制位來表示,因此每個像素占1/8byte

②   16色位圖:每個像素最多可以表示16種顏色,只需要長度為4(2^4=16)的二進制表示,每個像素占1/2byte

③   256色位圖:每個像素最多表示256種顏色,需要長度為8(2^8=256)的二進制表示,每個像素占1byte

④   24位位圖:即RGB三原色位圖,每個像素占24位,3個byte

         ps:一字節(1byte)=8位(8bit)

         圖形的大小 = 圖片的總像素*每個像素的大小, 圖片的總像素 = 圖片長*高

bmp圖片格式:

①   位圖文件頭bmfh(占14個字節):

         數據結構如下:

         typedef struct tagBITMAPFILEHEADER {

         WORD bfType; //類型名,字符串“BM”,占2個字節,

         DWORD bfSize; //文件大小,占4個字節

         WORD bfReserved1; //保留字,占2個字節

         WORD bfReserved2; //保留字,占2個字節

         DWORD bfOffBits; //實際位圖數據的偏移字節數,即前三個部分長度之和,占4個字節

         } BITMAPFILEHEADER;

 

②   位圖信息頭bmih(占40個字節)

         typedef struct tagBITMAPINFOHEADER{

         DWORD biSize; //指定此結構體的長度,0x28

         LONG biWidth; //位圖寬

         LONG biHeight; //位圖高.為正,表示從下往上存儲,左下角是起點。為負,表示從上往下儲存,左上角是起點

         WORD biPlanes; //平面數,為1

         WORD biBitCount //采用顏色位數,可以是1,2,4,8,16,24,32

         DWORD biCompression; //壓縮方式,可以是0,1,2,其中0表示不壓縮

         DWORD biSizeImage; //實際位圖數據占用的字節數

         LONG biXPelsPerMeter; //X方向分辨率

         LONG biYPelsPerMeter; //Y方向分辨率

         DWORD biClrUsed; //使用的顏色數,如果為0,則表示默認值(2^顏色位數)

         DWORD biClrImportant; //重要顏色數,如果為0,則表示所有顏色都是重要的

         } BITMAPINFOHEADER;

 

③   彩色表aColors

         單色位圖彩色表占8字節

         16色位圖彩色表占64字節

         256色位圖彩色表占1024字節

二、png圖片

         png圖片格式:由8個字節的PNG文件署名和數據塊組成

         png文件署名域:89 50 4e 47 0d 0a 1a 0a (固定)

         IHDR數據塊:

                   00 00 00 0d(說明IHDR頭塊長度為13)

                   49 48 44 52(IHDR的hex值)

                   00 00 00 64(圖像的寬,這里為100像素)

                   00 00 00 4f(圖像的高,這里為79像素)

                  08 表示色深 02 表示顏色類型 00 預留 00 預留 00 非隔行掃描

                   92 eb f7 f6(CRC校驗)

※  這里需要注意的是圖像的寬、高數據,ctf題目經常將修改寬高后的圖片作為題目來隱藏信息

最后得有個IEND數據塊,通常值為 00 00 00 00 49 45 4E 44 AE 42 60 82

在IEND塊后面添加任何的字符都對文件的打開造成不了影響,那我們就可以在這里藏一些數據了

參考資料:1.利用文件頭標識判斷文件類型:https://blog.mythsman.com/post/5d301940976abc05b345469f/

2.PNG文件格式詳解:https://blog.mythsman.com/post/5d2d62b4a2005d74040ef7eb/

3.PNG文件結構分析與加密解密原理:https://www.cnblogs.com/amws/archive/2013/09/24/3336536.html

4.https://blog.csdn.net/u012611878/article/details/52215985


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM