Code and Error should explain my problem (and if not, I can explain more)
Code:
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<PcapNetworkInterface> 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();
}
}
}
Error:
false // sourceIp is not null
false // destIp is not null
java.lang.NullPointerException: builder.srcAddr: null builder.dstAddr: null
at org.pcap4j.packet.TcpPacket.<init>(TcpPacket.java:100)
at org.pcap4j.packet.TcpPacket.<init>(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.<init>(IpV4Packet.java:121)
at org.pcap4j.packet.IpV4Packet.<init>(IpV4Packet.java:32)
at org.pcap4j.packet.IpV4Packet$Builder.build(IpV4Packet.java:370)
What I've already tried to do:
I've debugged the code with no succes, after that I've tried to search the error online. (I haven't found anyting). Asking AI also didn't help (it just generated some compilation errors)
Pcap4jlibrary and how you have installed it in your java application.