/** * @param packet packet * @throws PcapNativeException if an error occurs in the pcap native library. * @throws NotOpenException if this PcapHandle is not open. * @throws NullPointerException if any of arguments are null. */ public void sendPacket(Packet packet) throws PcapNativeException, NotOpenException { if (packet == null) { throw new NullPointerException("packet may not be null"); } sendPacket(packet.getRawData()); }
/** * Apply the filter on a given packet. Return true if the packet given passes the filter that is * built from this program. * * @param packet the packet to apply the filter on * @return true if this program is not freed and the packet passes the filter; false otherwise. */ public boolean applyFilter(Packet packet) { return applyFilter(packet.getRawData()); }
/** * @param packet packet * @param timestamp timestamp * @throws NotOpenException if this PcapHandle is not open. */ public void dump(Packet packet, Timestamp timestamp) throws NotOpenException { if (packet == null || timestamp == null) { StringBuilder sb = new StringBuilder(); sb.append("packet: ").append(packet).append(" ts: ").append(timestamp); throw new NullPointerException(sb.toString()); } if (logger.isDebugEnabled()) { logger.debug("Dumping a packet: " + packet); } dumpRaw(packet.getRawData(), timestamp); }
/** * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(boolean acceptZero) { byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }
private IcmpV4CommonPacket(Builder builder) { if (builder == null || builder.type == null || builder.code == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.type: ") .append(builder.type) .append(" builder.code: ") .append(builder.code); throw new NullPointerException(sb.toString()); } this.payload = builder.payloadBuilder != null ? builder.payloadBuilder.build() : null; this.header = new IcmpV4CommonHeader(builder, payload != null ? payload.getRawData() : new byte[0]); }
/** * @param srcAddr srcAddr * @param dstAddr dstAddr * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(Inet6Address srcAddr, Inet6Address dstAddr, boolean acceptZero) { if (srcAddr == null || dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new NullPointerException(sb.toString()); } if (!srcAddr.getClass().isInstance(dstAddr)) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new IllegalArgumentException(sb.toString()); } byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(srcAddr, dstAddr, header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }
/** * checksum verification is necessary for IPv6(i.e. acceptZero must be false) * * @param srcAddr srcAddr * @param dstAddr dstAddr * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(InetAddress srcAddr, InetAddress dstAddr, boolean acceptZero) { if (srcAddr == null || dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new NullPointerException(sb.toString()); } if (!srcAddr.getClass().isInstance(dstAddr)) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new IllegalArgumentException(sb.toString()); } byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(srcAddr, dstAddr, header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }
private IcmpV6CommonPacket(Builder builder) { if (builder == null || builder.type == null || builder.code == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.type: ") .append(builder.type) .append(" builder.code: ") .append(builder.code); throw new NullPointerException(sb.toString()); } if (builder.correctChecksumAtBuild) { if (builder.srcAddr == null || builder.dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("builder.srcAddr: ") .append(builder.srcAddr) .append(" builder.dstAddr: ") .append(builder.dstAddr); throw new NullPointerException(sb.toString()); } } this.payload = builder.payloadBuilder != null ? builder.payloadBuilder.build() : null; this.header = new IcmpV6CommonHeader(builder, payload.getRawData()); }
/** * checksum verification is necessary for IPv6(i.e. acceptZero must be false) * * @param srcAddr srcAddr * @param dstAddr dstAddr * @param acceptZero acceptZero * @return true if the packet represented by this object has a valid checksum; false otherwise. */ public boolean hasValidChecksum(InetAddress srcAddr, InetAddress dstAddr, boolean acceptZero) { if (srcAddr == null || dstAddr == null) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new NullPointerException(sb.toString()); } if (!srcAddr.getClass().isInstance(dstAddr)) { StringBuilder sb = new StringBuilder(); sb.append("srcAddr: ").append(srcAddr).append(" dstAddr: ").append(dstAddr); throw new IllegalArgumentException(sb.toString()); } byte[] payloadData = payload != null ? payload.getRawData() : new byte[0]; short calculatedChecksum = header.calcChecksum(srcAddr, dstAddr, header.getRawData(), payloadData); if (calculatedChecksum == 0) { return true; } if (header.checksum == 0 && acceptZero) { return true; } return false; }
this.header = new UdpHeader(builder, payload != null ? payload.getRawData() : new byte[0]);
this.header = new TcpHeader(builder, payload != null ? payload.getRawData() : new byte[0]);
private IpV6NeighborDiscoveryRedirectedHeaderOption(Builder builder) { if (builder == null || builder.reserved == null || builder.ipPacket == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.reserved: ") .append(builder.reserved) .append(" builder.ipPacket: ") .append(builder.ipPacket); throw new NullPointerException(sb.toString()); } if (builder.reserved.length != 6) { throw new IllegalArgumentException( "Invalid reserved: " + ByteArrays.toHexString(builder.reserved, " ")); } this.reserved = ByteArrays.clone(builder.reserved); this.ipPacket = builder.ipPacket; if (builder.correctLengthAtBuild) { if (length() % 8 != 0) { StringBuilder sb = new StringBuilder(); sb.append("ipPacket's length is invalid. ipPacket: ") .append(ByteArrays.toHexString(ipPacket.getRawData(), " ")); throw new IllegalArgumentException(sb.toString()); } this.length = (byte) (length() / 8); } else { this.length = builder.length; } }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[TYPE_OFFSET] = getType().value(); rawData[LENGTH_OFFSET] = length; System.arraycopy(reserved, 0, rawData, RESERVED_OFFSET, RESERVED_SIZE); System.arraycopy(ipPacket.getRawData(), 0, rawData, IP_HEADER_OFFSET, ipPacket.length()); return rawData; }
Map<String, StackTracePrinter> details = new HashMap<String, StackTracePrinter>(); for (int i = 0; i < loopCount && !shutdown; i++) { byte[] data = original.getRawData();
try { for (IpV4Packet p : list) { byte[] rawPayload = p.getPayload().getRawData(); System.arraycopy(rawPayload, 0, defragmentedPayload, destPos, rawPayload.length); destPos += rawPayload.length;
/** * This method builds the value {@link #getRawData getRawData()} will return by concatenating the * header's raw data and the payload's raw data. If you write this subclass which represents a * packet with extra parts (e.g. a trailer), you need to override this method. * * @return a raw data built */ protected byte[] buildRawData() { byte[] rd = new byte[length()]; Header header = getHeader(); Packet payload = getPayload(); int dstPos = 0; if (header != null) { System.arraycopy(getHeader().getRawData(), 0, rd, 0, header.length()); dstPos += header.length(); } if (payload != null) { System.arraycopy(getPayload().getRawData(), 0, rd, dstPos, payload.length()); dstPos += payload.length(); } return rd; }
byte[] dnsRawData = (parsedUdp).getPayload().getRawData(); DnsMessage dnsMsg; try {
@Test public void testLength() throws Exception { assertEquals(getPacket().getRawData().length, getPacket().length()); }
assertTrue(mockEventLoop.lastResponse.getPayload() instanceof UdpPacket); Message responseMsg = new Message(mockEventLoop.lastResponse.getPayload().getPayload().getRawData()); assertEquals(NOERROR, responseMsg.getHeader().getRcode()); assertArrayEquals(new Record[] {}, responseMsg.getSectionArray(Section.ANSWER));
assertTrue(mockEventLoop.lastResponse.getPayload() instanceof UdpPacket); Message responseMsg = new Message(mockEventLoop.lastResponse.getPayload().getPayload().getRawData()); assertEquals(NOERROR, responseMsg.getHeader().getRcode()); assertArrayEquals(new Record[] {}, responseMsg.getSectionArray(Section.ANSWER));