小明是某间谍组织的一员,他终日监听着我国某重点军事基地的飞行动态,妄图通过分析参数找到我国飞的最快的飞机。我国费尽千辛万苦抓住了他,并在他的电脑上找到了一段他监听的信息,请分析出这段信息中飞的最快的飞机。 格式为flag{md5(ICAO CODE of the fastest plane)}
附件内所涉及的信息均为公开信息,题目描述也均为虚构,切勿当真
提示
文末有下载地址
tshark - r
文件名打印流量信息发现都是tcp协议的流量
命令:
shelltshark -r [流量包文件] -Y "tcp" -T fields -e tcp.segment_data > [导出的文件名]
注意
我习惯使用root用户来操作,在平时使用时,请尽量使用普通用户来运行
这里使用了kimi的国内免费ai来进行提问
得知ADS—B可以传输速度信息
cat
一下导出的流量
使用python的pyModeS
来解析并筛选
pythonimport re # 导入正则表达式模块,用于匹配和处理字符串
import pyModeS # 导入pyModeS库,用于解码Mode S信号
speed = [] # 创建一个空列表,用于存储包含"Speed"的行
numbers = [] # 创建一个空列表,用于存储从文本中提取的数字
# 打开tcp.txt文件并读取所有行
with open(r"/root/Desktop/demo.txt", "r") as x:
lines = x.readlines() # 读取文件的所有行,并存储在lines列表中
# 创建或清空demo_output.txt文件用于写入解码后的结果
with open(r"/root/Desktop/demo_output.txt", "w", encoding="utf-8") as output_file:
for i in lines: # 遍历lines列表中的每一行
# 检查行的长度是否为47个字符
if len(i) == 47:
try:
# 尝试使用pyModeS库解码特定部分的内容
# 注意:这里假设pyModeS库有decoder模块和tell方法,实际情况可能不同
decoded_output = pyModeS.decoder.tell(
i[18:]
) # 解码从第18个字符开始到最后的内容
# 将解码后的结果写入demo_output.txt文件
output_file.write(str(decoded_output) + "\n")
except Exception as e:
# 如果解码过程中出现错误,将错误信息写入demo_output.txt文件
output_file.write("错误译码行:" + str(e) + "\n")
# 再次打开demo_output.txt文件,这次用于读取解码后的结果
with open(
r"/root/Desktop/demo_output.txt", "r", encoding="utf-8", errors="ignore"
) as file:
for line_number, line in enumerate(file, 1): # 遍历文件的每一行,并为每一行编号
if "Speed" in line:
# 如果行包含"Speed",则将该行添加到speed列表中
speed.append(line.strip())
# 使用正则表达式找到该行中所有的数字
found_numbers = re.findall(r"\d+", line)
# 将找到的数字转换为整数并添加到numbers列表中
numbers.extend([int(num) for num in found_numbers])
# 再次将处理后的行添加到speed列表中(这里重复添加,可能是代码逻辑上的错误)
# 检查numbers列表是否非空
if numbers:
# 找出numbers列表中的最大数,并将其转换为字符串
max_number = str(max(numbers))
# 将最大数写入到test.txt文件中
with open("/root/Desktop/test.txt", "w", encoding="utf-8") as f:
# 写入最大数到test.txt文件,并在末尾添加换行符
f.write(max_number + "\n")
筛选完后得出最大速度为`Speed: 371 knots`
解码后的最快速度的数据块为
ICAO address: 79a05e Downlink Format: 17 Protocol: Mode-S Extended Squitter (ADS-B) Type: Airborne velocity Speed: 371 knots Track: 213.3474959459136 degrees Vertical rate: -64 feet/minute Type: Ground speed
再把ICAO address MD5
一下就得到了fla
g,后来发现这个并不对,要把ICAO address
先大写再MD5
后得到:
flagflag{4cf6729b9bc05686a79c1620b0b1967b}
本文作者:Casear
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!