Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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!");
            }
        }
Esempio n. 3
0
        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");
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
 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)));
 }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
 public static string GetCdnUrl()
 {
     return(string.Format(Properties.Resources.CDNUrl, INIFile.Read("settings", "eid")));
 }