Esempio n. 1
0
        private void Trophy_Load(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(this.filenames);
            this.Text = "Trophy List : " + PS4_PKG.PS4_Title;

            DataTable dttemp = new DataTable();

            dttemp.Columns.Add("Index");
            dttemp.Columns.Add("Trophy File");
            dttemp.Columns.Add("Offset");
            dttemp.Columns.Add("Size");

            try
            {
                for (int i = 0; i < PS4_PKG.Trophy_File.trophyItemList.Count; i++)
                {
                    dttemp.Rows.Add(PS4_PKG.Trophy_File.trophyItemList[i].Index, PS4_PKG.Trophy_File.trophyItemList[i].Name, PS4_PKG.Trophy_File.trophyItemList[i].Offset, PS4_PKG.Trophy_File.trophyItemList[i].Size);
                    //dttemp.Rows.Add(PS4_PKG.Param.Tables[i].Name, PS4_PKG.Param.Tables[i].Value);
                }
            }
            catch (Exception ex)
            {
            }
            dataGridView1.DataSource = dttemp;
            filenames = "";
        }
Esempio n. 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opendialog = new OpenFileDialog();

            opendialog.Filter           = "PS4 PKG File (.PKG)| *.PKG";//file type
            opendialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
            if (opendialog.ShowDialog() == DialogResult.OK)
            {
                PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(opendialog.FileName);
                textBox1.Text            = opendialog.FileName;
                pictureBox1.Image        = BytesToBitmap(PS4_PKG.Icon);
                label2.Text              = PS4_PKG.PS4_Title;
                dataGridView3.DataSource = null;
                label3.Text              = PS4_PKG.Content_ID;
                DataTable dttemp = new DataTable();
                dttemp.Columns.Add("PARAM");
                dttemp.Columns.Add("VALUE");
                for (int i = 0; i < PS4_PKG.Param.Tables.Count; i++)
                {
                    dttemp.Rows.Add(PS4_PKG.Param.Tables[i].Name, PS4_PKG.Param.Tables[i].Value);
                }
                dataGridView1.DataSource = dttemp;
                dttemp = new DataTable();
                dttemp.Columns.Add("Tropy File");
                try
                {
                    for (int i = 0; i < PS4_PKG.Trophy_File.trophyItemList.Count; i++)
                    {
                        dttemp.Rows.Add(PS4_PKG.Trophy_File.trophyItemList[i].Name);
                    }
                }
                catch (Exception ex)
                {
                }
                dataGridView2.DataSource = dttemp;

                var items = PS4_PKG.Header.DisplayInfo();
                //PS4_Tools.PKG.SceneRelated.ExtarctPKG(opendialog.FileName);
                for (int i = 0; i < items.Count; i++)
                {
                    listBox1.Items.Add(items[i]);
                }

                //for (int i = 0; i < PS4_PKG.Entires.Length; i++)
                //{
                //    listBox2.Items.Add(PS4_PKG.Entires[i].id.ToString() + PS4_PKG.Entires[0].size.ToString() + PS4_PKG.Entires[0].offset.ToString() + PS4_PKG.Entires[i].is_encrypted.ToString() + PS4_PKG.Entires[i].key_index);
                //}
                BindingSource source = new BindingSource();
                List <PS4_Tools.Util.PS4PkgUtil.PackageEntry> listofitems = new List <PS4_Tools.Util.PS4PkgUtil.PackageEntry>();
                for (int i = 0; i < PS4_PKG.Entires.Length; i++)
                {
                    listofitems.Add(PS4_PKG.Entires[i]);
                    source.Add(PS4_PKG.Entires[i]);
                }

                dataGridView3.AutoGenerateColumns = true;

                dataGridView3.DataSource = source;
            }
        }
Esempio n. 3
0
        void icon_click(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);

            if (PS4_PKG.Icon != null)
            {
                this.Size         = iconSize;
                pictureBox1.Image = BytesToBitmap(PS4_PKG.Icon);
                currentPic        = " (ICON)";
                pictureBox1.Refresh();
            }
        }
Esempio n. 4
0
        private void DownloadUpdate_Load(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);
            this.Text += PS4_PKG.PS4_Title;
            var       item = PS4_Tools.PKG.Official.CheckForUpdate(PS4_PKG.Param.TITLEID);
            DataTable dt   = new DataTable();

            dt.Columns.Add("Part(s)");
            dt.Columns.Add("File Size");
            dt.Columns.Add("Hash Value");
            dt.Columns.Add("URL");

            labelUpdateVersion.Text = item.Tag.Package.Version;
            int ver = Convert.ToInt32(item.Tag.Package.System_ver);

            string hexOutput   = String.Format("{0:X}", ver.ToString("X"));
            string first_three = hexOutput.Substring(0, 3);
            string version     = first_three.Insert(1, ".");

            labelSystemReq.Text = version;

            labelTotalFile.Text = item.Tag.Package.Manifest_item.pieces.Count.ToString();
            long sizes      = Convert.ToInt64(item.Tag.Package.Size);
            var  size_final = ByteSize.FromBytes(sizes).ToString();

            labelTotalSize.Text = size_final;

            part = 0;
            foreach (var items in item.Tag.Package.Manifest_item.pieces)
            {
                part++;
                long   fileSize   = items.fileSize;
                var    fileOffset = items.fileOffset;
                string hashValue  = items.hashValue.ToString();
                string url        = items.url.ToString();
                var    size       = ByteSizeLib.ByteSize.FromBytes(fileSize);

                dt.Rows.Add("Part " + part, size, hashValue.ToUpper(), url);
                darkDataGridView1.DataSource = dt;
            }

            darkDataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[3].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

            darkDataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            darkDataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }
Esempio n. 5
0
        void item2_click(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);

            if (PS4_PKG.Image != null)
            {
                this.Size = picSize;

                pictureBox1.Image = BytesToBitmap(PS4_PKG.Image);
                currentPic        = " (PIC1)";
                pictureBox1.Refresh();
                isIcon = false;
            }
        }
Esempio n. 6
0
        private void PictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);
            DialogResult dialog = MessageBox.Show("Save image?", "PS4 PKG Tool", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (dialog == DialogResult.Yes)
            {
                using (Bitmap tempImage = new Bitmap(pictureBox1.Image))
                {
                    string filter             = PS4_PKG.Param.Title.Replace(":", " -");
                    string title_filter_final = filter.Replace("  -", " -");
                    tempImage.Save(Environment.CurrentDirectory + @"\" + title_filter_final + currentPic + ".PNG", System.Drawing.Imaging.ImageFormat.Png);
                }

                //pb.Image.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\" + PS4_PKG.Param.Title + @"\.jpeg", ImageFormat.Jpeg);
            }
        }
Esempio n. 7
0
        private void PARAM_Load(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(this.filenames);
            this.Text = "Param Info : " + PS4_PKG.PS4_Title;

            DataTable dttemp = new DataTable();

            dttemp.Columns.Add("PARAM");
            dttemp.Columns.Add("VALUE");
            for (int i = 0; i < PS4_PKG.Param.Tables.Count; i++)
            {
                dttemp.Rows.Add(PS4_PKG.Param.Tables[i].Name, PS4_PKG.Param.Tables[i].Value);
            }
            dataGridView1.DataSource = dttemp;

            filenames = "";
        }
Esempio n. 8
0
        private void ddToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);

            FolderBrowserDialog fbd = new FolderBrowserDialog();

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                Logger.log("Extracting trophy image..");
                string failExtract     = "";
                var    numbersAndWords = NameToExtract.Zip(imageToExtract, (n, w) => new { name = n, image = w });
                foreach (var nw in numbersAndWords)
                {
                    try
                    {
                        using (Bitmap tempImage = new Bitmap(Utilities.BytesToImage(trophy.ExtractFileToMemory(nw.name))))
                        {
                            string filter             = PS4_PKG.Param.Title.Replace(":", " -");
                            string title_filter_final = filter.Replace("  -", " -");
                            tempImage.Save(fbd.SelectedPath + @"\" + nw.name, System.Drawing.Imaging.ImageFormat.Png);
                        }
                    }
                    catch (Exception a)
                    {
                        failExtract += a.Message + "\n";
                    }
                }

                if (failExtract == "")
                {
                    DarkMessageBox.ShowInformation("Trophy icon extracted.", "PS4 PKG Tool");
                    Logger.log("Trophy icon extracted.");
                }
                else
                {
                    DarkMessageBox.ShowWarning("Some icon fail to extract\n\n" + failExtract, "PS4 PKG Tool");
                    Logger.log("Some icon fail to extract\n\n" + failExtract);
                }
            }
        }
Esempio n. 9
0
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opendialog = new OpenFileDialog();

            opendialog.Filter           = "PS4 PKG File (.PKG)| *.PKG";//file type
            opendialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
            if (opendialog.ShowDialog() == DialogResult.OK)
            {
                PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(opendialog.FileName);
                textBox1.Text     = opendialog.FileName;
                pictureBox1.Image = PS4_PKG.Image;
                label2.Text       = PS4_PKG.PS4_Title;

                DataTable dttemp = new DataTable();
                dttemp.Columns.Add("PARAM");
                dttemp.Columns.Add("VALUE");
                for (int i = 0; i < PS4_PKG.Param.Tables.Count; i++)
                {
                    dttemp.Rows.Add(PS4_PKG.Param.Tables[i].Name, PS4_PKG.Param.Tables[i].Value);
                }
                dataGridView1.DataSource = dttemp;
                dttemp = new DataTable();
                dttemp.Columns.Add("Tropy File");
                try
                {
                    for (int i = 0; i < PS4_PKG.Trophy_File.trophyItemList.Count; i++)
                    {
                        dttemp.Rows.Add(PS4_PKG.Trophy_File.trophyItemList[i].Name);
                    }
                }
                catch (Exception ex)
                {
                }
                dataGridView2.DataSource = dttemp;
            }
        }
Esempio n. 10
0
        private void Picture_Load(object sender, EventArgs e)
        {
            this.Size = picSize;
            if (filenames != null)
            {
                PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);
                this.Text = PS4_PKG.PS4_Title;
                if (PS4_PKG.Image != null && PS4_PKG.Image2 != null)
                {
                    var item = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "pic0",
                        Text = "PIC0"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(item);
                    item.Click += new EventHandler(this.item1_click);

                    pictureBox1.Image = BytesToBitmap(PS4_PKG.Image);

                    var item2 = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "pic1",
                        Text = "PIC1"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(item2);
                    item2.Click      += new EventHandler(this.item2_click);
                    pictureBox1.Image = BytesToBitmap(PS4_PKG.Image2);

                    var icon = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "icon",
                        Text = "ICON"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(icon);
                    icon.Click += new EventHandler(this.icon_click);

                    currentPic = " (PIC0)";
                }
                else if (PS4_PKG.Image != null && PS4_PKG.Image2 == null)
                {
                    var item = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "pic0",
                        Text = "PIC0"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(item);
                    item.Click       += new EventHandler(this.item1_click);
                    pictureBox1.Image = BytesToBitmap(PS4_PKG.Image);

                    var icon = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "icon",
                        Text = "ICON"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(icon);
                    icon.Click += new EventHandler(this.icon_click);

                    currentPic = " (PIC0)";
                }
                else if (PS4_PKG.Image == null && PS4_PKG.Image2 != null)
                {
                    var item2 = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "pic1",
                        Text = "PIC1"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(item2);
                    item2.Click      += new EventHandler(this.item2_click);
                    pictureBox1.Image = BytesToBitmap(PS4_PKG.Image2);

                    var icon = new System.Windows.Forms.ToolStripMenuItem()
                    {
                        Name = "icon",
                        Text = "ICON"
                    };
                    imageToolStripMenuItem.DropDownItems.Add(icon);
                    icon.Click += new EventHandler(this.icon_click);

                    currentPic = " (PIC1)";
                }
                else if (PS4_PKG.Image == null && PS4_PKG.Image2 == null && PS4_PKG.Icon != null)
                {
                    pictureBox1.Image = BytesToBitmap(PS4_PKG.Icon);
                    this.Size         = iconSize;
                }
            }
            else
            {
                this.Close();
            }
        }
Esempio n. 11
0
        private void CurrentEntry_Load(object sender, EventArgs e)
        {
            PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);

            this.Text = "Entry List : " + PS4_PKG.PS4_Title;
            try
            {
                using (var file = File.OpenRead(filenames))
                {
                    pkg = new PkgReader(file).ReadPkg();
                    var i = 0;

                    DataTable dt = new DataTable();
                    dt.Columns.Add("Name");
                    dt.Columns.Add("Offset");
                    dt.Columns.Add("Size");
                    dt.Columns.Add("Flags 1");
                    dt.Columns.Add("Flags 2");
                    dt.Columns.Add("Encrypted?");

                    foreach (var meta in pkg.Metas.Metas)
                    {
                        idEntryList.Add($"{i++,-6}");
                        nameEntryList.Add($"{meta.id}");
                    }

                    foreach (var meta in pkg.Metas.Metas)
                    {
                        if (meta.Encrypted == true)
                        {
                            offsetEntryList.Add($"{meta.DataOffset,-10:X8}");
                            NameEntryList.Add($"{meta.id}");
                        }
                    }

                    idEntryList.ToArray();
                    nameEntryList.ToArray();


                    NameEntryList.ToArray();
                    offsetEntryList.ToArray();



                    i = 0;

                    int decValue;

                    foreach (var meta in pkg.Metas.Metas)
                    {
                        decValue = 0;
                        decValue = int.Parse($"{meta.DataSize,-10:X2}", System.Globalization.NumberStyles.HexNumber);
                        var finalSize = ByteSizeLib.ByteSize.FromBytes(decValue);


                        dt.Rows.Add($"{meta.id}", $"0x{meta.DataOffset,-10:X}", finalSize, $"0x{meta.Flags1,-8:X}", $"0x{meta.Flags2,-8:X}", $"{meta.Encrypted,-8:X}");
                        darkDataGridView1.DataSource = dt;
                    }
                }
                darkButton1.Enabled = true;
                darkButton2.Enabled = true;

                darkDataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[3].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[5].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

                darkDataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                darkDataGridView1.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            }
            catch (Exception a)
            {
                DarkMessageBox.ShowError(a.Message, "PS4 PKG Tool");
                darkButton1.Enabled = false;
                darkButton2.Enabled = false;
            }
        }
Esempio n. 12
0
        async Task <FileResult> PickAndShow(PickOptions options, View view)
        {
            try
            {
                var result = await FilePicker.PickAsync();

                if (result != null)
                {
                    string Text = $"File Name: {result.FileName}";
                    if (result.FileName.EndsWith("pkg", StringComparison.OrdinalIgnoreCase) ||
                        result.FileName.EndsWith("pkg", StringComparison.OrdinalIgnoreCase))
                    {
                        var stream = await result.OpenReadAsync();

                        PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(stream);
                        if (PKG == null)
                        {
                            throw new Exception("File might be corrupt ?");
                        }
                        try
                        {
                            if (PKG.PS4_Title != null)
                            {
                                RunOnUiThread(() => txtTitle.Text = "Title : " + PKG.PS4_Title);
                            }
                        }
                        catch
                        {
                        }

                        try
                        {
                            RunOnUiThread(() => txtContentID.Text = "Content ID : " + PKG.Content_ID);
                        }
                        catch
                        {
                        }
                        try
                        {
                            RunOnUiThread(() => txtSystemVersion.Text = "System Version : " + PKG.Firmware_Version);
                        }
                        catch
                        {
                        }
                        try
                        {
                            RunOnUiThread(() => txtPKGType.Text = "Type : " + PKG.PKGState.ToString());
                        }
                        catch
                        {
                        }
                        try
                        {
                            var imageBitmap = BitmapFactory.DecodeByteArray(PKG.Icon, 0, PKG.Icon.Length);
                            RunOnUiThread(() => imgPkg.SetImageBitmap(imageBitmap));
                        }
                        catch (Exception ex)
                        {
                            try
                            {
                                var imageBitmap = BitmapFactory.DecodeByteArray(PKG.Image, 0, PKG.Image.Length);
                                RunOnUiThread(() => imgPkg.SetImageBitmap(imageBitmap));
                            }
                            catch
                            {
                            }
                        }


                        return(result);
                    }
                }
            }
            catch (Exception ex)
            {
                // The user canceled or something went wrong
                Snackbar.Make(view, ex.Message, Snackbar.LengthLong)
                .SetAction("Action", (Android.Views.View.IOnClickListener)null).Show();
                return(null);
            }
            return(null);
        }
Esempio n. 13
0
        private void btnAt9_Click(object sender, EventArgs e)
        {
            if (Playing == false)
            {
                //Open File Items
                OpenFileDialog openFileDialog1 = new OpenFileDialog();

                openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

                openFileDialog1.Title = "Select PS4 File";

                openFileDialog1.CheckFileExists = true;

                openFileDialog1.CheckPathExists = true;

                openFileDialog1.Filter = "PS4 File (*.*)|*.*|PS4 PKG (*.pkg)|*.pkg";

                openFileDialog1.RestoreDirectory = true;

                openFileDialog1.Multiselect = false;

                openFileDialog1.ReadOnlyChecked = true;

                openFileDialog1.ShowReadOnly = true;

                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    txtAt9.Text = "";
                    var ps4filetype = PS4_Tools.Tools.Get_PS4_File_Type(openFileDialog1.FileName);
                    //MessageBox.Show("File is a " + ps4filetype.ToString());
                    switch (ps4filetype)
                    {
                    case PS4_Tools.Tools.File_Type.ATRAC9:
                        pnlLoading.Visible = true;
                        Application.DoEvents();
                        new Thread(new ThreadStart(delegate
                        {
                            var bytes = PS4_Tools.Media.Atrac9.LoadAt9(openFileDialog1.FileName);
                            if (this.txtAt9.InvokeRequired)
                            {
                                this.txtAt9.BeginInvoke((MethodInvoker) delegate() { this.txtAt9.Text = openFileDialog1.FileName; });
                            }
                            else
                            {
                                this.txtAt9.Text = openFileDialog1.FileName;
                            }
                            //txtAt9.Text = openFileDialog1.FileName;
                            player = new System.Media.SoundPlayer(new MemoryStream(bytes));
                            player.Play();
                            Playing = true;
                            if (this.btnPlay.InvokeRequired)
                            {
                                this.btnPlay.BeginInvoke((MethodInvoker) delegate() { this.btnPlay.Image = Properties.Resources.baseline_stop_black_18dp; });
                            }
                            else
                            {
                                this.btnPlay.Image = Properties.Resources.baseline_stop_black_18dp;
                            }
                            if (this.pnlLoading.InvokeRequired)
                            {
                                this.pnlLoading.BeginInvoke((MethodInvoker) delegate() { this.pnlLoading.Visible = false; });
                            }
                            else
                            {
                                this.pnlLoading.Visible = false;
                            }
                            //btnPlay.Image = Properties.Resources.baseline_stop_black_18dp;
                            //pnlLoading.Visible = false;
                            Application.DoEvents();
                        })).Start();
                        break;

                    case PS4_Tools.Tools.File_Type.PS4_PKG:
                        pnlLoading.Visible = true;
                        Application.DoEvents();
                        new Thread(new ThreadStart(delegate
                        {
                            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(openFileDialog1.FileName);
                            if (PS4_PKG.Sound != null)
                            {
                                var bytes = PS4_Tools.Media.Atrac9.LoadAt9(PS4_PKG.Sound);
                                if (this.txtAt9.InvokeRequired)
                                {
                                    this.txtAt9.BeginInvoke((MethodInvoker) delegate() { this.txtAt9.Text = openFileDialog1.FileName; });
                                }
                                else
                                {
                                    this.txtAt9.Text = openFileDialog1.FileName;
                                }
                                //txtAt9.Text = openFileDialog1.FileName;
                                player = new System.Media.SoundPlayer(new MemoryStream(bytes));
                                player.Play();
                                Playing = true;
                                if (this.btnPlay.InvokeRequired)
                                {
                                    this.btnPlay.BeginInvoke((MethodInvoker) delegate() { this.btnPlay.Image = Properties.Resources.baseline_stop_black_18dp; });
                                }
                                else
                                {
                                    this.btnPlay.Image = Properties.Resources.baseline_stop_black_18dp;
                                }
                            }
                            if (this.pnlLoading.InvokeRequired)
                            {
                                this.pnlLoading.BeginInvoke((MethodInvoker) delegate() { this.pnlLoading.Visible = false; });
                            }
                            else
                            {
                                this.pnlLoading.Visible = false;
                            }
                            //btnPlay.Image = Properties.Resources.baseline_stop_black_18dp;
                            //pnlLoading.Visible = false;
                            Application.DoEvents();
                        })).Start();
                        break;
                    }
                }
            }
            else
            {
                player.Stop();

                btnPlay.Image = Properties.Resources.baseline_play_circle_outline_black_18dp;
                Playing       = false;
            }
        }
Esempio n. 14
0
        private void Trophy_Load(object sender, EventArgs e)
        {
            //extract all entry
            //add entry to array
            using (var file = File.OpenRead(filenames))
            {
                var pkg = new PkgReader(file).ReadPkg();
                var i   = 0;



                foreach (var meta in pkg.Metas.Metas)
                {
                    idEntryList.Add($"{i++,-6}");
                    nameEntryList.Add($"{meta.id}");
                }

                idEntryList.ToArray();
                nameEntryList.ToArray();
            }

            //extract each entry from array
            PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(filenames);
            string game_title         = PS4_PKG.Param.Title;
            string filter             = game_title.Replace(":", " -");
            string title_filter_final = filter.Replace("  -", " -");

            string path = tempPath + @"Trophy\";

            try
            {
                Directory.CreateDirectory(path + title_filter_final);

                var numbersAndWords = idEntryList.Zip(nameEntryList, (n, w) => new { id = n, name = w });
                foreach (var nw in numbersAndWords)
                {
                    var pkgPath = filenames;
                    var idx     = int.Parse(nw.id);
                    var name    = nw.name;
                    var outPath = path + title_filter_final + "\\" + name.Replace("_SHA", ".SHA").Replace("_DAT", ".DAT").Replace("_SFO", ".SFO").Replace("_XML", ".XML").Replace("_SIG", ".SIG").Replace("_PNG", ".PNG").Replace("_JSON", ".JSON").Replace("_DDS", ".DDS").Replace("_TRP", ".TRP").Replace("_AT9", ".AT9");;

                    using (var pkgFile = File.OpenRead(pkgPath))
                    {
                        var pkg = new PkgReader(pkgFile).ReadPkg();
                        if (idx < 0 || idx >= pkg.Metas.Metas.Count)
                        {
                            DarkMessageBox.ShowError("Error: entry number out of range", "PS4 PKG Tool");
                            return;
                        }
                        using (var outFile = File.Create(outPath))
                        {
                            var meta = pkg.Metas.Metas[idx];
                            outFile.SetLength(meta.DataSize);
                            if (meta.Encrypted)
                            {
                                if (passcode == null)
                                {
                                    //MessageBox.Show("Warning: Entry is encrypted but no passcode was provided! Saving encrypted bytes.");
                                }
                                else
                                {
                                    var entry = new SubStream(pkgFile, meta.DataOffset, (meta.DataSize + 15) & ~15);
                                    var tmp   = new byte[entry.Length];
                                    entry.Read(tmp, 0, tmp.Length);
                                    tmp = LibOrbisPkg.PKG.Entry.Decrypt(tmp, pkg.Header.content_id, passcode, meta);
                                    outFile.Write(tmp, 0, (int)meta.DataSize);
                                    return;
                                }
                            }
                            new SubStream(pkgFile, meta.DataOffset, meta.DataSize).CopyTo(outFile);
                        }
                    }
                }

                //MessageBox.Show("All entry item extracted", "PS4 PKG Tool");
            }
            catch (Exception a)
            {
                DarkMessageBox.ShowError(a.Message, "PS4 PKG Tool");
            }



            //done exract, now open trp
            if (File.Exists(path + title_filter_final + "\\TROPHY__TROPHY00.TRP"))
            {
                trophy = new TRPReader();
                trophy.Load(path + title_filter_final + "\\TROPHY__TROPHY00.TRP");

                if (!trophy.IsError)
                {
                    List <Archiver> .Enumerator enumerator = new List <Archiver> .Enumerator();

                    enumerator = trophy.TrophyList.GetEnumerator();



                    try
                    {
                        //listView1.Columns.Add("Icon");
                        //listView1.Columns.Add("Name");
                        //listView1.Columns.Add("Size");
                        //listView1.Columns.Add("Offset");

                        //listView1.View = View.Details;

                        //_ImageListIcons.ImageSize = new Size(96, 96);
                        //listView1.SmallImageList = _ImageListIcons;

                        while (enumerator.MoveNext())
                        {
                            Archiver current = enumerator.Current;
                            if (current.Name.ToUpper().EndsWith(".PNG"))
                            {
                                imgList.Add(Utilities.BytesToImage(trophy.ExtractFileToMemory(current.Name)));
                                ImageListIcons.Images.Add(imgList[checked (imgList.Count - 1)]);

                                imageToExtract.Add(Utilities.BytesToImage(trophy.ExtractFileToMemory(current.Name)));
                                NameToExtract.Add(current.Name);

                                var image  = Utilities.BytesToImage(trophy.ExtractFileToMemory(current.Name));
                                var resize = ResizeImage(image, image.Width / 2, image.Height / 2);
                                darkDataGridView1.Rows.Add(resize, current.Name, Utilities.RoundBytes(current.Size), "0x" + current.Offset);

                                //              listView1.Items.Add(new ListViewItem()
                                //              {
                                //                  SubItems = {
                                //  current.Name, Utilities.RoundBytes(current.Size)
                                //},
                                //                  ImageIndex = checked(ImageListIcons.Images.Count - 1),
                                //                  Tag = (object)imgList.Count
                                //              });
                            }
                            //dataGridView1.DataSource = dt;
                            Application.DoEvents();
                        }

                        NameToExtract.ToArray();

                        //listView1.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
                        //listView1.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.None);
                        //listView1.Columns[1].Width = 347;
                        //listView1.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.None);
                        //listView1.Columns[2].Width = 103;
                    }
                    finally
                    {
                        enumerator.Dispose();
                    }
                    if (!issaved)
                    {
                        if (Operators.CompareString(trophy.SHA1, trophy.CalculateSHA1Hash(), false) != 0)
                        {
                            DarkMessageBox.ShowError("This file is corrupted, mismatched SHA1 hash!", "PS4 PKG Tool");
                        }
                        //else
                        //MessageBox.Show("Loaded successfully.");
                    }
                    else
                    {
                        label1.Text = "Saved successfully.";
                    }
                    label1.Enabled = trophy.Version > 1;
                    //this.Text = "[ Trophy v" + Conversions.ToString(trophy.Version > 1) + " - Files count: " + listView1.Items.Count + " ]";
                    try
                    {
                        string input  = Encoding.UTF8.GetString(trophy.ExtractFileToMemory("TROP.SFM"));
                        Match  match1 = new Regex("(?<start>[<]title[-]name[>])(?<titlename>.+)(?<end>[<][/]title[-]name[>])").Match(input);
                        if (match1.Success)
                        {
                            trophy.TitleName = match1.Groups["titlename"].Value;
                            Text             = "TRPViewer - " + trophy.TitleName;
                        }
                        Match match2 = new Regex("(?<start>[<]npcommid[>])(?<npcommid>.+)(?<end>[<][/]npcommid[>])").Match(input);
                        if (match2.Success)
                        {
                            trophy.NPCommId = match2.Groups["npcommid"].Value;
                        }
                    }
                    catch (Exception ex)
                    {
                        ProjectData.SetProjectError(ex);
                        ProjectData.ClearProjectError();
                    }
                }
                ctrophy.SetVersion = trophy.Version;
            }

            this.Text += PS4_PKG.PS4_Title;



            /*
             * PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(this.filenames);
             * this.Text = "Trophy List : " + PS4_PKG.PS4_Title;
             *
             * DataTable dttemp = new DataTable();
             * dttemp.Columns.Add("Index");
             * dttemp.Columns.Add("Trophy File");
             * dttemp.Columns.Add("Offset");
             * dttemp.Columns.Add("Size");
             *
             * try
             * {
             * for (int i = 0; i < PS4_PKG.Trophy_File.trophyItemList.Count; i++)
             * {
             *  dttemp.Rows.Add(PS4_PKG.Trophy_File.trophyItemList[i].Index, PS4_PKG.Trophy_File.trophyItemList[i].Name, PS4_PKG.Trophy_File.trophyItemList[i].Offset, PS4_PKG.Trophy_File.trophyItemList[i].Size);
             *  //dttemp.Rows.Add(PS4_PKG.Param.Tables[i].Name, PS4_PKG.Param.Tables[i].Value);
             *
             * }
             *
             *
             * }
             * catch (Exception ex)
             * {
             *
             * }
             * dataGridView1.DataSource = dttemp;
             * filenames = "";
             */
        }
Esempio n. 15
0
        private void Button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;
                PS4_Tools.PKG.SceneRelated.Unprotected_PKG PS4_PKG = PS4_Tools.PKG.SceneRelated.Read_PKG(textBox1.Text);
                string ParamTemplate = File.ReadAllText(path + @"param_template.sfx");
                ParamTemplate = ParamTemplate.Replace("%1", PS4_PKG.Param.ContentID).Replace("%2", PS4_PKG.Param.TITLEID).Replace("theme", PS4_PKG.Param.Title);
                File.WriteAllText(path + @"fake_dlc_temp\param_template.sfx", ParamTemplate);
                var createSFO = new Process
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName               = path + @"orbis_pub_cmd.exe",
                        Arguments              = "sfo_create \"" + path + @"fake_dlc_temp\param_template.sfx" + "\" \"" + path + @"fake_dlc_temp\sce_sys\param.sfo" + "\"",
                        UseShellExecute        = false,
                        RedirectStandardOutput = true,
                        CreateNoWindow         = true
                    }
                };
                createSFO.Start();
                createSFO.WaitForExit();
                while (!createSFO.StandardOutput.EndOfStream)
                {
                    string line = createSFO.StandardOutput.ReadLine();
                    //richTextBox1.Text += line;
                }
                if (PS4_PKG.Icon != null)
                {
                    using (Bitmap tempImage = new Bitmap(BytesToBitmap(PS4_PKG.Icon)))
                    {
                        string filter             = PS4_PKG.Param.Title.Replace(":", " -");
                        string title_filter_final = filter.Replace("  -", " -");
                        tempImage.Save(path + @"fake_dlc_temp\sce_sys\icon0.png", System.Drawing.Imaging.ImageFormat.Png);
                    }
                    string GP4 = File.ReadAllText(path + @"fake_dlc_project.gp4");
                    GP4 = GP4.Replace("TIME", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("ID", PS4_PKG.Param.ContentID).Replace("DIR", path).Replace("<files img_no=\"0\">", "<file targ_path=\"sce_sys/icon0.png\" orig_path=\"" + path + "fake_dlc_temp\\sce_sys\\icon0.png\"/>").Replace("</volume>", "</volume>\n<files>");
                    File.WriteAllText(path + @"fake_dlc_temp\fake_dlc_project.gp4", GP4);
                }
                else
                {
                    string GP4 = File.ReadAllText(path + @"fake_dlc_project.gp4");
                    GP4 = GP4.Replace("TIME", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Replace("ID", PS4_PKG.Param.ContentID).Replace("DIR", path);
                    File.WriteAllText(path + @"fake_dlc_temp\fake_dlc_project.gp4", GP4);
                }

                var createPKG = new Process
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName               = path + @"orbis_pub_cmd.exe",
                        Arguments              = "img_create \"" + path + @"fake_dlc_temp\fake_dlc_project.gp4" + "\" \"" + Environment.CurrentDirectory + @"\Addon Unlocker PKG\" + PS4_PKG.Param.ContentID + "_Unlocker.pkg" + "\"",
                        UseShellExecute        = false,
                        RedirectStandardOutput = true,
                        CreateNoWindow         = true
                    }
                };
                createPKG.Start();
                createPKG.WaitForExit();
                while (!createPKG.StandardOutput.EndOfStream)
                {
                    string line = createPKG.StandardOutput.ReadLine();
                    //richTextBox1.Text += line;
                }
                if (createPKG.ExitCode == 0)
                {
                    DialogResult dialog = MessageBox.Show("FPKG created successfully. Open output folder?", "PS4 PKG Tool", MessageBoxButtons.YesNo);
                    if (dialog == DialogResult.Yes)
                    {
                        Process.Start(Environment.CurrentDirectory + @"\Addon Unlocker PKG\");
                    }
                }
            }
        }