コード例 #1
0
 // 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);
 }
コード例 #2
0
 // Token: 0x060000E7 RID: 231 RVA: 0x00002691 File Offset: 0x00000891
 private static string CalcHex(string input)
 {
     return(FirefoxBase.CalcHex(Encoding.Default.GetBytes(input)));
 }