/** * Checks if the given packet contains a Udp packet ({@link UdpPacket}). * * @param packet packet * @return true if the packet contains a UDP packet; false otherwise. */ public static boolean containsUdpPacket(Packet packet) { return packet.contains(UdpPacket.class); }
/** * Checks if the given packet contains an IPv4 packet ({@link IpV4Packet}). * * @param packet packet * @return true if the packet contains an IPv4 packet; false otherwise. */ public static boolean containsIpV4Packet(Packet packet) { return packet.contains(IpV4Packet.class); }
/** * Checks if the given packet contains an IPv6 packet ({@link IpV6Packet}). * * @param packet packet * @return true if the packet contains an IPv6 packet; false otherwise. */ public static boolean containsIpV6Packet(Packet packet) { return packet.contains(IpV6Packet.class); }
/** * Checks if the given packet contains an Ethernet packet ({@link EthernetPacket}). * * @param packet packet * @return true if the packet contains an Ethernet packet; false otherwise. */ public static boolean containsEthernetPacket(Packet packet) { return packet.contains(EthernetPacket.class); } }
/** * Checks if the given packet contains an IP packet ({@link IpPacket}). * * @param packet packet * @return true if the packet contains an IP packet; false otherwise. */ public static boolean containsIpPacket(Packet packet) { return packet.contains(IpPacket.class); }
/** * Checks if the given packet contains a TCP packet ({@link TcpPacket}). * * @param packet packet * @return true if the packet contains a TCP packet; false otherwise. */ public static boolean containsTcpPacket(Packet packet) { return packet.contains(TcpPacket.class); }
@Override 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); } };
private static void waitForPing() throws PcapNativeException, NotOpenException { PcapNetworkInterface nif = Pcaps.getDevByName("eth0"); System.out.println(nif.getName() + " (" + nif.getDescription() + ")"); for (PcapAddress addr : nif.getAddresses()) { if (addr.getAddress() != null) { System.out.println("IP address: " + addr.getAddress()); } } System.out.println(""); PcapHandle handle = nif.openLive(65536, PromiscuousMode.NONPROMISCUOUS, 10); handle.setFilter("icmp", BpfCompileMode.OPTIMIZE); while (true) { Packet packet = handle.getNextPacket(); if (packet == null) { continue; } if (packet.contains(IcmpV4EchoPacket.class)) { break; } } handle.close(); } }
@Test public void testNewPacket() { IcmpV4SourceQuenchPacket p; try { p = IcmpV4SourceQuenchPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV4Packet.class)); assertTrue(p.getPayload().contains(IcmpV4CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV4EchoPacket.class)); assertFalse(p.getPayload().contains(UnknownPacket.class)); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV4TimeExceededPacket p; try { p = IcmpV4TimeExceededPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV4Packet.class)); assertTrue(p.getPayload().contains(IcmpV4CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV4EchoPacket.class)); assertFalse(p.getPayload().contains(UnknownPacket.class)); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV4RedirectPacket p; try { p = IcmpV4RedirectPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV4Packet.class)); assertTrue(p.getPayload().contains(IcmpV4CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV4EchoPacket.class)); assertFalse(p.getPayload().contains(UnknownPacket.class)); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV4DestinationUnreachablePacket p; try { p = IcmpV4DestinationUnreachablePacket.newPacket( packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV4Packet.class)); assertTrue(p.getPayload().contains(IcmpV4CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV4EchoPacket.class)); assertFalse(p.getPayload().contains(UnknownPacket.class)); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV4ParameterProblemPacket p; try { p = IcmpV4ParameterProblemPacket.newPacket( packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV4Packet.class)); assertTrue(p.getPayload().contains(IcmpV4CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV4EchoPacket.class)); assertFalse(p.getPayload().contains(UnknownPacket.class)); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV6PacketTooBigPacket p; try { p = IcmpV6PacketTooBigPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV6Packet.class)); assertTrue(p.getPayload().contains(IcmpV6CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV6EchoRequestPacket.class)); assertTrue(p.getPayload().contains(UnknownPacket.class)); assertEquals(p.getPayload().get(UnknownPacket.class).length(), 3); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV6TimeExceededPacket p; try { p = IcmpV6TimeExceededPacket.newPacket(packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV6Packet.class)); assertTrue(p.getPayload().contains(IcmpV6CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV6EchoRequestPacket.class)); assertTrue(p.getPayload().contains(UnknownPacket.class)); assertEquals(p.getPayload().get(UnknownPacket.class).length(), 3); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV6DestinationUnreachablePacket p; try { p = IcmpV6DestinationUnreachablePacket.newPacket( packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV6Packet.class)); assertTrue(p.getPayload().contains(IcmpV6CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV6EchoRequestPacket.class)); assertTrue(p.getPayload().contains(UnknownPacket.class)); assertEquals(p.getPayload().get(UnknownPacket.class).length(), 3); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testNewPacket() { IcmpV6ParameterProblemPacket p; try { p = IcmpV6ParameterProblemPacket.newPacket( packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV6Packet.class)); assertTrue(p.getPayload().contains(IcmpV6CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV6EchoRequestPacket.class)); assertTrue(p.getPayload().contains(UnknownPacket.class)); assertEquals(p.getPayload().get(UnknownPacket.class).length(), 3); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
} else if (p.contains(IllegalPacket.class)) { Packet.Builder builder = p.getBuilder(); byte[] ipRawData = p.get(IllegalPacket.class).getRawData();
} else if (p.contains(IllegalPacket.class)) { Packet.Builder builder = p.getBuilder(); byte[] ipRawData = p.get(IllegalPacket.class).getRawData();
@Test public void testHasValidChecksumFFFF() throws Exception { PcapHandle pcapHandle = Pcaps.openOffline(resourceDirPath.concat("/UdpPacketTestChecksum0xFFFF.pcap")); Packet packet = pcapHandle.getNextPacket(); assertNotNull(packet); assertTrue(packet.contains(IpV4Packet.class)); IpV4Packet ipV4Packet = packet.get(IpV4Packet.class); assertNotNull(ipV4Packet); IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader(); assertNotNull(ipV4Header); assertTrue(ipV4Packet.contains(UdpPacket.class)); UdpPacket udpPacket = ipV4Packet.get(UdpPacket.class); assertNotNull(udpPacket); assertEquals((short) 0xFFFF, udpPacket.getHeader().getChecksum()); assertTrue(udpPacket.hasValidChecksum(ipV4Header.getSrcAddr(), ipV4Header.getDstAddr(), false)); }