// Token: 0x060000E8 RID: 232 RVA: 0x00007314 File Offset: 0x00005514 private static byte[] ExtractPrivateKey4(string file) { byte[] array = new byte[24]; try { Console.WriteLine("Key source file: " + file); if (!File.Exists(file)) { Console.WriteLine("Source file UNKNOWN"); return(array); } SQLiteManager sqliteManager = new SQLiteManager(file); sqliteManager.ReadTable("metaData"); string value = sqliteManager.GetValue(0, "item1"); string value2 = sqliteManager.GetValue(0, "item2)"); Asn1DerObject asn1DerObject = new Asn1Der().Parse(Encoding.Default.GetBytes(value2)); byte[] data = asn1DerObject.objects[0].objects[0].objects[1].objects[0].Data; byte[] data2 = asn1DerObject.objects[0].objects[1].Data; MozillaPBE mozillaPBE = new MozillaPBE(Encoding.Default.GetBytes(value), Encoding.Default.GetBytes(string.Empty), data); mozillaPBE.Compute(); string input = TripleDESHelper.DESCBCDecryptor(mozillaPBE.Key, mozillaPBE.IV, data2, PaddingMode.None); Console.WriteLine(new string('=', 20)); Console.WriteLine("Global salt found for encrypt: [" + FirefoxBase.CalcHex(value) + "]"); Console.WriteLine("Entry salt found for encrypt: [" + FirefoxBase.CalcHex(data) + "]"); Console.WriteLine("СheckPwd key for encrypt : [" + FirefoxBase.CalcHex(mozillaPBE.Key) + "]"); Console.WriteLine("СheckPwd IV for encrypt: [" + FirefoxBase.CalcHex(mozillaPBE.IV) + "]"); Console.WriteLine("Decrypted chiper: [" + FirefoxBase.CalcHex(input) + "]"); Console.WriteLine(new string('=', 20)); sqliteManager.ReadTable("nssPrivate"); int rowCount = sqliteManager.GetRowCount(); string s = string.Empty; for (int i = 0; i < rowCount; i++) { if (sqliteManager.GetValue(i, "a102") == Encoding.Default.GetString(FirefoxBase.MagicNumber1)) { s = sqliteManager.GetValue(i, "a11"); break; } } Asn1DerObject asn1DerObject2 = new Asn1Der().Parse(Encoding.Default.GetBytes(s)); data = asn1DerObject2.objects[0].objects[0].objects[1].objects[0].Data; data2 = asn1DerObject2.objects[0].objects[1].Data; mozillaPBE = new MozillaPBE(Encoding.Default.GetBytes(value), Encoding.Default.GetBytes(string.Empty), data); mozillaPBE.Compute(); Console.WriteLine(new string('=', 20)); Console.WriteLine("ChiperT found after encrypt: [" + FirefoxBase.CalcHex(data2) + "]"); Console.WriteLine("Global salt found after encrypt: [" + FirefoxBase.CalcHex(value) + "]"); Console.WriteLine("Entry salt found after encrypt: [" + FirefoxBase.CalcHex(data) + "]"); Console.WriteLine("СheckPwd key after encrypt : [" + FirefoxBase.CalcHex(mozillaPBE.Key) + "]"); Console.WriteLine("СheckPwd IV after encrypt: [" + FirefoxBase.CalcHex(mozillaPBE.IV) + "]"); array = Encoding.Default.GetBytes(TripleDESHelper.DESCBCDecryptor(mozillaPBE.Key, mozillaPBE.IV, data2, PaddingMode.PKCS7)); Console.WriteLine("Decrypted private key: [" + FirefoxBase.CalcHex(array) + "]"); Console.WriteLine(new string('=', 20)); } catch (Exception value3) { Console.WriteLine(value3); } return(array); }
// Token: 0x060000E7 RID: 231 RVA: 0x00002691 File Offset: 0x00000891 private static string CalcHex(string input) { return(FirefoxBase.CalcHex(Encoding.Default.GetBytes(input))); }