public Nullable <short> GetInt16Property(int rowIndex, int columnIndex)
 {
     byte[] cellValue = GetPropertyValue(rowIndex, columnIndex);
     if (cellValue == null)
     {
         return(null);
     }
     else
     {
         return(LittleEndianConverter.ToInt16(cellValue, 0));
     }
 }
Beispiel #2
0
        public NegotiateResponseExtended(byte[] buffer, int offset) : base(buffer, offset, false)
        {
            DialectIndex    = LittleEndianConverter.ToUInt16(this.SMBParameters, 0);
            SecurityMode    = (SecurityMode)ByteReader.ReadByte(this.SMBParameters, 2);
            MaxMpxCount     = LittleEndianConverter.ToUInt16(this.SMBParameters, 3);
            MaxNumberVcs    = LittleEndianConverter.ToUInt16(this.SMBParameters, 5);
            MaxBufferSize   = LittleEndianConverter.ToUInt32(this.SMBParameters, 7);
            MaxRawSize      = LittleEndianConverter.ToUInt32(this.SMBParameters, 11);
            SessionKey      = LittleEndianConverter.ToUInt32(this.SMBParameters, 15);
            Capabilities    = (Capabilities)LittleEndianConverter.ToUInt32(this.SMBParameters, 19);
            SystemTime      = FileTimeHelper.ReadFileTime(this.SMBParameters, 23);
            ServerTimeZone  = LittleEndianConverter.ToInt16(this.SMBParameters, 31);
            ChallengeLength = ByteReader.ReadByte(this.SMBParameters, 33);

            ServerGuid   = LittleEndianConverter.ToGuid(this.SMBData, 0);
            SecurityBlob = ByteReader.ReadBytes(this.SMBData, 16, this.SMBData.Length - 16);
        }
Beispiel #3
0
        public LfsRestartPage(byte[] buffer, int offset)
        {
            MultiSectorHeader multiSectorHeader = new MultiSectorHeader(buffer, offset + 0x00);

            if (multiSectorHeader.Signature != ValidSignature && multiSectorHeader.Signature != ModifiedSignature)
            {
                throw new InvalidDataException("Invalid RSTR record signature");
            }
            ChkDskLsn        = LittleEndianConverter.ToUInt64(buffer, offset + 0x08);
            m_systemPageSize = LittleEndianConverter.ToUInt32(buffer, offset + 0x10);
            LogPageSize      = LittleEndianConverter.ToUInt32(buffer, offset + 0x14);
            ushort restartOffset = LittleEndianConverter.ToUInt16(buffer, offset + 0x18);

            MinorVersion         = LittleEndianConverter.ToInt16(buffer, offset + 0x1A);
            MajorVersion         = LittleEndianConverter.ToInt16(buffer, offset + 0x1C);
            UpdateSequenceNumber = LittleEndianConverter.ToUInt16(buffer, offset + multiSectorHeader.UpdateSequenceArrayOffset);
            RestartArea          = new LfsRestartArea(buffer, offset + restartOffset);
        }
Beispiel #4
0
        public LogRestartPage(byte[] buffer, int offset)
        {
            MultiSectorHeader multiSectorHeader = new MultiSectorHeader(buffer, offset + 0x00);

            if (multiSectorHeader.Signature != ValidSignature)
            {
                throw new InvalidDataException("Invalid RSTR record signature");
            }
            ChkDskLsn        = LittleEndianConverter.ToUInt64(buffer, offset + 0x08);
            m_systemPageSize = LittleEndianConverter.ToUInt32(buffer, offset + 0x10);
            LogPageSize      = LittleEndianConverter.ToUInt32(buffer, offset + 0x14);
            ushort restartOffset = LittleEndianConverter.ToUInt16(buffer, offset + 0x18);

            MinorVersion = LittleEndianConverter.ToInt16(buffer, offset + 0x1A);
            MajorVersion = LittleEndianConverter.ToInt16(buffer, offset + 0x1C);
            int           position = offset + multiSectorHeader.UpdateSequenceArrayOffset;
            List <byte[]> updateSequenceReplacementData = MultiSectorHelper.ReadUpdateSequenceArray(buffer, position, multiSectorHeader.UpdateSequenceArraySize, out UpdateSequenceNumber);

            MultiSectorHelper.DecodeSegmentBuffer(buffer, offset, UpdateSequenceNumber, updateSequenceReplacementData);
            LogRestartArea = new LogRestartArea(buffer, offset + restartOffset);
        }
Beispiel #5
0
        public NegotiateResponse(byte[] buffer, int offset) : base(buffer, offset)
        {
            DialectIndex    = LittleEndianConverter.ToUInt16(SMBParameters, 0);
            SecurityMode    = (SecurityMode)ByteReader.ReadByte(SMBParameters, 2);
            MaxMpxCount     = LittleEndianConverter.ToUInt16(SMBParameters, 3);
            MaxNumberVcs    = LittleEndianConverter.ToUInt16(SMBParameters, 5);
            MaxBufferSize   = LittleEndianConverter.ToUInt32(SMBParameters, 7);
            MaxRawSize      = LittleEndianConverter.ToUInt32(SMBParameters, 11);
            SessionKey      = LittleEndianConverter.ToUInt32(SMBParameters, 15);
            Capabilities    = (Capabilities)LittleEndianConverter.ToUInt32(SMBParameters, 19);
            SystemTime      = FileTimeHelper.ReadFileTime(SMBParameters, 23);
            ServerTimeZone  = LittleEndianConverter.ToInt16(SMBParameters, 31);
            ChallengeLength = ByteReader.ReadByte(SMBParameters, 33);

            int dataOffset = 0;

            Challenge = ByteReader.ReadBytes(SMBData, ref dataOffset, ChallengeLength);
            // [MS-CIFS] <90> Padding is not added before DomainName
            // DomainName and ServerName are always in Unicode
            DomainName = SMB1Helper.ReadSMBString(SMBData, ref dataOffset, true);
            ServerName = SMB1Helper.ReadSMBString(SMBData, ref dataOffset, true);
        }
Beispiel #6
0
        public static AppointmentRecurrencePatternStructure GetRecurrencePatternStructure(byte[] buffer)
        {
            RecurrenceFrequency frequency = (RecurrenceFrequency)LittleEndianConverter.ToInt16(buffer, 4);

            switch (frequency)
            {
            case RecurrenceFrequency.Daily:
                return(new DailyRecurrencePatternStructure(buffer));

            case RecurrenceFrequency.Weekly:
                return(new WeeklyRecurrencePatternStructure(buffer));

            case RecurrenceFrequency.Monthly:
                return(new MonthlyRecurrencePatternStructure(buffer));

            case RecurrenceFrequency.Yearly:
                return(new YearlyRecurrencePatternStructure(buffer));

            default:
                throw new InvalidRecurrencePatternException("Invalid recurrence pattern frequency");
            }
        }
Beispiel #7
0
 protected override short ConvertGroupToValue()
 => LittleEndianConverter.ToInt16(ToBytes());