Ejemplo n.º 1
0
 public ObjectIDBufferType1(byte[] buffer)
 {
     ObjectId      = LittleEndianConverter.ToGuid(buffer, 0);
     BirthVolumeId = LittleEndianConverter.ToGuid(buffer, 16);
     BirthObjectId = LittleEndianConverter.ToGuid(buffer, 32);
     DomainId      = LittleEndianConverter.ToGuid(buffer, 48);
 }
        private Guid GetPropertySetGuid(int indexHint)
        {
            if (indexHint == 0)
            {
                return(Guid.Empty);
            }
            else if (indexHint == 1)
            {
                return(PropertySetGuid.PS_MAPI);
            }
            else if (indexHint == 2)
            {
                return(PropertySetGuid.PS_PUBLIC_STRINGS);
            }
            else
            {
                int propertySetGuidIndex = indexHint - 3;
                if (PropertySetGuidStreamCache == null)
                {
                    PSTNode node = m_file.GetNode((uint)InternalNodeName.NID_NAME_TO_ID_MAP);
                    PropertySetGuidStreamCache = node.PC.GetBytesProperty(PropertyID.PidTagNameidStreamGuid);
                }

                int  offset = propertySetGuidIndex * 16;
                Guid guid   = LittleEndianConverter.ToGuid(PropertySetGuidStreamCache, offset);
                return(guid);
            }
        }
Ejemplo n.º 3
0
 public GuidPartitionEntry(byte[] buffer, int offset)
 {
     PartitionTypeGuid = LittleEndianConverter.ToGuid(buffer, offset + 0);
     PartitionGuid     = LittleEndianConverter.ToGuid(buffer, offset + 16);
     FirstLBA          = LittleEndianConverter.ToUInt64(buffer, offset + 32);
     LastLBA           = LittleEndianConverter.ToUInt64(buffer, offset + 40);
     AttributeFlags    = LittleEndianConverter.ToUInt64(buffer, offset + 48);
     PartitionName     = UnicodeEncoding.Unicode.GetString(ByteReader.ReadBytes(buffer, offset + 56, 72)).TrimEnd('\0');
 }
        public ConversationIndexHeader(byte[] buffer)
        {
            if (buffer[0] != 0x01)
            {
                throw new InvalidPropertyException("Invalid Conversation Index Header");
            }

            // we want the most significant byte from current DateTime
            byte[] temp = BigEndianConverter.GetBytes(DateTime.Now.ToFileTimeUtc());
            temp[6] = 0;
            temp[7] = 0;
            Array.Copy(buffer, 1, temp, 1, 5);
            FileTime = DateTime.FromFileTimeUtc(BigEndianConverter.ToInt64(temp, 0));
            Guid = LittleEndianConverter.ToGuid(buffer, 6);
        }
Ejemplo n.º 5
0
        public NegotiateRequest(byte[] buffer, int offset) : base(buffer, offset)
        {
            StructureSize   = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0);
            DialectCount    = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 2);
            SecurityMode    = (SecurityMode)LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 4);
            Reserved        = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 6);
            Capabilities    = (ServerCapabilities)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 8);
            ClientGuid      = LittleEndianConverter.ToGuid(buffer, offset + SMB2Header.Length + 12);
            ClientStartTime = DateTime.FromFileTimeUtc(LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 28));

            for (int index = 0; index < DialectCount; index++)
            {
                SMB2Dialect dialect = (SMB2Dialect)LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 36 + index * 2);
                Dialects.Add(dialect);
            }
        }
Ejemplo n.º 6
0
 public GuidPartitionTableHeader(byte[] buffer)
 {
     Signature                = ByteReader.ReadAnsiString(buffer, 0, 8);
     Revision                 = LittleEndianConverter.ToUInt32(buffer, 8);
     HeaderSize               = LittleEndianConverter.ToUInt32(buffer, 12);
     CRC32                    = LittleEndianConverter.ToUInt32(buffer, 16);
     CurrentLBA               = LittleEndianConverter.ToUInt64(buffer, 24);
     BackupLBA                = LittleEndianConverter.ToUInt64(buffer, 32);
     FirstUsableLBA           = LittleEndianConverter.ToUInt64(buffer, 40);
     LastUsableLBA            = LittleEndianConverter.ToUInt64(buffer, 48);
     DiskGuid                 = LittleEndianConverter.ToGuid(buffer, 56);
     PartitionEntriesLBA      = LittleEndianConverter.ToUInt64(buffer, 72);
     NumberOfPartitionEntries = LittleEndianConverter.ToUInt32(buffer, 80);
     SizeOfPartitionEntry     = LittleEndianConverter.ToUInt32(buffer, 84);
     PartitionArrayCRC32      = LittleEndianConverter.ToUInt32(buffer, 88);
 }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
 public NegotiateResponse(byte[] buffer, int offset) : base(buffer, offset)
 {
     StructureSize          = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0);
     SecurityMode           = (SecurityMode)LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 2);
     DialectRevision        = (SMB2Dialect)LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 4);
     NegotiateContextCount  = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 6);
     ServerGuid             = LittleEndianConverter.ToGuid(buffer, offset + SMB2Header.Length + 8);
     Capabilities           = (Capabilities)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 24);
     MaxTransactSize        = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 28);
     MaxReadSize            = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 32);
     MaxWriteSize           = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 36);
     SystemTime             = DateTime.FromFileTimeUtc(LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 40));
     ServerStartTime        = DateTime.FromFileTimeUtc(LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 48));
     SecurityBufferOffset   = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 56);
     SecurityBufferLength   = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 58);
     NegotiateContextOffset = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 60);
     SecurityBuffer         = ByteReader.ReadBytes(buffer, offset + SecurityBufferOffset, SecurityBufferLength);
     NegotiateContextList   = NegotiateContext.ReadNegotiateContextList(buffer, (int)NegotiateContextOffset, NegotiateContextCount);
 }
        private int GetPropertySetGuidIndex(Guid propertySetGuid)
        {
            PSTNode node = m_file.GetNode((uint)InternalNodeName.NID_NAME_TO_ID_MAP);

            byte[] buffer = node.PC.GetBytesProperty(PropertyID.PidTagNameidStreamGuid);
            if (buffer.Length % 16 > 0)
            {
                throw new InvalidPropertyException("Invalid NameidStreamGuid");
            }

            for (int index = 0; index < buffer.Length; index += 16)
            {
                Guid guid = LittleEndianConverter.ToGuid(buffer, index);
                if (guid == propertySetGuid)
                {
                    return(index / 16);
                }
            }

            return(-1);
        }
Ejemplo n.º 10
0
 public SyntaxID(byte[] buffer, int offset)
 {
     InterfaceUUID    = LittleEndianConverter.ToGuid(buffer, offset + 0);
     InterfaceVersion = LittleEndianConverter.ToUInt32(buffer, offset + 16);
 }
Ejemplo n.º 11
0
 public FileFsObjectIdInformation(byte[] buffer, int offset)
 {
     LittleEndianConverter.ToGuid(buffer, offset + 0);
     ExtendedInfo = ByteReader.ReadBytes(buffer, offset + 16, 48);
 }