Examples of PcapHandle


Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    PcapHandle handle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);
    PcapHandle sendHandle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);
    ExecutorService pool = Executors.newSingleThreadExecutor();

    try {
      handle.setFilter(
        "arp and src host " + strDstIpAddress
          + " and dst host " + strSrcIpAddress
          + " and ether dst " + Pcaps.toBpfString(SRC_MAC_ADDR),
        BpfCompileMode.OPTIMIZE
      );

      PacketListener listener
        = new PacketListener() {
            public void gotPacket(Packet packet) {
              if (packet.contains(ArpPacket.class)) {
                ArpPacket arp = packet.get(ArpPacket.class);
                if (arp.getHeader().getOperation().equals(ArpOperation.REPLY)) {
                  SendArpRequest.resolvedAddr = arp.getHeader().getSrcHardwareAddr();
                }
              }
              System.out.println(packet);
            }
          };

      Task t = new Task(handle, listener);
      pool.execute(t);

      ArpPacket.Builder arpBuilder = new ArpPacket.Builder();
      try {
        arpBuilder
          .hardwareType(ArpHardwareType.ETHERNET)
          .protocolType(EtherType.IPV4)
          .hardwareLength((byte)MacAddress.SIZE_IN_BYTES)
          .protocolLength((byte)ByteArrays.INET4_ADDRESS_SIZE_IN_BYTES)
          .operation(ArpOperation.REQUEST)
          .srcHardwareAddr(SRC_MAC_ADDR)
          .srcProtocolAddr(InetAddress.getByName(strSrcIpAddress))
          .dstHardwareAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
          .dstProtocolAddr(InetAddress.getByName(strDstIpAddress));
      } catch (UnknownHostException e) {
        throw new IllegalArgumentException(e);
      }

      EthernetPacket.Builder etherBuilder = new EthernetPacket.Builder();
      etherBuilder.dstAddr(MacAddress.ETHER_BROADCAST_ADDRESS)
                  .srcAddr(SRC_MAC_ADDR)
                  .type(EtherType.ARP)
                  .payloadBuilder(arpBuilder)
                  .paddingAtBuild(true);

      for (int i = 0; i < COUNT; i++) {
        Packet p = etherBuilder.build();
        System.out.println(p);
        sendHandle.sendPacket(p);
        try {
          Thread.sleep(1000);
        } catch (InterruptedException e) {
          break;
        }
      }
    } finally {
      if (handle != null && handle.isOpen()) {
        handle.close();
      }
      if (sendHandle != null && sendHandle.isOpen()) {
        sendHandle.close();
      }
      if (pool != null && !pool.isShutdown()) {
        pool.shutdown();
      }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

    = DefragmentEcho.class.getName() + ".pcapFile";
  private static final String PCAP_FILE
    = System.getProperty(PCAP_FILE_KEY, "src/main/resources/flagmentedEcho.pcap");

  public static void main(String[] args) throws PcapNativeException, NotOpenException {
    PcapHandle handle = Pcaps.openOffline(PCAP_FILE);

    Map<Short, List<IpV4Packet>> ipV4Packets
      = new HashMap<Short, List<IpV4Packet>>();
    Map<Short, Packet> originalPackets = new HashMap<Short, Packet>();

    while (true) {
      try {
        Packet packet = handle.getNextPacketEx();
        Short id
          = packet.get(IpV4Packet.class).getHeader().getIdentification();
        if (ipV4Packets.containsKey(id)) {
          ipV4Packets.get(id).add(packet.get(IpV4Packet.class));
        }
        else {
          List<IpV4Packet> list = new ArrayList<IpV4Packet>();
          list.add(packet.get(IpV4Packet.class));
          ipV4Packets.put(id, list);
          originalPackets.put(id, packet);
        }
      } catch (TimeoutException e) {
        continue;
      } catch (EOFException e) {
        break;
      }
    }

    for (Short id: ipV4Packets.keySet()) {
      List<IpV4Packet> list = ipV4Packets.get(id);
      final IpV4Packet defragmentedIpV4Packet = IpV4Helper.defragment(list);

      Packet.Builder builder = originalPackets.get(id).getBuilder();
      builder.getOuterOf(IpV4Packet.Builder.class)
        .payloadBuilder(new SimpleBuilder(defragmentedIpV4Packet));

      System.out.println(builder.build());
    }

    handle.close();
  }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    final PcapHandle handle4capture
      = nif.openLive(65536, PromiscuousMode.PROMISCUOUS, 10);

    final PcapHandle handle4send
      = nif.openLive(65536, PromiscuousMode.PROMISCUOUS, 10);

    handle4capture.setFilter(
      "(ether dst " + MAC_ADDR + ") or (arp and ether dst "
        + Pcaps.toBpfString(MacAddress.ETHER_BROADCAST_ADDRESS) +")",
      BpfCompileMode.OPTIMIZE
    );

    Packet.Builder tmp;
    if (type.equals(IcmpV4Type.DESTINATION_UNREACHABLE)) {
      tmp = new IcmpV4DestinationUnreachablePacket.Builder();
    }
    else if (type.equals(IcmpV4Type.TIME_EXCEEDED)) {
      tmp = new IcmpV4TimeExceededPacket.Builder();
    }
    else if (type.equals(IcmpV4Type.PARAMETER_PROBLEM)) {
      tmp = new IcmpV4ParameterProblemPacket.Builder();
    }
    else { throw new AssertionError(); }

    final Packet.Builder icmpV4errb = tmp;

    IcmpV4CommonPacket.Builder icmpV4b = new IcmpV4CommonPacket.Builder();
    icmpV4b.type(type)
           .code(code)
           .payloadBuilder(icmpV4errb)
           .correctChecksumAtBuild(true);

    final IpV4Packet.Builder ipv4b = new IpV4Packet.Builder();
    ipv4b.version(IpVersion.IPV4)
         .tos(IpV4Rfc791Tos.newInstance((byte)0))
         .identification((short)100)
         .ttl((byte)100)
         .protocol(IpNumber.ICMPV4)
         .payloadBuilder(icmpV4b)
         .correctChecksumAtBuild(true)
         .correctLengthAtBuild(true);

    final EthernetPacket.Builder eb = new EthernetPacket.Builder();
    eb.type(EtherType.IPV4)
      .payloadBuilder(ipv4b)
      .paddingAtBuild(true);

    final PacketListener listener
      = new PacketListener() {
          public void gotPacket(Packet packet) {
            if (packet.contains(IcmpV4EchoPacket.class)) {
              if (type.equals(IcmpV4Type.DESTINATION_UNREACHABLE)) {
                ((IcmpV4DestinationUnreachablePacket.Builder)icmpV4errb).payload(
                  IcmpV4Helper.makePacketForInvokingPacketField(packet.get(IpV4Packet.class))
                );
              }
              else if (type.equals(IcmpV4Type.TIME_EXCEEDED)) {
                ((IcmpV4TimeExceededPacket.Builder)icmpV4errb).payload(
                  IcmpV4Helper.makePacketForInvokingPacketField(packet.get(IpV4Packet.class))
                );
              }
              else if (type.equals(IcmpV4Type.PARAMETER_PROBLEM)) {
                ((IcmpV4ParameterProblemPacket.Builder)icmpV4errb).payload(
                  IcmpV4Helper.makePacketForInvokingPacketField(packet.get(IpV4Packet.class))
                );
              }

              ipv4b.srcAddr(packet.get(IpV4Packet.class).getHeader().getDstAddr());
              ipv4b.dstAddr(packet.get(IpV4Packet.class).getHeader().getSrcAddr());
              eb.srcAddr(packet.get(EthernetPacket.class).getHeader().getDstAddr());
              eb.dstAddr(packet.get(EthernetPacket.class).getHeader().getSrcAddr());

              try {
                handle4send.sendPacket(eb.build());
              } catch (PcapNativeException e) {
                e.printStackTrace();
              } catch (NotOpenException e) {
                e.printStackTrace();
              }
            }
            else if (packet.contains(ArpPacket.class)) {
              ArpPacket ap = packet.get(ArpPacket.class);

              if (
                !ap.getHeader().getOperation().equals(ArpOperation.REQUEST)
              ) { return; }
              if (!ap.getHeader().getDstProtocolAddr().equals(address)) {
                return;
              }

              EthernetPacket.Builder eb
                = (EthernetPacket.Builder)packet.getBuilder();
              ArpPacket.Builder ab = eb.get(ArpPacket.Builder.class);

              ab.srcHardwareAddr(MAC_ADDR)
                .dstHardwareAddr(ap.getHeader().getSrcHardwareAddr())
                .srcProtocolAddr(ap.getHeader().getDstProtocolAddr())
                .dstProtocolAddr(ap.getHeader().getSrcProtocolAddr())
                .operation(ArpOperation.REPLY);

              eb.dstAddr(ap.getHeader().getSrcHardwareAddr())
                .srcAddr(MAC_ADDR);

              try {
                handle4send.sendPacket(eb.build());
              } catch (PcapNativeException e) {
                e.printStackTrace();
              } catch (NotOpenException e) {
                e.printStackTrace();
              }
            }
          }
        };

    ExecutorService executor = Executors.newSingleThreadExecutor();
    executor.execute(
      new Runnable() {
        public void run() {
          while (true) {
            try {
              handle4capture.loop(-1, listener);
            } catch (PcapNativeException e) {
              e.printStackTrace();
            } catch (InterruptedException e) {
              break;
            } catch (NotOpenException e) {
              break;
            }
          }
        }
      }
    );

    block();
    handle4capture.breakLoop();

    handle4capture.close();
    handle4send.close();
    executor.shutdown();
  }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    PcapHandle handle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);
    PcapHandle sendHandle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);
    ExecutorService pool = Executors.newSingleThreadExecutor();

    MacAddress srcMacAddr = MacAddress.getByName(strSrcMacAddress, ":");
    try {
      handle.setFilter(
        "icmp and ether dst " + Pcaps.toBpfString(srcMacAddr),
        BpfCompileMode.OPTIMIZE
      );

      PacketListener listener
        = new PacketListener() {
            @Override
            public void gotPacket(Packet packet) {
              System.out.println(packet);
            }
          };

      Task t = new Task(handle, listener);
      pool.execute(t);

      byte[] echoData = new byte[TU - 28];
      for (int i = 0; i < echoData.length; i++) {
        echoData[i] = (byte)i;
      }

      IcmpV4EchoPacket.Builder echoBuilder = new IcmpV4EchoPacket.Builder();
      echoBuilder
        .identifier((short)1)
        .payloadBuilder(new UnknownPacket.Builder().rawData(echoData));

      IcmpV4CommonPacket.Builder icmpV4CommonBuilder = new IcmpV4CommonPacket.Builder();
      icmpV4CommonBuilder
        .type(IcmpV4Type.ECHO)
        .code(IcmpV4Code.NO_CODE)
        .payloadBuilder(echoBuilder)
        .correctChecksumAtBuild(true);


      IpV4Packet.Builder ipV4Builder = new IpV4Packet.Builder();
      try {
        ipV4Builder
          .version(IpVersion.IPV4)
          .tos(IpV4Rfc791Tos.newInstance((byte)0))
          .ttl((byte)100)
          .protocol(IpNumber.ICMPV4)
          .srcAddr((Inet4Address)InetAddress.getByName(strSrcIpAddress))
          .dstAddr((Inet4Address)InetAddress.getByName(strDstIpAddress))
          .payloadBuilder(icmpV4CommonBuilder)
          .correctChecksumAtBuild(true)
          .correctLengthAtBuild(true);
      } catch (UnknownHostException e1) {
        throw new IllegalArgumentException(e1);
      }

      EthernetPacket.Builder etherBuilder = new EthernetPacket.Builder();
      etherBuilder.dstAddr(MacAddress.getByName(strDstMacAddress, ":"))
                  .srcAddr(srcMacAddr)
                  .type(EtherType.IPV4)
                  .paddingAtBuild(true);

      for (int i = 0; i < COUNT; i++) {
        echoBuilder.sequenceNumber((short)i);
        ipV4Builder.identification((short)i);

        for (
          final Packet ipV4Packet: IpV4Helper.fragment(ipV4Builder.build(), MTU)
        ) {
          etherBuilder.payloadBuilder(
            new AbstractBuilder() {
              @Override
              public Packet build() {
                return ipV4Packet;
              }
            }
          );

          Packet p = etherBuilder.build();
          sendHandle.sendPacket(p);

          try {
            Thread.sleep(100);
          } catch (InterruptedException e) {
            break;
          }
        }

        try {
          Thread.sleep(1000);
        } catch (InterruptedException e) {
          break;
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (handle != null && handle.isOpen()) {
        try {
          handle.breakLoop();
        } catch (NotOpenException noe) {}
        try {
          Thread.sleep(1000);
        } catch (InterruptedException e) {}
        handle.close();
      }
      if (sendHandle != null && sendHandle.isOpen()) {
        sendHandle.close();
      }
      if (pool != null && !pool.isShutdown()) {
        pool.shutdown();
      }
    }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    PcapHandle handle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);

    handle.setFilter(
      filter,
      BpfCompileMode.OPTIMIZE
    );

    int num = 0;
    PcapDumper dumper = handle.dumpOpen(PCAP_FILE);
    while (true) {
      Packet packet = handle.getNextPacket();
      if (packet == null) {
        continue;
      }
      else {
        dumper.dump(packet, handle.getTimestampInts(), handle.getTimestampMicros());
        num++;
        if (num >= COUNT) {
          break;
        }
      }
    }

    dumper.close();
    handle.close();
  }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    final PcapHandle handle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);

    handle.setFilter(
      filter,
      BpfCompileMode.OPTIMIZE
    );

    PcapDumper dumper = handle.dumpOpen(PCAP_FILE);
    try {
      handle.loop(COUNT, dumper);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    dumper.close();
    handle.close();
  }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

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

    PacketListener listener
      = new PacketListener() {
          public void gotPacket(Packet packet) {
            Timestamp ts = new Timestamp(handle.getTimestampInts() * 1000L);
            ts.setNanos(handle.getTimestampMicros() * 1000);

            System.out.println(ts);

            System.out.println("start a heavy task");
            try {
              Thread.sleep(5000);
            } catch (InterruptedException e) {

            }
            System.out.println("done");
          }
        };

    try {
      ExecutorService pool = Executors.newCachedThreadPool();
      handle.loop(5, listener, pool); // This is better than handle.loop(5, listener);
      pool.shutdown();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    handle.close();
  }
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

               .correctChecksumAtBuild(true)
               .correctLengthAtBuild(true)
           )
          .build();

    PcapHandle handle = Pcaps.openDead(DataLinkType.EN10MB, 65536);
    PcapDumper dumper = handle.dumpOpen(dumpFile);
    dumper.dump(ep1, 0, 0);
    dumper.dump(ep2, 0, 0);
    dumper.close();
    handle.close();

    PcapHandle reader = Pcaps.openOffline(dumpFile);
    assertEquals(ep1, reader.getNextPacket());
    assertEquals(ep2, reader.getNextPacket());
    reader.close();

    FileInputStream in1
      = new FileInputStream(
          new StringBuilder()
            .append(resourceDirPath).append("/")
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      .payloadBuilder(ipv4b)
      .paddingAtBuild(true);

    EthernetPacket orgPacket = eb.build();

    PcapHandle handle = Pcaps.openDead(DataLinkType.EN10MB, 65536);
    PcapDumper dumper = handle.dumpOpen(dumpFile);
    dumper.dump(orgPacket, 0, 0);

    List<IpV4Packet> list = new ArrayList<IpV4Packet>();
    for (IpV4Packet p: IpV4Helper.fragment((IpV4Packet)orgPacket.getPayload(), 987)) {
      EthernetPacket ep = eb.payloadBuilder(new SimpleBuilder(p)).build();
      dumper.dump(ep, 0, 0);
      list.add(p);
    }

    dumper.close();
    handle.close();

    Collections.shuffle(list);
    assertEquals(
      orgPacket,
      eb.payloadBuilder(new SimpleBuilder(IpV4Helper.defragment(list)))
View Full Code Here

Examples of org.pcap4j.core.PcapHandle

      return;
    }

    System.out.println(nif.getName() + "(" + nif.getDescription() + ")");

    final PcapHandle handle
      = nif.openLive(SNAPLEN, PromiscuousMode.PROMISCUOUS, READ_TIMEOUT);

    if (filter.length() != 0) {
      handle.setFilter(
        filter,
        BpfCompileMode.OPTIMIZE
      );
    }

    PacketListener listener
      = new PacketListener() {
          @Override
          public void gotPacket(Packet packet) {
            Timestamp ts = new Timestamp(handle.getTimestampInts() * 1000L);
            ts.setNanos(handle.getTimestampMicros() * 1000);

            System.out.println(ts);
            System.out.println(packet);
          }
        };

    try {
      handle.loop(COUNT, listener);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    PcapStat ps = handle.getStats();
    System.out.println("ps_recv: " + ps.getNumPacketsReceived());
    System.out.println("ps_drop: " + ps.getNumPacketsDropped());
    System.out.println("ps_ifdrop: " + ps.getNumPacketsDroppedByIf());
    if (Platform.isWindows()) {
      System.out.println("bs_capt: " + ps.getNumPacketsCaptured());
    }

    handle.close();
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.