编辑
2024-03-29
web安全
00
请注意,本文编写于 313 天前,最后修改于 313 天前,其中某些信息可能已经过时。

目录

强网杯2023 谍影重重2.0 wp
题目描述
使用tshark - r 文件名打印流量信息
然后导出流量
分析导出的流量
获取flag值

强网杯2023 谍影重重2.0 wp

题目描述

小明是某间谍组织的一员,他终日监听着我国某重点军事基地的飞行动态,妄图通过分析参数找到我国飞的最快的飞机。我国费尽千辛万苦抓住了他,并在他的电脑上找到了一段他监听的信息,请分析出这段信息中飞的最快的飞机。 格式为flag{md5(ICAO CODE of the fastest plane)}
附件内所涉及的信息均为公开信息,题目描述也均为虚构,切勿当真

提示

文末有下载地址

使用tshark - r 文件名打印流量信息

image.png 发现都是tcp协议的流量

然后导出流量

命令:

shell
tshark -r [流量包文件] -Y "tcp" -T fields -e tcp.segment_data > [导出的文件名]

image.png

注意

我习惯使用root用户来操作,在平时使用时,请尽量使用普通用户来运行

分析导出的流量

这里使用了kimi的国内免费ai来进行提问
得知ADS—B可以传输速度信息 image.png

cat一下导出的流量

image.png 使用python的pyModeS来解析并筛选

python
import 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`

image.png

获取flag值

解码后的最快速度的数据块为

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一下就得到了flag,后来发现这个并不对,要把ICAO address先大写再MD5后得到:

flag
flag{4cf6729b9bc05686a79c1620b0b1967b}

数据包下载地址

本文作者:Casear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!