如何扩充知识广深度:以强网杯2023谍影重重2.0为例

附件截图

 通过筛选, 提取tcp流量, 得到:

抛开弯弯曲曲的思考过程, 直接来看wp:(by:战队: Arr3stY0u)

 

 好, 直接解码得到结果的。好像这题就做完了?思考以下几个问题:

1. 为什么别人能马上知道是ADS-B? 下次比赛过程期间我能不能也查到一些未知的协议?

  其实题干已经给出了一系列关键词, 航空, 监听, ICAO, CODE, 速度等。 因此, 很有可能是找一个航空类的专用通信协议, 这里面会编码出ICAO地址, 航空器的速度等等内容。

  1.1 ICAO是什么玩意儿? 

    一开始会查到它说的好像是机场代码, 但明显和题干不符, 排除;之后查到它可能是表示航空器编号的, 那

  1.2 ICAO CODE(address)的字长是多少, 怎么编码? 相关协议有哪些?

    由此查出了ASTERIX之类(其实中间gpt一度提示我ads-b了, 但我忽略了), 虽然对这题而言是个错误的方向, 但知识广度是有了。

2.为什么一个协议马上就能有对应的解码器, 下次我要在哪里找小众协议的解码器?

  一般解码首选wireshark, 但通过这题发现还可以用到一些python库。

3.ADS-B协议格式是什么? 以后会不会还有可能遇到? 

  一番查找之后发现了类似ModeS, C, A等同类协议, 也知道了.ADS-B的格式, 以及包含了哪些信息, 如关键的ICAO address, 空速等。每当遇到雷达、航空器之类的都可以首先想起它。

3.ModeS/ADS-B协议中大部分报文长度都是56/112, 但我们的流量有一些是64/120, 这些报文能解码吗?

  为此安装pyModeS, 尝试解码上述异常流量, 发现在没有直接给出ICAO address的前提下, 居然能直接解码出来。尝试改一两个比特之后, 所得ICAO address与原来的完全不同。由此提出新问题:

4. 为什么有些ModeS消息能直接求出ICAO address, 它是怎么求出来的?

  查了半天文档没发现有用信息(后面发现是自己扫得太快, 漏过了重要的部分), 然后想到可以下载pyModeS的源代码, 直接查它是怎么解码的。通过全文搜索ICAO address发现:/decoder/uplink.py

 1 def uplink_icao(msg: str) -> str:
 2     "Calculate the ICAO address from a Mode-S interrogation (uplink message)"
 3     p_gen = 0xFFFA0480 << ((len(msg) - 14) * 4)
 4     data = int(msg[:-6], 16)
 5     PA = int(msg[-6:], 16)
 6     ad = 0
 7     topbit = 0b1 << (len(msg) * 4 - 25)
 8     for j in range(0, len(msg) * 4, 1):
 9         if data & topbit:
10             data ^= p_gen
11         data = (data << 1) + ((PA >> 23) & 1)
12         PA = PA << 1
13         if j > (len(msg) * 4 - 26):
14             ad = ad + ((data >> (len(msg) * 4 - 25)) & 1)
15             ad = ad << 1
16     return "%06X" % (ad >> 2)

查询GPT反馈如下

"在这段代码中,首先从 Mode-S 信息中提取出用于计算地址的部分(即 dataPA),然后使用一个特定的生成多项式 p_gen 进行一系列的位操作。这个算法并不是在反向解析 CRC 来还原原始内容。它是使用CRC算法来计算一种检验值(即 ICAO 地址),这个检验值用于标识特定的航空器。代码中的位操作、移位和异或运算是用于计算这个特定的值,而不是用于恢复原始内容。"

尽管可靠性存疑, 但可以知道大方向是:除了直接明文传输信息, 还可能通过编码方式进行传输, 其中很有可能用到CRC。

5. (尚未解决)在每条信息的前面都有类似1a33(32)ffffffffffff**的结构, 这些是什么协议对ModeS进行封装之后导致的?

  欢迎在留言区讨论

总结: 

我认为作为一个网安的初学者, 首先应该多做题, 对应为多见世面

其次, 尽量只碰会有wp的题目, 否则可能坐牢三四个小时毫无收获。

再次, 应尽可能通过前述的思考方法, 从一道题和搜索引擎中榨出足够的经验值。

直到掩书闭卷回忆此题, 依然可以清晰得到明确的获取信息的思路, 或者能无比清晰其中的一些关键要点, 乃至与已有的知识进行联动。

这个时候, 可算是充分解决了这题。

posted @ 2023-12-19 10:13  lynnzixing  阅读(396)  评论(0编辑  收藏  举报