@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return IpV4Packet.newPacket(rawData, offset, length); }
List<IpV4Packet> list = new ArrayList<IpV4Packet>(); if (packet.length() <= mtu) { list.add(packet); return list; IpV4Header header = packet.getHeader(); byte[] payload = packet.getPayload().getRawData(); int max_payload_length = mtu - header.length(); int actual_max_payload_length = System.arraycopy(payload, srcPos, fragmented_payload, 0, actual_max_payload_length); IpV4Packet.Builder b = packet.getBuilder(); b.moreFragmentFlag(true) .fragmentOffset((short) (srcPos / 8)) System.arraycopy(payload, srcPos, fragmented_payload, 0, rest_length); IpV4Packet.Builder b = packet.getBuilder(); b.moreFragmentFlag(false) .fragmentOffset((short) (srcPos / 8))
@Test public void testNewPacket() { try { IpV4Packet p = IpV4Packet.newPacket(packet1.getRawData(), 0, packet1.getRawData().length); assertEquals(packet1, p); } catch (IllegalRawDataException e) { throw new AssertionError(e); } }
@Override @Test public void testLength() { assertEquals(packet1.getRawData().length, packet1.length()); }
Collections.sort(list, comparator); IpV4Header lastPacketHeader = list.get(list.size() - 1).getHeader(); int payloadLength = lastPacketHeader.getFragmentOffset() * 8 try { for (IpV4Packet p : list) { byte[] rawPayload = p.getPayload().getRawData(); System.arraycopy(rawPayload, 0, defragmentedPayload, destPos, rawPayload.length); destPos += rawPayload.length; IpV4Packet.Builder b = list.get(0).getBuilder(); 0, defragmentedPayload.length, list.get(0).getHeader().getProtocol()))) .correctChecksumAtBuild(true) .correctLengthAtBuild(true);
@Test public void testHasValidChecksum() { assertFalse(packet1.getHeader().hasValidChecksum(false)); assertFalse(packet1.getHeader().hasValidChecksum(true)); IpV4Packet.Builder b = packet1.getBuilder(); IpV4Packet p; b.headerChecksum((short) 0).correctChecksumAtBuild(false); p = b.build(); assertFalse(p.getHeader().hasValidChecksum(false)); assertTrue(p.getHeader().hasValidChecksum(true)); b.correctChecksumAtBuild(true); p = b.build(); assertTrue(p.getHeader().hasValidChecksum(false)); assertTrue(p.getHeader().hasValidChecksum(true)); }
buffer.putInt(timestamp.getNanos()); IpV4Packet.IpV4Header ipV4Header = ipV4Packet.getHeader(); buffer.put(ipV4Header.getProtocol().value()); Packet transportLayerPacket = ipV4Packet.getPayload(); if (transportLayerPacket.getPayload() == null) { return;
@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)); }
final UdpPacket udppack = ippacket.get(UdpPacket.class); final int srcAddrHash = ippacket.getHeader().getSrcAddr().hashCode(); final int dstAddrHash = ippacket.getHeader().getDstAddr().hashCode(); final int payloadLen = udppack.getPayload().getRawData().length; if (active.get(srcAddrHash) != null && payloadLen == 68 //Packets are STUN related: 56 is request, 68 is response && dstAddrHash == addrHash) { ui.setPing(ippacket.getHeader().getSrcAddr(), handle.getTimestamp().getTime() - active.get(srcAddrHash).getTime()); active.put(ippacket.getHeader().getDstAddr().hashCode(), handle.getTimestamp());
.payloadBuilder( packet1 .getBuilder() .correctChecksumAtBuild(true) .correctLengthAtBuild(true) packet2.getBuilder().correctChecksumAtBuild(true).correctLengthAtBuild(true)) .build();
byte[] ipData=builder_ipv4.build().getRawData();
Collections.sort(list, comparator); IpV4Header lastPacketHeader = list.get(list.size() - 1).getHeader(); int payloadLength = lastPacketHeader.getFragmentOffset() * 8 try { for (IpV4Packet p : list) { byte[] rawPayload = p.getPayload().getRawData(); System.arraycopy(rawPayload, 0, defragmentedPayload, destPos, rawPayload.length); destPos += rawPayload.length; IpV4Packet.Builder b = list.get(0).getBuilder();
@Test public void testGetHeader() { IpV4Header h = packet1.getHeader(); assertEquals(version, h.getVersion()); assertEquals(ihl, h.getIhl()); IpV4Packet.Builder b = packet1.getBuilder(); IpV4Packet p; assertEquals((byte) 0, p.getHeader().getIhl()); assertEquals((byte) 15, p.getHeader().getIhl()); assertEquals((short) 0, p.getHeader().getFragmentOffset()); assertEquals((short) 8191, p.getHeader().getFragmentOffset()); b.ttl((byte) 0); p = b.build(); assertEquals((short) 0, (short) p.getHeader().getTotalLengthAsInt()); assertEquals((short) 0, (short) p.getHeader().getIdentificationAsInt()); assertEquals((byte) 0, (byte) p.getHeader().getTtlAsInt()); b.ttl((byte) 127); p = b.build(); assertEquals((short) 32767, (short) p.getHeader().getTotalLengthAsInt()); assertEquals((short) 32767, (short) p.getHeader().getIdentificationAsInt()); assertEquals((byte) 127, (byte) p.getHeader().getTtlAsInt()); b.ttl((byte) 0);
IpV4Header ipV4Header=ipV4Packet.getHeader(); if(ipV4Packet.getPayload() instanceof TcpPacket){ TcpPacket tcpPacket=(TcpPacket) ipV4Packet.getPayload(); TcpHeader tcpHeader=tcpPacket.getHeader(); if(client){
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));
List<IpV4Packet> list = new ArrayList<IpV4Packet>(); if (packet.length() <= mtu) { list.add(packet); return list; IpV4Header header = packet.getHeader(); byte[] payload = packet.getPayload().getRawData(); int max_payload_length = mtu - header.length(); int actual_max_payload_length = System.arraycopy(payload, srcPos, fragmented_payload, 0, actual_max_payload_length); IpV4Packet.Builder b = packet.getBuilder(); b.moreFragmentFlag(true) .fragmentOffset((short) (srcPos / 8)) System.arraycopy(payload, srcPos, fragmented_payload, 0, rest_length); IpV4Packet.Builder b = packet.getBuilder(); b.moreFragmentFlag(false) .fragmentOffset((short) (srcPos / 8))
public static IpV4Packet decrementTtl( IpV4Packet packet ) throws TimeoutException { int ttl = packet.getHeader().getTtlAsInt(); if (ttl <= 1) { throw new TimeoutException(); } ttl--; IpV4Packet.Builder b = packet.getBuilder().ttl((byte)ttl).correctChecksumAtBuild(true); return b.build(); }
@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return IpV4Packet.newPacket(rawData, offset, length); }