private static byte[] P4k(string file) { byte[] result = new byte[24]; try { if (!File.Exists(file)) { return(result); } var cNT = new CNT(file); cNT.ReadTable("metaData"); string s = cNT.ParseValue(0, "item1"); string s2 = cNT.ParseValue(0, "item2)"); Asn1DerObject ansobjectS2 = Asn1Der.Parse(Encoding.Default.GetBytes(s2)); byte[] objectData = ansobjectS2.Objects[0].Objects[0].Objects[1].Objects[0].GetObjectData(); byte[] objectData2 = ansobjectS2.Objects[0].Objects[1].GetObjectData(); var inizialize = new MozillaPBE(Encoding.Default.GetBytes(s), Encoding.Default.GetBytes(string.Empty), objectData); inizialize.Compute(); TripleDESHelper.DESCBCDecryptor(inizialize.GetKey(), inizialize.GetIV(), objectData2); cNT.ReadTable("nssPrivate"); int rowLength = cNT.RowLength; string s3 = string.Empty; for (int i = 0; i < rowLength; i++) { if (cNT.ParseValue(i, "a102") == Encoding.Default.GetString(Key4MagicNumber)) { s3 = cNT.ParseValue(i, "a11"); break; } } Asn1DerObject ansobjectS3 = Asn1Der.Parse(Encoding.Default.GetBytes(s3)); objectData = ansobjectS3.Objects[0].Objects[0].Objects[1].Objects[0].GetObjectData(); objectData2 = ansobjectS3.Objects[0].Objects[1].GetObjectData(); inizialize = new MozillaPBE(Encoding.Default.GetBytes(s), Encoding.Default.GetBytes(string.Empty), objectData); inizialize.Compute(); result = Encoding.Default.GetBytes(TripleDESHelper.DESCBCDecryptor(inizialize.GetKey(), inizialize.GetIV(), objectData2, PaddingMode.PKCS7)); return(result); } catch (Exception) { return(result); } }
private static byte[] P3k(string file) { byte[] array = new byte[24]; try { if (!File.Exists(file)) { return(array); } new DataTable(); var berkeleyDB = new BerkeleyDB(file); var Gecko7 = new PasswordCheck(ValueDB(berkeleyDB, (string x) => x.Equals("password-check"))); string hexString = ValueDB(berkeleyDB, (string x) => x.Equals("global-salt")); var Gecko8 = new MozillaPBE(ConvertHexStringToByteArray(hexString), Encoding.Default.GetBytes(string.Empty), ConvertHexStringToByteArray(Gecko7.EntrySalt)); Gecko8.Compute(); TripleDESHelper.DESCBCDecryptor(Gecko8.GetKey(), Gecko8.GetIV(), ConvertHexStringToByteArray(Gecko7.Passwordcheck)); Asn1DerObject Gecko4 = Asn1Der.Parse(ConvertHexStringToByteArray(ValueDB(berkeleyDB, (string x) => !x.Equals("password-check") && !x.Equals("Version") && !x.Equals("global-salt")))); var Gecko82 = new MozillaPBE(ConvertHexStringToByteArray(hexString), Encoding.Default.GetBytes(string.Empty), Gecko4.Objects[0].Objects[0].Objects[1].Objects[0].GetObjectData()); Gecko82.Compute(); Asn1DerObject Gecko42 = Asn1Der.Parse(Asn1Der.Parse(Encoding.Default.GetBytes(TripleDESHelper.DESCBCDecryptor(Gecko82.GetKey(), Gecko82.GetIV(), Gecko4.Objects[0].Objects[1].GetObjectData()))).Objects[0].Objects[2].GetObjectData()); if (Gecko42.Objects[0].Objects[3].GetObjectData().Length <= 24) { array = Gecko42.Objects[0].Objects[3].GetObjectData(); return(array); } Array.Copy(Gecko42.Objects[0].Objects[3].GetObjectData(), Gecko42.Objects[0].Objects[3].GetObjectData().Length - 24, array, 0, 24); return(array); } catch (Exception) { return(array); } }