[SWPU2019] NETWORK
阿新 • • 發佈:2022-03-20
[SWPU2019]Network(TTL隱寫)
1.題目概述
2.解題過程
文件中的數字代表什麼呢?會不會是RGB?
看了一下以前做過的題目,好像並不是
那是什麼呢?百度告訴我這是TTL隱寫,哇,長見識了
IP報文在路由間穿梭的時候每經過一個路由,TTL就會減1。
這個東西是用來防止資料過多的。計算機網路知識。大多數情況下通常只需要經過很小的跳數就能完成報文的轉發,遠遠比上限255小得多,所以我們可以用TTL值的前兩位來進行傳輸隱藏資料。
所以加密的方法就是把一個ASCII碼分4截,分到4個TTL裡面,有點像是最低位畫素的隱寫。
啊,這些好像也沒啥用,
按照以下步驟,
1.轉成2進位制,
2.寫個指令碼。取出前兩位。重新組合。再以8位一組。
3.轉換為16進位制字元。再將16進位制字元轉換為字元(好複雜)
藉助大佬的指令碼,開幹!
指令碼如下
with open('Network.txt') as f: lines = f.readlines() n_num = [] #分析出所有的數 for i in lines: if i!='\n': n_num.append(int(i)) #拿到每個TTL值的高位 rlt = '' for i in range(0,len(lines)): tmp = bin(n_num[i])[2:] tmp = '0'*(8-len(tmp)) + tmp rlt += tmp[0:2] #得到最終的結果並存到檔案中 rlt2 = '' for i in range(0,len(rlt),8): rlt2 += chr(int(rlt[i:i+8],2)) with open('output.txt','w') as f: f.write(rlt2.rstrip())
出來一個類似於zip檔案的編碼,存下來
開啟,竟然是加密的
是偽加密
直接用7-zip開啟
這些base64編碼和以前做過的一道題很像
再試一下
多重Base64破解
import base64
f = open('1flag.txt','rb').read()
while True:
f = base64.b64decode(f)
if b'{' in f:
print(f)
break
else:
continue
pycharm python2環境下執行, 可能需要安裝scikit-learn安裝包(在設定裡)
3.flag
flag{189ff9e5b743ae95f940a6ccc6dbd9ab}