2012-11-08 38 views
1

我想用Jpcap發送SYN數據包並獲得響應,但是當我這樣做時,我會自動發送RST數據包,但我不想發送RST數據包。我怎樣才能停止發送RST包和爲什麼我發送一個RST包發送帶有Jpcap問題的SYN數據包

這裏是我的代碼:

public class JavaApplication1 { 

public static void main(String[] args) throws UnknownHostException, IOException { 
    JpcapSender sender = JpcapSender.openDevice(JpcapCaptor.getDeviceList()[0]); 
    NetworkInterfaceAddress[] nia = JpcapCaptor.getDeviceList()[0].addresses;   
    TCPPacket packet = new TCPPacket(57912, 80, 1, 0, false, false, false, false, true, false, false, false, 0, 0); 
    packet.setIPv4Parameter(0, false, false, false, 0, false, true, false, 0, 34567, 64, IPPacket.IPPROTO_TCP, nia[0].address , InetAddress.getByName("www.google.com")); 

    packet.data = ("").getBytes(); 

    EthernetPacket ether = new EthernetPacket(); 
    ether.frametype = EthernetPacket.ETHERTYPE_IP; 
    ether.src_mac = ((NetworkInterface)JpcapCaptor.getDeviceList()[0]).mac_address; 
    ether.dst_mac = new byte[]{(byte)200, (byte)205, (byte)114, (byte)68, (byte)129, (byte)162}; 

    packet.datalink = ether; 
    sender.sendPacket(packet); 
} 

}

包:

57912 > http [SYN] Seq=0 Win=0 Len=0 

http > 57912 [SYN, ACK] Seq=0 ACK=1 Win=14300 Len=0 MSS=1430 

57912 > http [RST] Seq=0 Win=0 Len=0 

回答

0

你的TCP/IP堆棧正在爲你做這件事,因爲它看到了SYN/ACK響應,並不知道它是幹什麼用的。你無法阻止它這樣做。

你爲什麼要這樣做?

+0

對不起,等待時間。我只是想知道爲什麼,能否停下來。 –

+0

不適用於jpcap。您可以使用其他可以過濾數據包的軟件包。看到我的答案[這裏](http://stackoverflow.com/questions/13008340/how-to-prevent-windows-from-sending-rst-packet-when-trying-to-connect-to-somebod/13135227#13135227 )。 – Basil