首先看一下ZIP文件的組成:
1.自己簡單做了一個壓縮包,是正常的壓縮,壓縮包里有三個TXT文檔
這時候的壓縮包可以正常的解壓,不用輸入密碼
2.將這個正常的壓縮包放進winhex里面,看看的是什么效果(可以和后面偽加密狀態的HEX碼做對比,更好的理解偽加密)
標記的有點亂,應該是可以看懂的
第一個紅框的地方是壓縮源文件數據區,
50 4B 03 04是ZIP頭文件標記,
14 00 是解壓文件所需要的PK版本,
00 08是全局方式位標記(看是否有加密,好像是看00就可以,08可以忽略,00表示無加密,01表示有加密。這里說明一下:在某個文章中看到說是只要的偶數就是加密,例如00、02、04這樣的,奇數就是有加密,例如01 03 09.后來自己驗證了一下確實是這樣的)
下面用藍色圓圈圈住有三處地方,從這里可以看出這個壓縮包中有三個文件,在壓縮源文件目錄區中的
50 4B 01 02是目錄中文件文件頭標記,
3F 00是壓縮使用的 pkware 版本,
14 00是解壓文件所需 pkware 版本,
00 08是全局方式位標記(這里也是0008,和上面的一樣,所以可以判斷是沒有加密的。若是要偽加密,則將00修改為01,只要是奇數就可以)
3.接下來就要制作一個偽加密包,修改數據,看看效果
我的直覺是這個壓縮包有三個文件,所以就是需要修改三個地方的PK,若是數據太多不好找用搜索search--find hex valuex,輸入504B01023F,就可以直接定位
4.修改完之后保存,再次解壓,哈哈要密碼了
這就是偽密碼了吧,若是遇到壓縮包解壓需要密碼的時候先放在WINHEX中看看是不是偽加密,只要對比兩部分的全局方式位標記,若第二部分是09 00,那就把09修改為00就好
或者
使用ZipCenOp去偽加密,解密命令java -jar ZipCenOp.jar r xxxx.zip 加密命令java -jar ZipCenOp.jar e xxxx.zip
正常情況下使用7Z解壓或者360解壓,
放在linux寫可以直接提取,
使用binwalk ,binwalk -e無視密碼直接解壓
下面看一些真正的加密文件的HEX數據,兩部分的全局方式位標記都是0108(奇數是加密)
