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 = ""; }
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; } }
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(); } }
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; }
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; } }
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); } }
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 = ""; }
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); } } }
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; } }
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(); } }
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; } }
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); }
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; } }
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 = ""; */ }
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\"); } } } }