2012-08-29 53 views
0

我想使用JPCap库实现网络嗅探器。JPCap - 不能捕获TCP数据包

问题是,它只捕获其他节点的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(); 

回答

0

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

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

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