[SWPU2019] NETWORK

[SWPU2019]Network(TTL隐写)

1.题目概述

image-20220312112132255

image-20220312112430479

2.解题过程

文档中的数字代表什么呢?会不会是RGB?

image-20220312112638417

看了一下以前做过的题目,好像并不是

那是什么呢?百度告诉我这是TTL隐写,哇,长见识了

TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8
bit字段。注意:TTL与DNS
TTL有区别。二者都是生存时间,前者指ICMP包的转发次数(跳数),后者指域名解析信息在DNS中的存在时间。

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())

image-20220312114339378

出来一个类似于zip文件的编码,存下来

打开,竟然是加密的

image-20220312114830696

是伪加密

image-20220312114911319

直接用7-zip打开

image-20220312115311327

这些base64编码和以前做过的一道题很像

image-20220312115735985

再试一下

多重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安装包(在设置里)

image-20220312122058159

3.flag

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

posted on 2022-03-20 20:18  cuihua-  阅读(260)  评论(0编辑  收藏  举报

导航