private void printResult(Buffer b) { int capa = b.readableBytes(); byte[] t = new byte[capa]; b.gets(t); System.out.println(); for (byte t1 : t) { System.out.printf("%d:", t1); } }
@Override public SmbData parseRequest(SmbHeader h, Buffer b, SmbSession session) { WritePrintFileRequest data = new WritePrintFileRequest(); byte[] buff; data.setWordCount(b.get()); data.setFid(ByteOrderConverter.swap(b.getShort())); data.setByteCount(ByteOrderConverter.swap(b.getShort())); if (b.readableBytes() != data.getByteCount()) { data.setMalformed(true); return data; } data.setBufferFormat(b.get()); data.setDataLength(ByteOrderConverter.swap(b.getShort())); buff = new byte[data.getDataLength()]; b.gets(buff); data.setData(buff); return data; }
@Override public TcpPacket build() { // resolve all values if (dstIp == null) throw new IllegalStateException("destination ip not found"); if (srcIp == null) { PcapDeviceMetadata metadata = PcapDeviceManager.getDeviceMetadata(dstIp); if (metadata == null) throw new IllegalArgumentException( "route not found for destination " + dstIp.getHostAddress()); srcIp = metadata.getInet4Address(); } if (srcPort == null) srcPort = 40000; if (dstPort == null) throw new IllegalStateException("destination port not found"); // set TcpPacket p = new TcpPacket(); p.sourceAddr = srcIp; p.destinationAddr = dstIp; p.srcPort = srcPort; p.dstPort = dstPort; p.seq = seq; p.ack = ack; p.dataOffset = 5; // default header size 20 (5 * 4) p.flags = flags; p.window = window; p.data = data; if (data != null) p.dataLength = data.readableBytes(); p.tcpLength = (p.dataOffset * 4) + p.dataLength; p.checksum = TcpChecksum.sum(p); return p; }