public SMBMessage(byte[] buffer) { Header = new SMBHeader(buffer); SMBCommand command = SMBCommand.ReadCommand(buffer, SMBHeader.Length, Header.Command, Header); Commands.Add(command); while (command is SMBAndXCommand) { SMBAndXCommand andXCommand = (SMBAndXCommand)command; if (andXCommand.AndXCommand == CommandName.SMB_COM_NO_ANDX_COMMAND) { break; } command = SMBCommand.ReadCommand(buffer, andXCommand.AndXOffset, andXCommand.AndXCommand, Header); Commands.Add(command); } }
public static SMBCommand ReadCommand(byte[] buffer, int offset, CommandName commandName, SMBHeader header) { if ((header.Flags & HeaderFlags.Reply) > 0) { return(ReadCommandResponse(buffer, offset, commandName, header.UnicodeFlag)); } else { return(ReadCommandRequest(buffer, offset, commandName, header.UnicodeFlag)); } }
public SMBMessage() { Header = new SMBHeader(); }