- 题目名称
The Least Secret
- 描述
集齐流量中的所有碎片,换取NSS round 3rd最深处的大礼吧!
- 附件
message.pcapng
- 思路
流量包中dump下相关数据,对数据按照索引进行排序,对键值hex2ascii后进行LSB提取得到隐藏的信息
- 考点
- wirshark简单分析、tshark提取数据
- 排序及批量解码脚本的编写
- LSB原理(
- 解题
流量包拖入wirshark分析,发现对话很简单只有192.168.1.5到193.134.211.19的单次握手包
分别查看每一个包发现都发送了类似[index:"value"]格式的数据
tshark全部导出
tshark.exe -r message.pcapng -T fields -e tcp.payload > message.txt
然后做简单的转换
def hex2ascii(hex_string):
split_hex = [hex_string[i:i+2] for i in range(0, len(hex_string), 2)]
ascii_chars = [chr(int(h, 16)) for h in split_hex]
ascii_string = ''.join(ascii_chars)
return(ascii_string)
mes=[]
with open("./message.txt", "r") as f:
message = f.readlines()
for i in message:
mes.append(hex2ascii(i.strip()))
得到完整数据:

根据题目名称(Least)及描述
对键值按照索引排序后再提取所有的最低位数据
二进制转ascii码后得到flag:
sort_data=sorted(mes,key=lambda x:int(x.split(":")[0][1:]))
extract_data=''.join([item.split(':')[1].strip('"]')[-1] for item in sort_data])
def binary_to_string(binary_str):
chars = [binary_str[i:i + 8] for i in range(0, len(binary_str), 8)]
result = ''.join([chr(int(char, 2)) for char in chars])
return result
result = binary_to_string(extract_data)
print(result)

