zip偽加密原理及操作
原理:一個zip檔案由三部分組成:壓縮原始檔資料區+壓縮原始檔目錄區+壓縮原始檔目錄結束標誌。
例項
壓縮原始檔資料區: 50 4B 03 04:這是標頭檔案標記(0x04034b50) 14 00:解壓檔案所需 pkware 版本 00 00:全域性方式位標記(有無加密) 標頭檔案標記後2bytes 08 00:壓縮方式 5A 7E:最後修改檔案時間 F7 46:最後修改檔案日期 16 B5 80 14:CRC-32校驗(1480B516) 19 00 00 00:壓縮後尺寸(25) 17 00 00 00:未壓縮尺寸(23) 07 00:檔名長度 00 00:擴充套件記錄長度 6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 壓縮原始檔目錄區:
50 4B 01 02:目錄中檔案檔案頭標記(0x02014b50)
3F 00:壓縮使用的 pkware 版本
14 00:解壓檔案所需 pkware 版本 00 00:全域性方式位標記(有無加密,偽加密的關鍵) 目錄檔案標記後4bytes 08 00:壓縮方式 5A 7E:最後修改檔案時間 F7 46:最後修改檔案日期 16 B5 80 14:CRC-32校驗(1480B516) 19 00 00 00:壓縮後尺寸(25) 17 00 00 00:未壓縮尺寸(23) 07 00:檔名長度 24 00:擴充套件欄位長度 00 00:檔案註釋長度 00 00:磁碟開始號 00 00:內部檔案屬性 20 00 00 00:外部檔案屬性
00 00 00 00:區域性頭部偏移量
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001 壓縮原始檔目錄結束標誌:
3E 00 00 00:目錄區對第一張磁碟的偏移量
00 00:ZIP 檔案註釋長度
這個詳細的介紹了各部分的含義,修改其壓縮原始檔目錄區的全佈局方式標記位元值之後即可對檔案加密或解密。
具體操作如下:
壓縮原始檔資料區:50 4B 03 04:這是標頭檔案標記
壓縮原始檔目錄區:
50 4B 01 02:目錄中檔案檔案頭標記
3F 00:壓縮使用的 pkware 版本 14 00:解壓檔案所需 pkware 版本 00 00:全域性方式位標記(有無加密,這個更改這裡進行偽加密,改為09 00開啟就會提示有密碼了)
壓縮原始檔目錄結束標誌 :50 4B 05 06:目錄結束標記
我們用winhex開啟壓縮包,搜尋504B,點選第二個504B(壓縮原始檔目錄區)
------------------------------------------------------------------------------------------------------------
將全域性方式位標記中的09改為00後,開啟壓縮包
全域性方式位標記的四個數字中只有第二個數字對其有影響,其它的不管為何值,都不影響它的加密屬性! 第二個數字為奇數時 –>加密 第二個數字為偶數時 –>未加密
那麼,如何辨別當前的zip是真的加密還是偽加密?
無加密
壓縮原始檔資料區的全域性加密應當為00 00
(504B0304兩個bytes之後)
且壓縮原始檔目錄區的全域性方式位標記應當為00 00
(504B0304四個bytes之後)
假加密
壓縮原始檔資料區的全域性加密應當為00 00
且壓縮原始檔目錄區的全域性方式位標記應當為09 00
真加密
壓縮原始檔資料區的全域性加密應當為09 00
且壓縮原始檔目錄區的全域性方式位標記應當為09 00