【问题标题】:java create raw packets tcp/icmpjava 创建原始数据包 tcp/icmp
【发布时间】:2015-06-21 13:08:52
【问题描述】:

我想在 java 中创建原始数据包,就像在 c 中一样。

// 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代码吗?

【问题讨论】:

  • 开箱即用,这在 Java API 中是不可能的。您可能需要使用第 3 方库(例如 RockSaw、Jnetpcap 或类似库)
  • 有人知道你是否可以从 C 中执行 C 代码吗?什么?您总是从 C 中执行 C 代码。我错过了什么吗?你有没有拼错什么?请编辑。

标签: java c tcp


【解决方案1】:

我很难理解你到底想做什么(用 C 解释它,你在那里使用什么,libnet,原始套接字......)?在 Java 中,您可以使用 java.net 包创建原始 TCP/IP 套接字。

其次,jnetpcap(以及您使用 pcap 找到的任何其他库)用于网络捕获。如果你读过 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);

上面的代码是我过去所做的一个非常粗略的快捷方式。但是有很多教程和示例可供您开始使用!

【讨论】:

  • 我想创建一个项目来进行像 tcp syn 之类的 ddos​​ 攻击。对象说会造成 3 种攻击
  • 一定要用Java吗?我建议使用 scapy 的 python。使用 Java 就像买一辆悍马在城里兜风一样——用错了工具。
  • 是的,因为我想创建一个安卓程序来执行 ddos​​ 攻击:P
  • 不知道 RockSaw 是否在 Android 上运行。我个人要么用 C 编写它并使用 Android NDK (developer.android.com/tools/sdk/ndk/index.html),要么创建我自己的 TCP/IP 实现来根据我的需要对其进行自定义。
  • @Zonk,对不起,我一直在浏览 java.net 包文档以搜索 RawSocket 类或类似的东西,它们可以让您获得原始套接字。你能更好地说明你的断言吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2017-08-25
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
相关资源
最近更新 更多