当我执行以下Netcat命令并使用Wireshark查看数据包时,它表示UDP数据包格式错误.
$echo "this is a test" | nc -u 127.0.0.1 53
同样,使用像$echo这样的命令“这是一个测试”> /dev/udp/127.0.0.1/53在Wireshark中生成“格式错误的数据包”错误.
echo命令被发送/传送到Netcat服务器而没有错误.但这让我感到疑惑:是否有可能手动构建一个带有echo或其他原生Unix工具的正确UDP数据包?
我正在使用Debian和macOS.
解决方法:
从IP和UDP的角度来看,您的数据包完全有效.如果在Wireshark的下部窗格中展开Ethernet / IP / UDP的协议详细信息,您将看到数据包已成功解析.
但是,因为它的目的地是端口53,所以Wireshark会尝试将其解析为DNS数据包,但它不能这样做(因为字符串“这是一个测试”不是每个RFC 1035规范的有效DNS请求).
如果您遵循该链接的规范,您将能够构建一个在解析为DNS请求时有效的数据包.如果您将数据包发送到另一个端口,您会注意到Wireshark将不再将其解析为DNS请求,因此不会显示该警告.
标签:netcat,linux,debian,udp,osx
来源: https://codeday.me/bug/20190809/1626636.html