public static SMB1Message GetSMB1Message(byte[] buffer) { if (!SMB1Header.IsValidSMB1Header(buffer)) { throw new InvalidDataException("Invalid SMB header signature"); } return(new SMB1Message(buffer)); }
public SMB1Message(byte[] buffer) { Header = new SMB1Header(buffer); SMB1Command command = SMB1Command.ReadCommand(buffer, SMB1Header.Length, Header.Command, Header); Commands.Add(command); while (command is SMBAndXCommand smbAndXCommand) { if (smbAndXCommand.AndXCommand == CommandName.SMB_COM_NO_ANDX_COMMAND) { break; } command = SMB1Command.ReadCommand(buffer, smbAndXCommand.AndXOffset, smbAndXCommand.AndXCommand, Header); Commands.Add(command); } }
public static SMB1Command ReadCommand(byte[] buffer, int offset, CommandName commandName, SMB1Header header) { if ((header.Flags & HeaderFlags.Reply) > 0) { return(ReadCommandResponse(buffer, offset, commandName, header.UnicodeFlag)); } return(ReadCommandRequest(buffer, offset, commandName, header.UnicodeFlag)); }
public SMB1Message() { Header = new SMB1Header(); }