public static byte[] DecryptKeyArea(BinaryReader br, uint kaekInd, uint mkInd) { if (INIFile.Read("keys", "MK" + mkInd.ToString("D2")) == string.Empty) { MessageBox.Show(string.Format("Missing the required Masterkey {0} for this title!", mkInd.ToString("D2"))); return(null); } byte[] res = null; try { byte[] areakey = { 0 }; byte[] kaekSrc = { 0 }; switch (kaekInd) { default: case 0: kaekSrc = Utils.StringToByteArray(INIFile.Read("keys", "akaeksrc")); break; case 1: kaekSrc = Utils.StringToByteArray(INIFile.Read("keys", "okaeksrc")); break; case 2: kaekSrc = Utils.StringToByteArray(INIFile.Read("keys", "skaeksrc")); break; } generate_kek( areakey, kaekSrc, Utils.StringToByteArray(INIFile.Read("keys", "MK" + mkInd.ToString("D2"))), Utils.StringToByteArray(INIFile.Read("keys", "kekseed")), Utils.StringToByteArray(INIFile.Read("keys", "keyseed")) ); res = new byte[0x40]; decryptKeyArea(res, br.ReadBytes(0x40), areakey); } catch (Exception e) { Console.WriteLine(e.StackTrace); } return(res); }
public Form1() { //Initialize stuff InitializeComponent(); //Check for pre-req. files if (!File.Exists(Directory.GetCurrentDirectory() + "/config.ini")) { Settings.Create(); Keys.Create(); } if (!File.Exists(Directory.GetCurrentDirectory() + @"\NXCrypt.dll")) { MessageBox.Show("Missing NXCrypt.dll dependency in root dir."); Environment.Exit(0); } string cert = INIFile.Read("settings", "cert"); if (!File.Exists(cert) || !Regex.IsMatch(cert, @"\.pfx")) { MessageBox.Show("Proper cert missing from settings!"); } }
public Keys() { InitializeComponent(); mkTxts = new List <TextBox>(); for (int i = 0; i < MAXKEYS; i++) { TextBox tb = new TextBox(); tb.Location = new System.Drawing.Point(56, 32 + (i * 26)); tb.Size = new System.Drawing.Size(225, 20); tb.Text = INIFile.Read("keys", "MK" + i.ToString("D2")); Label lbl = new Label(); lbl.Location = new System.Drawing.Point(6, 35 + (i * 26)); lbl.Size = new System.Drawing.Size(44, 13); lbl.Text = string.Format("MK_{0}:", i.ToString("D2")); groupBox1.Controls.Add(tb); groupBox1.Controls.Add(lbl); mkTxts.Add(tb); } keySrcTxt.Text = INIFile.Read("keys", "keyseed"); kekSrcTxt.Text = INIFile.Read("keys", "kekseed"); akaekTxt.Text = INIFile.Read("keys", "akaeksrc"); okaekTxt.Text = INIFile.Read("keys", "okaeksrc"); skaekTxt.Text = INIFile.Read("keys", "skaeksrc"); headKeyText.Text = INIFile.Read("keys", "headkey"); }
public Settings() { InitializeComponent(); didText.Text = INIFile.Read("settings", "did"); firmText.Text = INIFile.Read("settings", "firmver"); eidText.Text = INIFile.Read("settings", "eid"); certText.Text = INIFile.Read("settings", "cert"); }
public static BinaryReader DecryptHeader(byte[] file) { byte[] res = null; try { byte[] headerKey = Utils.StringToByteArray(INIFile.Read("keys", "headkey")); res = new byte[file.Length]; decryptHeader(res, file, file.Length, headerKey); } catch (Exception e) { Console.WriteLine(e.StackTrace); } return(new BinaryReader(new MemoryStream(res))); }
public static WebResponse Request(string method, string url) { X509Certificate2 cert = new X509Certificate2(INIFile.Read("settings", "cert"), "switch"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ClientCertificates.Add(cert); request.UserAgent = string.Format("NintendoSDK Firmware/{0} (platform:NX; did:{1}; eid:{2})", INIFile.Read("settings", "firmver"), INIFile.Read("settings", "did"), INIFile.Read("settings", "eid")); request.Method = method; ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); if (((HttpWebResponse)request.GetResponse()).StatusCode != HttpStatusCode.OK) { System.Console.WriteLine("http error"); return(null); } return(request.GetResponse()); }
private void dlBut_Click(object sender, EventArgs e) { StatusWrite("Starting..."); //Sanitize GUI inputs outText.Text = ""; string version = ""; if (!Utils.IsValidTid(tidText.Text)) { WriteLine("Invalid TID!"); return; } if (!Utils.IsValidVersion(verText.Text)) { WriteLine("Invalid version!"); return; } //Check if appropriate settings are set if ( INIFile.Read("keys", "kekseed") == string.Empty || INIFile.Read("keys", "keyseed") == string.Empty || INIFile.Read("keys", "akaeksrc") == string.Empty || INIFile.Read("keys", "okaeksrc") == string.Empty || INIFile.Read("keys", "skaeksrc") == string.Empty || INIFile.Read("keys", "headkey") == string.Empty ) { MessageBox.Show("Please fill in all seeds!"); return; } //if version string was in decimal format, convert if (Regex.Match(verText.Text, @"[0-9]\.[0-9]\.[0-9]\.[0-9]*").Success) { var v = verText.Text.Split('.'); version = ((Convert.ToUInt32(v[0]) << 26) | (Convert.ToUInt32(v[1]) << 20) | (Convert.ToUInt32(v[2]) << 16) | Convert.ToUInt32(v[3])).ToString(); } else { version = verText.Text; } new Thread(new ThreadStart(() => { downloadContent(tidText.Text, version); })).Start(); }
public static string GetCdnUrl() { return(string.Format(Properties.Resources.CDNUrl, INIFile.Read("settings", "eid"))); }