我們剛剛攔截了,敵軍的文件傳輸獲取一份機密文件,請君速速破解。
下載下來是個txt,裏面一串神祕代碼:
504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E7478746C9F170D35D0A45826A03E161FB96870EDDFC7C89A11862F9199B4CD78E7504B01023F000A0001080000626D0A49F4B5091F1E00000012000000080024000000000000002000000000000000666C61672E7478740A0020000000000001001800AF150210CAF2D1015CAEAA05CAF2D1015CAEAA05CAF2D101504B050600000000010001005A000000440000000000
猜想是十六進制數,拿去decode一下:
decode出來發現是亂碼,但是內含flag.txt字樣,結合開頭504B0304,猜測這是一個zip的二進制數據。
因此在winHex中新建一個zip文件,解壓時需要密碼。
此時判斷該zip是真加密還是假加密:
1.壓縮源文件目錄區的標記第二位是奇數:01 08
2.壓縮源文件數據區標記第二位是奇數:01 08
嘗試將其修改爲偶數失敗,真加密實錘了。
目前想到的辦法就是爆破。
寫一個python3腳本,跑字典:
import zipfile #導入模塊,它是做壓縮和解壓縮的
pwds = '1234567890'
passFile=open('E:\\informationSecurity\\pwd.txt')
i=0
zfile = zipfile.ZipFile("C:\\Users\\llllll\\Desktop\\a.zip") #要解壓縮的壓縮包
for line in passFile.readlines():
pwds.append(line.replace('\n',''))
i += 1
for j in range(0,len(pwds)):
password=pwds[j] #我們設定的口令
zfile.extractall(path='C:\\Users\\llll\\Desktop', members=zfile.namelist(), pwd="123456".encode('utf-8'))
但是讀取字典會報錯,直接在代碼裏聲明密碼時就不會,原因不明。
Traceback (most recent call last):
File "E:/05.Project/01.Python/Aziji-usefully/force_unlock_zipfile/d.py", line 10, in <module>
fn.extractall(pwd=b'100100')
File "C:\Program Files\Python37\lib\zipfile.py", line 1594, in extractall
self._extract_member(zipinfo, path, pwd)
File "C:\Program Files\Python37\lib\zipfile.py", line 1647, in _extract_member
with self.open(member, pwd=pwd) as source, \
File "C:\Program Files\Python37\lib\zipfile.py", line 1516, in open
raise RuntimeError("Bad password for file %r" % name)
所以不用代碼了,使用工具Ziperello爆破:
最後跑出來密碼是123456.
解壓成功拿到flag: