// Token: 0x0600009E RID: 158 RVA: 0x00006C8C File Offset: 0x00004E8C private byte[] ExtractPrivateKey3(string file) { byte[] array = new byte[24]; try { if (!File.Exists(file)) { return(array); } new DataTable(); GeckoDatabase geckoDatabase = new GeckoDatabase(file); GeckoDatabase arg_45_1 = geckoDatabase; Func <string, bool> arg_45_2; if ((arg_45_2 = GeckoManager.< > c.< > 9__5_0) == null) { arg_45_2 = (GeckoManager.< > c.< > 9__5_0 = new Func <string, bool>(GeckoManager.< > c.< > 9. < ExtractPrivateKey3 > b__5_0)); } DataParser dataParser = new DataParser(this.FindValueByKey(arg_45_1, arg_45_2)); GeckoDatabase arg_71_1 = geckoDatabase; Func <string, bool> arg_71_2; if ((arg_71_2 = GeckoManager.< > c.< > 9__5_1) == null) { arg_71_2 = (GeckoManager.< > c.< > 9__5_1 = new Func <string, bool>(GeckoManager.< > c.< > 9. < ExtractPrivateKey3 > b__5_1)); } string expr_76 = this.FindValueByKey(arg_71_1, arg_71_2); GeckoPasswordBasedEncryption geckoPasswordBasedEncryption = new GeckoPasswordBasedEncryption(RecoveryHelper.ConvertHexStringToByteArray(expr_76), Encoding.Default.GetBytes(string.Empty), RecoveryHelper.ConvertHexStringToByteArray(dataParser.EntrySalt)); geckoPasswordBasedEncryption.Calculate(); CrytoServiceProvider.Decode(geckoPasswordBasedEncryption.DataKey, geckoPasswordBasedEncryption.DataIV, RecoveryHelper.ConvertHexStringToByteArray(dataParser.Passwordcheck), PaddingMode.None); GeckoDatabase arg_E5_1 = geckoDatabase; Func <string, bool> arg_E5_2; if ((arg_E5_2 = GeckoManager.< > c.< > 9__5_2) == null) { arg_E5_2 = (GeckoManager.< > c.< > 9__5_2 = new Func <string, bool>(GeckoManager.< > c.< > 9. < ExtractPrivateKey3 > b__5_2)); } Asn1Object asn1Object = Asn1Factory.Create(RecoveryHelper.ConvertHexStringToByteArray(this.FindValueByKey(arg_E5_1, arg_E5_2))); GeckoPasswordBasedEncryption geckoPasswordBasedEncryption2 = new GeckoPasswordBasedEncryption(RecoveryHelper.ConvertHexStringToByteArray(expr_76), Encoding.Default.GetBytes(string.Empty), asn1Object.Objects[0].Objects[0].Objects[1].Objects[0].ObjectData); geckoPasswordBasedEncryption2.Calculate(); Asn1Object asn1Object2 = Asn1Factory.Create(Asn1Factory.Create(Encoding.Default.GetBytes(CrytoServiceProvider.Decode(geckoPasswordBasedEncryption2.DataKey, geckoPasswordBasedEncryption2.DataIV, asn1Object.Objects[0].Objects[1].ObjectData, PaddingMode.None))).Objects[0].Objects[2].ObjectData); if (asn1Object2.Objects[0].Objects[3].ObjectData.Length > 24) { Array.Copy(asn1Object2.Objects[0].Objects[3].ObjectData, asn1Object2.Objects[0].Objects[3].ObjectData.Length - 24, array, 0, 24); } else { array = asn1Object2.Objects[0].Objects[3].ObjectData; } } catch (Exception) { } return(array); }
// Token: 0x0600009F RID: 159 RVA: 0x00006EF8 File Offset: 0x000050F8 private string FindValueByKey(GeckoDatabase berkeleyDB, Func <string, bool> predicate) { string text = string.Empty; try { foreach (KeyValuePair <string, string> current in berkeleyDB.Keys) { if (predicate(current.Key)) { text = current.Value; } } } catch (Exception) { } return(text.Replace("-", string.Empty)); }