标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-3289] 作者: 小螺号 发表于: [2023-03-31]
本文共 [207] 位读者顶过
一个具体的场景,写了一个协议解析器,需要足够多的的样本数据包去进行测试,以满足协议报文的覆盖率,但是有一些只有在特定条件下产生的流量很难产生,这时最快的方法是构造pcap数据。[出自:jiwo.org]
本文使用 Windows 系统下的 wireshark 进行构造pcap数据。当然,Linux 下的 wireshark 也是一样的。 我们随便去 wireshark 的官网:SampleCaptures (wireshark.org) 上去找一个熟悉的协议的pcap数据修改一下,就以大家耳熟能详的 DNS 协议数据(dns+icmp.pcapng.gz)为例吧。 目标: 1. 打开上面的数据包的第一条数据的最后一个字段 Class 字段,将其修改为0x7788。 ![]() 2. 将第 2 条数据的的 8.8.8.8.in-addr.arpa 部分(26字节)复制一个拼接到第 2 条数据的最后面。 ![]() 好了,现在我们开始操作吧~ 第一步:使用 Notepad++ 新建一个文件,文件名为 DNS.txt,将两条数据按照下图的方法以Hex Dump 格式复制到 DNS.txt 中。 ![]() 2. 根据具体要求进行修改数据,当修改后的数据包长度发生的,要修改相应的各类 Length 字段的值,以满足实际要求。 修改后的数据: ![]() 修改说明: ![]() 3. 将 DNS.txt 文件导入 wireshark 软件,具体做法如下: ![]() 2. 导入 DNS.txt 文件。 ![]() 点击导入后,立即变成下面的样子了,生成了一个 importWN57L1.pcapng 格式的文件,然后操作 “文件->另存为” 然下图设置为 DNS.pcap,点击保存后 importWN57L1.pcapng 就变成了DNS.pcap了。 ![]() 最后的修改结果: 数据1:
数据2:
以上修改的后的数据包在 Linux 下经过验证是可以被 tshark 程序识别的数据类型。 如果上述方法失效,转用 Linux 下的 wireshar 目录下的 text2pcap 程序将 DNS.txt 使用如下命令转换为 DNS.pcap 文件。 text2pcap <输入的txt文件路径> <输出的pcap文件的存放路径> 示例: [root]# text2pcap ./DNS.txt ./DNS.pcap Input from: DNS.txt Output to: DNS.pcap Output format: pcap Wrote packet of 131 bytes. Read 1 potential packet, wrote 1 packet (171 bytes). [root]# ls 其实上面的 Windows 下直接将 DNS.txt 导入,还是 Linux 使用命令转换,本质都是一样的,不过是前者是图形界面的操作方式,后者是命令的操作方式的区别。 |