JPCap - 无法捕获TCP数据包

时间:2012-08-29 04:07:02

标签: java tcp packets jpcap sniffer

我正在尝试使用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();

1 个答案:

答案 0 :(得分:0)

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

我猜测openDevice jpcap.JpcapCaptor方法的第三个参数指定是否设置混杂模式;如果是这样,你要求它,这是为了捕获从其他主机发送到其他主机的非广播数据包所必需的。

如果是这样,那么问题可能是您在交换网络上。有关在交换式以太网上捕获“第三方”流量需要执行的操作的详细信息,请参阅the CaptureSetup/Ethernet page on the Wireshark Wiki