package org.krakenapps.pcap.decoder.smb.transparser;
import org.krakenapps.pcap.decoder.netbios.NetBiosNameCodec;
import org.krakenapps.pcap.decoder.smb.SmbSession;
import org.krakenapps.pcap.decoder.smb.TransData;
import org.krakenapps.pcap.decoder.smb.transreq.QueryNmpipeInfoRequest;
import org.krakenapps.pcap.decoder.smb.transresp.QueryNmpipeInfoResponse;
import org.krakenapps.pcap.util.Buffer;
import org.krakenapps.pcap.util.ByteOrderConverter;
public class QueryNmpipeInfoParser implements TransParser{
@Override
public TransData parseRequest(Buffer setupBuffer , Buffer parameterBuffer , Buffer dataBuffer) {
QueryNmpipeInfoRequest transData = new QueryNmpipeInfoRequest();
transData.setSubcommand(ByteOrderConverter.swap(setupBuffer.getShort()));
transData.setFid(ByteOrderConverter.swap(setupBuffer.getShort()));
transData.setLevel(ByteOrderConverter.swap(setupBuffer.getShort()));
return transData;
}
@Override
public TransData parseResponse(Buffer setupBuffer , Buffer paramterBuffer , Buffer dataBuffer , SmbSession session) {
QueryNmpipeInfoResponse transData = new QueryNmpipeInfoResponse();
transData.setOutputBufferSize(ByteOrderConverter.swap(setupBuffer.getShort()));
transData.setInputBufferSize(ByteOrderConverter.swap(setupBuffer.getShort()));
transData.setMaximumInstance(setupBuffer.get());
transData.setCurrentInstance(setupBuffer.get());
transData.setPipeNameLength(setupBuffer.get());
transData.setPipeName(NetBiosNameCodec.readSmbUnicodeName(setupBuffer));
return transData;
}
}