有没有办法只捕获数据层而忽略wireshark中的上层?如果没有,是否有不同的数据包转储实用程序可以做到这一点?每个数据包最好有 1 个文件!
我在找什么:一个只将数据(有效负载)层转储到文件的实用程序。
这是与编程相关的......!我真正想做的是比较所有数据报,以便开始了解第三方编码/协议。理想情况下,最好的是一个比较多个文件的十六进制比较实用程序!
有没有办法只捕获数据层而忽略wireshark中的上层?如果没有,是否有不同的数据包转储实用程序可以做到这一点?每个数据包最好有 1 个文件!
我在找什么:一个只将数据(有效负载)层转储到文件的实用程序。
这是与编程相关的......!我真正想做的是比较所有数据报,以便开始了解第三方编码/协议。理想情况下,最好的是一个比较多个文件的十六进制比较实用程序!
您应该尝试右键单击数据包并选择“Follow TCP Stream”。然后您可以将 TCP 通信保存到原始文件中以供进一步处理。这样你就不会得到所有的 TCP/IP 协议垃圾。
Wireshark 中有一个限制捕获大小的功能,但似乎 68bytes 是最小值。有一些选项可以在一定数量的千字节、兆字节、千兆字节后启动新文件,但最小的也是 1 千字节,所以可能没用。
我建议查看 pcap 库并自己滚动。我过去使用 PERL Net::Pcap 库完成了这项工作,但也可以轻松地用其他语言完成。
如果你有 Unix/Linux 可用,你也可以看看 tcpdump。您可以使用 -s 限制捕获的数据量。例如,“-s 14”通常会为您提供以太网标头,我认为这就是您所说的数据链路层的意思。还有一些选项可以通过使用 -C 指定文件大小来控制创建文件的频率。所以理论上如果你将文件大小设置为捕获大小,每个数据包你会得到一个文件。
使用tshark
我只能通过解码为 telnet 并打印字段 telnet.data 来打印数据
tshark -r file.pcap -d tcp.port==80,telnet -T fields -e telnet.data
GET /test.js HTTP/1.1\x0d\x0a,User-Agent: curl/7.35.0\x0d\x0a,Host: 127.0.0.1\x0d\x0a,Accept: */*\x0d\x0a,\x0d\x0a
HTTP/1.1 404 Not Found\x0d\x0a,Server: nginx/1.4.6 (Ubuntu)\x0d\x0a,Date: Fri, 15 Jan 2016 11:32:58 GMT\x0d\x0a,Content-Type: text/html\x0d\x0a,Content-Length: 177\x0d\x0a,Connection: keep-alive\x0d\x0a,\x0d\x0a,<html>\x0d\x0a,<head><title>404 Not Found</title></head>\x0d\x0a,<body bgcolor=\"white\">\x0d\x0a,<center><h1>404 Not Found</h1></center>\x0d\x0a,<hr><center>nginx/1.4.6 (Ubuntu)</center>\x0d\x0a,</body>\x0d\x0a,</html>\x0d\x0a
不完美,但它足以满足我的需要,我希望它可以帮助一些人。