Example #1
0
        private void Ccs_FormClosing(object sender, FormClosingEventArgs e)
        {
            CHOVYCmaSelector ccs    = (CHOVYCmaSelector)sender;
            string           CmaDir = ccs.GetCmaDir();
            string           CmaAid = ccs.GetCmaAid();
            string           Backup = ccs.GetSelectedBackup();

            ccs.Hide();
            this.Show();
            this.Focus();

            if (Backup == "")
            {
                return;
            }

            string output = Path.Combine(Application.StartupPath, "_tmp");

            Directory.CreateDirectory(output);

            string OutputPbp     = Path.Combine(output, "ux0_pspemu_temp_game_PSP_GAME_" + Backup, "EBOOT.PBP");
            string GameFolder    = Path.Combine(output, "ux0_pspemu_temp_game_PSP_GAME_" + Backup);
            string LicenseFolder = Path.Combine(output, "ux0_pspemu_temp_game_PSP_LICENSE");

            Status.Text = "Declaring Independance from the GAME.PSVIMG";
            string BackupPath = Path.Combine(CmaDir, "PGAME", CmaAid, Backup, "game", "game.psvimg");

            if (!File.Exists(BackupPath))
            {
                return;
            }
            TotalProgress.Style = ProgressBarStyle.Marquee;
            Process psvimg = psvimgtools.PSVIMG_EXTRACT(CmaAid, BackupPath, output);

            while (!psvimg.HasExited)
            {
                Application.DoEvents();
            }
            if (!Directory.Exists(GameFolder) || psvimg.ExitCode != 0)
            {
                MessageBox.Show("PSVIMG-EXTRACT.EXE FAILED!\nArguments:\n" + psvimg.StartInfo.Arguments + "\nStdOut:\n" + psvimg.StandardOutput.ReadToEnd() + "\nStdErr:\n" + psvimg.StandardError.ReadToEnd());
                return;
            }

            Status.Text = "Declaring Independance from the LICENSE.PSVIMG";
            BackupPath  = Path.Combine(CmaDir, "PGAME", CmaAid, Backup, "license", "license.psvimg");
            psvimg      = psvimgtools.PSVIMG_EXTRACT(CmaAid, BackupPath, output);
            while (!psvimg.HasExited)
            {
                Application.DoEvents();
            }
            if (!Directory.Exists(LicenseFolder) || psvimg.ExitCode != 0)
            {
                MessageBox.Show("PSVIMG-EXTRACT.EXE FAILED!\nArguments:\n" + psvimg.StartInfo.Arguments + "\nStdOut:\n" + psvimg.StandardOutput.ReadToEnd() + "\nStdErr:\n" + psvimg.StandardError.ReadToEnd());
                return;
            }

            /* -- This was some debug stuff
             * OpenFileDialog Openpbp = new OpenFileDialog();
             * Openpbp.ShowDialog();
             * string OutputPbp = Openpbp.FileName;
             *
             * OpenFileDialog OpenRif = new OpenFileDialog();
             * OpenRif.ShowDialog();
             * string Rif = OpenRif.FileName;
             */

            byte[] VersionKey = pbp.GetVersionKey(OutputPbp);
            string VerKey     = BitConverter.ToString(VersionKey).Replace("-", "");

            WriteSetting("VersionKey", VerKey);

            string ContentID   = pbp.GetContentId(OutputPbp);
            string Rif         = Path.Combine(Application.StartupPath, "GAME.RIF");
            string LicensePath = Path.Combine(output, "ux0_pspemu_temp_game_PSP_LICENSE", ContentID + ".rif");

            if (!File.Exists(LicensePath))
            {
                MessageBox.Show("Cannot find RIF", "RIF ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            File.Copy(LicensePath, Rif, true);
            WriteSetting("RifPath", Rif);
            WriteSetting("CmaDir", CmaDir);

            Versionkey.Text = VerKey;
            RifPath.Text    = Rif;

            if (Directory.Exists(output))
            {
                try
                {
                    Directory.Delete(output, true);
                }
                catch (Exception) { }
            }

            Status.Text         = "Progress %";
            TotalProgress.Style = ProgressBarStyle.Continuous;
        }
Example #2
0
        private void Ccs_FormClosing(object sender, FormClosingEventArgs e)
        {
            CHOVYCmaSelector ccs    = (CHOVYCmaSelector)sender;
            string           CmaDir = ccs.GetCmaDir();
            string           CmaAid = ccs.GetCmaAid();
            string           Backup = ccs.GetSelectedBackup();

            WriteSetting("CmaDir", CmaDir);

            if (Backup == "")
            {
                return;
            }

            string BackupPath = Path.Combine(CmaDir, "PGAME", CmaAid, Backup, "game", "game.psvimg");

            if (!File.Exists(BackupPath))
            {
                MessageBox.Show("Could not find \n" + BackupPath + "\n Perhaps backup failed?", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                ccs.Hide();
                this.Show();
                this.Focus();
                return;
            }

            byte[] AID = BitConverter.GetBytes(Convert.ToInt64(CmaAid, 16));
            Array.Reverse(AID);
            byte[] Key = CmaKeys.GenerateKey(AID);

            PSVIMGStream GamePsvimg = new PSVIMGStream(File.OpenRead(BackupPath), Key);

            BackupPath = Path.Combine(CmaDir, "PGAME", CmaAid, Backup, "license", "license.psvimg");
            if (!File.Exists(BackupPath))
            {
                MessageBox.Show("Could not find \n" + BackupPath + "\n Perhaps backup failed?", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                ccs.Hide();
                this.Show();
                this.Focus();
                return;
            }

            PSVIMGStream LicensePsvimg = new PSVIMGStream(File.OpenRead(BackupPath), Key);

            string Rif = Path.Combine(Application.StartupPath, "GAME.RIF");

            PSVIMGFileStream EbootPbp = new PSVIMGFileStream(GamePsvimg, "/EBOOT.PBP");

            byte[] VersionKey = pbp.GetVersionKey(EbootPbp);
            string VerKey     = BitConverter.ToString(VersionKey).Replace("-", "");

            WriteSetting("VersionKey", VerKey);

            string           ContentID  = pbp.GetContentId(EbootPbp);
            PSVIMGFileStream LicenseRif = new PSVIMGFileStream(LicensePsvimg, "/" + ContentID + ".rif");

            LicenseRif.WriteToFile(Rif);

            LicenseRif.Close();
            LicensePsvimg.Close();
            EbootPbp.Close();
            GamePsvimg.Close();

            WriteSetting("RifPath", Rif);

            Versionkey.Text = VerKey;
            RifPath.Text    = Rif;

            ccs.Hide();
            this.Show();
            this.Focus();

            MessageBox.Show("KEYS HAVE BEEN EXTRACTED FROM CMA, YOU MAY NOW LIBERATE YOURSELF", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }