2015-04-15 99 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 –