哈夫曼树+密码题+TTL

这周又做了几道题,挺有意思的,记录下。
一 .奇怪的TTL
至于什么是TTL,我给大家解释下:IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1,当TTL为0的时候,该报文就会被丢弃。TTL所占的位数是8位,也就是0-255的范围,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发,远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据
如:须传送H字符,只需把H字符换成二进制,每两位为一组,每次填充到TTL字段的开头两位并把剩下的6位设置为1(xx111111),这样发4个IP报文即可传送1个字节。(摘抄···)
了解了这些之后开始做题。



打开有两个txt文档
哈夫曼树+密码题+TTL_第1张图片
题目描述如下:
我们截获了一些IP数据报,发现报文头中的TTL值特别可疑,怀疑是通信方嵌入了数据到TTL,我们将这些TTL值提取了出来,你能看出什么端倪吗?
打开文档:

哈夫曼树+密码题+TTL_第2张图片
txt文件里面有很多列ttl值,63,127,191,255
63== 00111111
127== 01111111
191== 10111111
255==11111111
变得只有前面两位,后面6位不变,如果传输4个就是一字节
使用脚本提取
(大佬的脚本)

fp = open('ttl.txt','r')
a = fp.readlines()
p = []
for i in a:
    p.append(int(i[4:]))
s = ''
for i in p:
    if i == 63:
        a = '00'
    elif i == 127:
        a = '01'
    elif i == 191:
        a = '10'
    elif i == 255:
        a = '11'
    s += a
# print(s)

import binascii
flag = ''
for i in range(0,len(s),8):
    flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('res.jpg','wb')
wp.write(flag)
wp.close()
#00111111 63
#01111111 127
#10111111 191
#11111111 255

得到:在这里插入图片描述
写完之后发现只有二维码的一部分,应该是不止一张图,用foremost直接分开(output必须是空的!):
哈夫曼树+密码题+TTL_第3张图片
之后用ps拼在一块
foremost下载及使用说明
哈夫曼树+密码题+TTL_第4张图片
得到六张图:哈夫曼树+密码题+TTL_第5张图片
使用PS拼接:哈夫曼树+密码题+TTL_第6张图片

扫描之后得到如下信息:

key:AutomaticKey 
cipher:fftu{2028mb39927wn1f96o6e12z03j58002p}

应该就是AutoKey那个加密,解密网站
得到flag{2028ab39927df1d96e6a12b03w58002k}
二.哈夫曼树
霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1L1+W2L2+W3L3+…+WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。可以证明霍夫曼树的WPL是最小的。


打开题目为:
哈夫曼树+密码题+TTL_第7张图片由于是小白所以不会写哈夫曼树的脚本,只能自己画了(Q w Q)
想知道咋画点击? 画法
哈夫曼树+密码题+TTL_第8张图片
之后就自己对照树的结构,左0右1进行查找
哈夫曼树+密码题+TTL_第9张图片
得到flag有两种可能试试就知道那个对了。
三.密码题
打开:哈夫曼树+密码题+TTL_第10张图片
一看就知道是摩斯密码,解码得:

MORSEISCOOLBUTBACONISCOOLER/CCCDDCDDDC/DDCCCCDDDCDCDCC/CDCDCCDDCDCDDDCDCDDC/
DCCDDCCDDDCCDCC/CCDCDCDDDCDCDCCDCCCD/CCDCDCCDCCCDDCDCCCDCCCDCC/DDCCDCCDDCC
DCCCCCCCCCCDDDDDCCCCCCCCCDDCDCCCCCDCDCCCDDDCDDCCDCDDCDDCDDDDCDDCCDCCC

根据前面的提示为发现后面培根密码,根据培根密码的格式将CD转化为AB

/AAABBABBBA/BBAAAABBBABABAA/ABABAABBABABBBABABBA/BAABBAABBBAABAA/AABABABBBABABAAB
AAAB/AABABAABAAABBABAAABAAABAA/BBAABAABBAABAAAAAAAAAABBBBBAAAAAAAAABBABAAAAABAB
AAABBBABBAABABBABBABBBBABBAABAAA

解得:DO YOU KNOW THE FOUR FENCE ZGIAHYANAUOZNXWI
英语不太好,百度翻译得:你知道四道栅栏吗?
再接着着解栅栏密码 (每组次数为4):ZHANGYUXIAOWANZI
终于解完了,最后的提交格式弄了半小时,太坑了。。。

你可能感兴趣的:(哈夫曼树+密码题+TTL)