Exemplo n.º 1
0
        private Smb2Packet DecodeEncryptedSmb2Packet(
            byte[] messageBytes,
            Smb2Role role,
            ulong realSessionId,
            uint realTreeId,
            out int consumedLength,
            out int expectedLength
            )
        {
            Transform_Header transformHeader;
            var decryptedBytes = Smb2Crypto.Decrypt(messageBytes, cryptoInfoTable, decodeRole, out transformHeader);

            if (transformHeader.OriginalMessageSize != decryptedBytes.Length)
            {
                throw new InvalidOperationException("[MS-SMB2] section 3.3.5.2.1.1 OriginalMessageSize in TRANSFORM_HEADER does not match received message size.");
            }

            byte[] protocolVersion = new byte[sizeof(uint)];
            Array.Copy(decryptedBytes, 0, protocolVersion, 0, protocolVersion.Length);

            SmbVersion version = DecodeVersion(protocolVersion);

            if (version == SmbVersion.Version2Compressed)
            {
                return(DecodeCompressedSmb2Packet(
                           decryptedBytes,
                           role,
                           realSessionId,
                           realTreeId,
                           out consumedLength,
                           out expectedLength,
                           transformHeader
                           ));
            }
            else if (version == SmbVersion.Version2)
            {
                return(DecodeSmb2Packet(
                           decryptedBytes,
                           role,
                           realSessionId,
                           realTreeId,
                           out consumedLength,
                           out expectedLength,
                           transformHeader
                           ));
            }
            else
            {
                throw new InvalidOperationException("Unkown ProtocolId!");
            }
        }
        private Smb2Packet DecodeEncryptedSmb2Packet(
            byte[] messageBytes,
            Smb2Role role,
            ulong realSessionId,
            uint realTreeId,
            out int consumedLength,
            out int expectedLength
            )
        {
            Transform_Header transformHeader;
            var decryptedBytes = Smb2Crypto.Decrypt(messageBytes, cryptoInfoTable, decodeRole, out transformHeader);

            byte[] protocolVersion = new byte[sizeof(uint)];
            Array.Copy(decryptedBytes, 0, protocolVersion, 0, protocolVersion.Length);

            SmbVersion version = DecodeVersion(protocolVersion);

            if (version == SmbVersion.Version2Compressed)
            {
                return(DecodeCompressedSmb2Packet(
                           decryptedBytes,
                           role,
                           realSessionId,
                           realTreeId,
                           out consumedLength,
                           out expectedLength,
                           transformHeader
                           ));
            }
            else if (version == SmbVersion.Version2)
            {
                return(DecodeSmb2Packet(
                           decryptedBytes,
                           role,
                           realSessionId,
                           realTreeId,
                           out consumedLength,
                           out expectedLength,
                           transformHeader
                           ));
            }
            else
            {
                throw new InvalidOperationException("Unkown ProtocolId!");
            }
        }
Exemplo n.º 3
0
 private Smb2Packet DecodeEncryptedSmb2Packet(
     byte[] messageBytes,
     Smb2Role role,
     bool ignoreCompoundFlag,
     ulong realSessionId,
     uint realTreeId,
     out int consumedLength,
     out int expectedLength
     )
 {
     return(DecodeSmb2Packet(
                Smb2Crypto.Decrypt(messageBytes, cryptoInfoTable, decodeRole),
                role,
                ignoreCompoundFlag,
                realSessionId,
                realTreeId,
                out consumedLength,
                out expectedLength));
 }
        private Smb2Packet DecodeEncryptedSmb2Packet(
            byte[] messageBytes,
            Smb2Role role,
            ulong realSessionId,
            uint realTreeId,
            out int consumedLength,
            out int expectedLength
            )
        {
            Transform_Header transformHeader;
            var decryptedBytes = Smb2Crypto.Decrypt(messageBytes, cryptoInfoTable, decodeRole, out transformHeader);

            return(DecodeSmb2Packet(
                       decryptedBytes,
                       role,
                       realSessionId,
                       realTreeId,
                       out consumedLength,
                       out expectedLength,
                       transformHeader
                       ));
        }