JPCap-无法捕获TCP数据包



我正在尝试使用JPCap库实现一个网络嗅探器。

问题是,它只捕获其他节点的UDP数据包。TCP数据包未被捕获。(实际上只有我电脑的TCP数据包被嗅探)

这是我正在使用的代码:

captor=JpcapCaptor.openDevice(interfaceList[interfaceNumber], 65535, true, 20);
captor.setFilter("ip and tcp",true);

JpcapWriter writer=JpcapWriter.openDumpFile(captor,"pass.txt");
for(int i=0;i<10;i++){
      //capture a single packet
      Packet packet=captor.getPacket();
      //save it into the opened file
      writer.writePacket(packet);
    }
writer.close();

您看到的来自其他节点的UDP数据包是否被发送到广播MAC地址(ff:ff:ff:fff:ff:ff)?如果是这样,那么问题不在于你可以捕获UDP数据包,而不能捕获TCP数据包,问题在于你不能捕获来自其他主机的非广播数据包(UDP数据包可以是广播数据包,但大多数不是;TCP数据包从来都不是广播数据包)。

我猜jpcap.JpcapCaptoropenDevice方法的第三个参数指定了是否要设置混杂模式;如果是这样,那么您请求它,这对于捕获从其他主机发送到其他主机的非广播数据包是必要的。

如果是这样,那么问题可能是你在一个交换网络上。请参阅Wireshark Wiki上的CaptureSetup/Ethernet页面,了解在交换式以太网上捕获"第三方"流量所需的详细信息。

相关内容

  • 没有找到相关文章

最新更新