示例#1
0
 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;
 }
示例#3
0
文件: TcpPacket.java 项目: sjroot/lab
    @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;
    }