Привет. Я пытаюсь отправить пакет TCP SYN в Java с помощью библиотеки Pcap4j, но получаю исключение NullPointerExceptionJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Привет. Я пытаюсь отправить пакет TCP SYN в Java с помощью библиотеки Pcap4j, но получаю исключение NullPointerException

Сообщение Anonymous »

Код и ошибка должны объяснить мою проблему (а если нет, я могу объяснить больше)
Код:

Код: Выделить всё

import org.pcap4j.core.*;
import org.pcap4j.packet.*;
import org.pcap4j.packet.namednumber.TcpPort;
import org.pcap4j.util.MacAddress;
import org.pcap4j.packet.namednumber.EtherType;
import org.pcap4j.packet.namednumber.IpNumber;
import org.pcap4j.packet.namednumber.IpVersion;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.Collections;
import java.util.List;

public class SYN {

public static void send() {
String targetIp = "8.8.8.8";
int targetPort = 80;

try {
List
 allDevs = Pcaps.findAllDevs();
Collections.shuffle(allDevs);
PcapNetworkInterface nif = null;
Inet4Address sourceIp = null;

for (PcapNetworkInterface dev : allDevs) {
System.out.println("Interface: " + dev.getName() + " (" + dev.getDescription() + ")");

for (PcapAddress pcapAddress : dev.getAddresses()) {
InetAddress addr = pcapAddress.getAddress();
if (addr instanceof Inet4Address) {
System.out.println("Found IPv4 Address: " + addr.getHostAddress());
if (nif == null) {
nif = dev;
sourceIp = (Inet4Address) addr;
break;
}
}
}
if (nif != null) {
break;
}
}

if (nif == null || sourceIp == null) {
System.out.println("No suitable network interface found.");
return;
}

System.out.println("Selected Interface: " + nif.getName());
System.out.println("Source IP: " + sourceIp.getHostAddress());

PcapHandle handle = nif.openLive(65536, PcapNetworkInterface.PromiscuousMode.PROMISCUOUS, 10);

TcpPacket.Builder tcpBuilder = new TcpPacket.Builder();
tcpBuilder
.srcPort(TcpPort.getInstance((short) 80))
.dstPort(TcpPort.getInstance((short) targetPort))
.sequenceNumber(100)
.acknowledgmentNumber(0)
.dataOffset((byte) 5)
.syn(true)
.window((short) 65535)
.correctChecksumAtBuild(true)
.correctLengthAtBuild(true);

Inet4Address destIp = (Inet4Address) InetAddress.getByName(targetIp);

IpV4Packet.Builder ipv4Builder = new IpV4Packet.Builder();
ipv4Builder
.version(IpVersion.IPV4)
.tos(IpV4Rfc791Tos.newInstance((byte) 0))
.ttl((byte) 64)
.protocol(IpNumber.TCP)
.srcAddr(sourceIp)
.dstAddr(destIp)
.payloadBuilder(tcpBuilder)
.correctChecksumAtBuild(true)
.correctLengthAtBuild(true);

System.out.println(sourceIp == null);
System.out.println(destIp == null);
Packet p1 = ipv4Builder.build(); // Error

handle.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ошибка:

Код: Выделить всё

false // sourceIp is not null
false // destIp is not null
java.lang.NullPointerException: builder.srcAddr: null builder.dstAddr: null
at org.pcap4j.packet.TcpPacket.(TcpPacket.java:100)
at org.pcap4j.packet.TcpPacket.(TcpPacket.java:33)
at org.pcap4j.packet.TcpPacket$Builder.build(TcpPacket.java:432)
at org.pcap4j.packet.TcpPacket$Builder.build(TcpPacket.java:169)
at org.pcap4j.packet.IpV4Packet.(IpV4Packet.java:121)
at org.pcap4j.packet.IpV4Packet.(IpV4Packet.java:32)
at org.pcap4j.packet.IpV4Packet$Builder.build(IpV4Packet.java:370)
Что я уже пытался сделать:
После этого я безуспешно отлаживал код Я попытался найти ошибку в Интернете. (Я ничего не нашел).
Опрос ИИ тоже не помог (он просто выдал несколько ошибок компиляции)

Подробнее здесь: https://stackoverflow.com/questions/790 ... ut-i-get-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»