#P10344. [THUSC 2019] PCAP 文件解析与读写

[THUSC 2019] PCAP 文件解析与读写

Description

所有题目中,网络流量都将以 PCAP 文件格式保存,具体格式说明可参见《学习手册》。本题需要对 PCAP 文件进行基本的读写与解析。

在本题中,你需要完成的任务是依次遍历输入文件中时间乱序的流量片段,在对它们进行一些操作后,组装为 PCAP 格式写入输出。关于文件的读写方式,可以参照《学习手册》。

需要进行的操作为:只保留长度不大于 10001000 的片段(只考虑完整的以太网帧长度,不包括 PCAP 格式的片段头),并按照时间升序排序这些片段(即首先比较秒,而后比较微秒),保证没有两个片段的时间是相同的。需要注意,你的输出文件需要是一个合法的 PCAP 文件。为了测试文件格式的合法性,你可以使用 Wireshark 等工具打开你的输出文件进行检查。

与手册中指示的不同的是,本题中,你应该直接完整复制每个流量片段的头,包括时间戳字段。

Input Format

输入包含不超过 nn 个流量片段,总大小不超过 mm 字节。

Output Format

你的输出将与答案文件进行逐字节对比。请不要输出任何多余信息,以免导致不必要的失分。

Hint

【子任务】

测试点 nn mm
1 =102=10^2 =5×104=5\times 10^4
2 =1.5×105=1.5\times 10^5
3 =103=10^3 =1.5×106=1.5\times 10^6
4 =104=10^4 =1.5×107=1.5\times 10^7
5 =105=10^5 =1.5×108=1.5\times 10^8

【样例 1】

见题目附件 1.in/ans

【样例解释 1】

你可以用你电脑上安装的 Wireshark 软件打开样例数据的输入和输出。

用 Wireshark 打开样例输入文件,应该可以看到,界面上部记录了这个 PCAP 文件中记录的所有以太网帧,界面中部显示的是当前这个以太网帧的解析,下部则是它的十六进制数据。对于这个软件的详细使用方法,除了部分题目给出的提示外,不会提供更多帮助,请选手自行熟悉并摸索。

样例输入文件记录了两个以太网帧,都是从 10.2.254.100 发往 10.2.12.82 地址的 ARP 请求,它们区别在于 ARP 请求后多余的数据长度不同。由于第一个帧的长度不大于 1000 ,第二个帧的长度大于 1000,按照题目意思,只有第一个帧需要输出,排序后输出到了样例输出文件中,你可以同样地用 Wireshark 打开样例输出文件来验证这一点。