[SWPU2019] NETWORK
[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}