2012-08-29 88 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瞭解有關在交換以太網網絡上捕獲「第三方」流量需要做什麼的詳細信息。