package org.krakenapps.pcap.decoder.smb.ntparser; import org.krakenapps.pcap.decoder.smb.SmbSession; import org.krakenapps.pcap.decoder.smb.TransData; import org.krakenapps.pcap.decoder.smb.ntreq.NtTransactQuerySecurityDescRequest; import org.krakenapps.pcap.decoder.smb.ntresp.NtTransactQuerySecurityDescResponse; import org.krakenapps.pcap.decoder.smb.transparser.TransParser; import org.krakenapps.pcap.util.Buffer; import org.krakenapps.pcap.util.ByteOrderConverter; public class NtTransactQuerySecurityDescParser implements TransParser{ @Override public TransData parseRequest(Buffer setupBuffer , Buffer parameterBuffer, Buffer dataBuffer) { NtTransactQuerySecurityDescRequest transData = new NtTransactQuerySecurityDescRequest(); //there is no use of setup and data Buffer transData.setFid(ByteOrderConverter.swap(parameterBuffer.getShort())); transData.setReserved(ByteOrderConverter.swap(parameterBuffer.getShort())); transData.setSecurityInforFields(ByteOrderConverter.swap(parameterBuffer.getInt())); return transData; } @Override public TransData parseResponse(Buffer setupBuffer , Buffer parameterBuffer, Buffer dataBuffer , SmbSession session) { NtTransactQuerySecurityDescResponse transData = new NtTransactQuerySecurityDescResponse(); byte []securityDescriptor; //there is no use of setup Buffer transData.setLengthNeeded(ByteOrderConverter.swap(parameterBuffer.getInt())); securityDescriptor = new byte[dataBuffer.readableBytes()]; parameterBuffer.gets(securityDescriptor); transData.setSecurityDescriptor(securityDescriptor); return transData; } }