如何更改udp数据包中的源ip,然后用java将其发送到目标?

67up9zun  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(339)

我想更改udp数据包中的源ip,然后用java程序将其发送到目的地。我写了这个代码,但它不工作。我犯了个错误:
原因:java.lang.classnotfoundexception:org.pcap4j.core.pcapnativeexception at java.base/jdk.internal.loader.builtinclassloader.loadclass(builtinclassloader)。java:581)在java.base/jdk.internal.loader.classloaders$appclassloader.loadclass(classloaders。java:178)在java.base/java.lang.classloader.loadclass(classloader。java:521) ... 7个以上
我使用pcap4j来编写这个代码。请帮我写这个。谢谢

  1. class Sender {
  2. public static void send(String message, String sysAddrIp) {
  3. try {
  4. byte[] pck = message.getBytes();
  5. UnknownPacket unknownPacket = UnknownPacket.newPacket(pck);
  6. UdpPacket udpPacket = new UdpPacket.Builder()
  7. .srcAddr(InetAddress.getByName(sysAddrIp))
  8. .dstAddr(InetAddress.getByName("192.168.10.13"))
  9. .dstPort(UdpPort.getInstance((short) 514))
  10. .correctLengthAtBuild(true)
  11. .correctChecksumAtBuild(true)
  12. .payloadBuilder(unknownPacket.getBuilder())
  13. .build();
  14. IpV4Packet.Builder ipV4Builder = new IpV4Packet.Builder();
  15. ipV4Builder.version(IpVersion.IPV4)
  16. .tos(IpV4Rfc791Tos.newInstance((byte) 0))
  17. .ttl((byte) 100)
  18. .protocol(IpNumber.UDP)
  19. .srcAddr((Inet4Address) InetAddress.getByName(sysAddrIp))
  20. .dstAddr((Inet4Address) InetAddress.getByName("192.168.10.13"))
  21. .payloadBuilder(udpPacket.getBuilder())
  22. .correctChecksumAtBuild(true)
  23. .correctLengthAtBuild(true);
  24. PcapNetworkInterface nif;
  25. try {
  26. nif = new NifSelector().selectNetworkInterface();
  27. } catch (IOException e) {
  28. e.printStackTrace();
  29. return;
  30. }
  31. if (nif == null) {
  32. return;
  33. }
  34. System.out.println(nif.getName() + "(" + nif.getDescription() + ")");
  35. final PcapHandle handle4send = nif.openLive(65536, PcapNetworkInterface.PromiscuousMode.PROMISCUOUS, 10);
  36. EthernetPacket.Builder etherBuilder = new EthernetPacket.Builder();
  37. etherBuilder.srcAddr(MacAddress.getByName("00:A0:C9:14:C8:29", ":"))
  38. .type(EtherType.IPV4)
  39. .payloadBuilder(ipV4Builder.build().getBuilder())
  40. .paddingAtBuild(true);
  41. Packet p = etherBuilder.build();
  42. handle4send.sendPacket(p);
  43. }catch (IOException | PcapNativeException e){
  44. System.out.println(e);
  45. }
  46. }
  47. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题