2015-04-15 96 views
1

我想在java中創建原始數據包,就像在c中一樣。java創建原始數據包tcp/icmp

// Flags (8 bits) 

    // FIN flag (1 bit) 
    tcp_flags[0] = 0; 

    // SYN flag (1 bit): set to 1 
    tcp_flags[1] = 1; 

    // RST flag (1 bit) 
    tcp_flags[2] = 0; 

    // PSH flag (1 bit) 
    tcp_flags[3] = 0; 

    // ACK flag (1 bit) 
    tcp_flags[4] = 0; 

    // URG flag (1 bit) 
    tcp_flags[5] = 0; 

    // ECE flag (1 bit) 
    tcp_flags[6] = 0; 

    // CWR flag (1 bit) 
    tcp_flags[7] = 0; 

這是從c代碼中的一部分,你可以設置標誌。我發現了一些類似jnetpcap的庫,但是我可以看到沒有任何函數來操縱它們。 另外,任何人都知道我是否可以從c執行c代碼?

+0

開箱無法使用Java API。您可能需要使用第三方庫(例如RockSaw,Jnetpcap或類似的) – SubOptimal

+0

任何人都知道您是否可以從C執行C代碼?什麼?你總是**從C執行C代碼。我錯過了什麼嗎?你拼錯了什麼?請編輯。 –

回答

0

我很努力地理解你到底想要做什麼(在C中解釋它,你在那裏使用什麼,libnet,原始套接字......)?在Java中,您可以使用java.net包創建原始TCP/IP套接字。

其次,jnetpcap(以及您在pcap中找到的任何其他庫)用於網絡caputring。如果你閱讀jnetpcap,說它是一個訪問C庫libpcap的Java庫。

最後,jnetpcap項目也回答你的問題。是的,你可以從Java內部運行C代碼。看看Java Native Interface

編輯: 對不起,我們在大約六年前使用jpcap這種東西(該死的時間飛過)。

import jpcap.*; 
import jpcap.packet.*; 

JpcapSender sender = JpcapSender.openDevice(NetworkInterface); 
Packet packet = new TCPPacket(); //construct your TCP 
packet.data = data; //what ever you want to send as payload 
EthernetPacket ether = new EthernetPacket(); 
ether.frametype = (short) /*whatever you need*/ 
packet.datalink = ether; 
sender.sendPacket(packet); 

上面的代碼是我過去做過的非常粗略的捷徑。但是有很多教程和例子可以開始!

+0

我想o創建一個項目,這將執行ddos攻擊,如tcp syn。該主題說創建3種類型的攻擊 –

+0

你是否必須使用Java?我會建議與scapy python。使用Java幾乎就像購買悍馬在城市中駕車一樣 - 這是工作的錯誤工具。 – Zonk

+0

是的,因爲我想創建一個安卓程序來執行ddos攻擊:P –