private static byte[] EkPfsFromPasscode(Pkg pkg, string passcode) { if (passcode == null || passcode == "" || passcode == "fake") { return(pkg.GetEkpfs()); } else { return(Crypto.ComputeKeys(pkg.Header.content_id, passcode, 1)); } }
//for the tostring thing public override string ToString() { return(string.Format("NativeProcessingFile: {0}\nActualPatchName: {1}\nPkg: {2}\nDirectoryInArchive: {3}\nFileName: {4}\nExtractDirectory: {5}\nNewFileName: {6}", NativeProcessingFile.Equals("") ? "(empty)" : NativeProcessingFile, ActualPatchName.Equals("") ? "(empty)" : ActualPatchName, Pkg.Equals("") ? "(empty)" : Pkg, DirectoryInArchive.Equals("") ? "(empty)" : DirectoryInArchive, FileName.Equals("") ? "(empty)" : FileName, ExtractDirectory.Equals("") ? "(empty)" : ExtractDirectory, NewFileName.Equals("") ? "(empty)" : NewFileName)); }
private void DownloadNewFiles() { if (this.Packages == null) { return; } foreach (Package Pkg in this.Packages) { Pkg.DownloadNewFiles(); } }
private void SavePkgExecute() { Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog(); saveFileDialog.FileName = pkgName; bool?result = saveFileDialog.ShowDialog(); if (result == true) { GC.Collect(); Pkg.SavePackageToFile(saveFileDialog.FileName); GC.Collect(); } }
public ActionResult AddPkg(Pkg p, string Offers, HttpPostedFileBase image) { string pic = Path.Combine(Server.MapPath("~/Images"), image.FileName); image.SaveAs(pic); var pkg = c.Packages.Where(e => e.Offer == Offers); p.Image = pic; p.Offer = Offers; c.Packages.Add(p); c.SaveChanges(); ViewBag.pk = "Package added successfully"; return(View()); }
private void OpenPkgExecute() { Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); openFileDialog.DefaultExt = ".pkg"; openFileDialog.Filter = "PKG Files (*.pkg)|*.pkg"; bool?result = openFileDialog.ShowDialog(); if (result == true) { pkgName = openFileDialog.FileName.Substring(openFileDialog.FileName.LastIndexOf('\\') + 1); Pkg = new Pkg(); GC.Collect(); Pkg.LoadPackageFromFile(openFileDialog.FileName); GC.Collect(); } }
private int GetDownloadedFileCount() { if (this.Packages == null) { return(0); } int Res = 0; foreach (Package Pkg in this.Packages) { Res += Pkg.GetDownloadedFileCount(); } return(Res); }
protected internal int GetDownloadedSize() { if (this.Packages == null) { return(0); } int Res = 0; foreach (Package Pkg in this.Packages) { Res += Pkg.GetDownloadedSize(); } return(Res); }
private void ApplyUpdates() { this.Progress.ChangeStatus("Aplicando actualizaciones..."); if (this.Packages == null) { return; } foreach (Package Pkg in this.Packages) { if (Pkg.UpdatesReady()) { Pkg.ApplyUpdates(); } } }
private bool UpdatesReady() { if (this.Packages == null) { return(false); } foreach (Package Pkg in this.Packages) { if (Pkg.UpdatesReady()) { return(true); } } return(false); }
public PkgView(IFile pkgFile) { InitializeComponent(); this.pkgFile = pkgFile; using (var s = pkgFile.GetStream()) ObjectPreview(new LibOrbisPkg.PKG.PkgReader(s).ReadHeader()); using (var s = pkgFile.GetStream()) pkg = new PkgReader(s).ReadPkg(); try { var dk3 = Crypto.RSA2048Decrypt(pkg.EntryKeys.Keys[3].key, RSAKeyset.PkgDerivedKey3Keyset); var iv_key = Crypto.Sha256( pkg.ImageKey.meta.GetBytes() .Concat(dk3) .ToArray()); var imageKeyDecrypted = pkg.ImageKey.FileData.Clone() as byte[]; Crypto.AesCbcCfb128Decrypt( imageKeyDecrypted, imageKeyDecrypted, imageKeyDecrypted.Length, iv_key.Skip(16).Take(16).ToArray(), iv_key.Take(16).ToArray()); var ekpfs = Crypto.RSA2048Decrypt(imageKeyDecrypted, RSAKeyset.FakeKeyset); var package = PackageReader.ReadPackageFromFile(pkgFile, new string(ekpfs.Select(b => (char)b).ToArray())); var innerPfs = PackageReader.ReadPackageFromFile(package.GetFile("/pfs_image.dat")); var view = new PackageView(innerPfs, PackageManager.GetInstance()); view.Dock = DockStyle.Fill; filesTab.Controls.Clear(); filesTab.Controls.Add(view); } catch (Exception) { } foreach (var e in pkg.Metas.Metas) { var lvi = new ListViewItem(new[] { e.id.ToString(), string.Format("0x{0:X}", e.DataSize), string.Format("0x{0:X}", e.DataOffset), e.Encrypted ? "Yes" : "No", e.KeyIndex.ToString(), }); lvi.Tag = e; entriesListView.Items.Add(lvi); } }
public void Show(string content, WarningType type = WarningType.WT_None, bool rightNow = false, string StrColor = "") { if (showing_ || (GamePlayer.Instance.isInBattle && !rightNow)) { Pkg pkg = new Pkg(); pkg.content = content; pkg.type = type; pkg.rightNow = rightNow; pkg.strColor = StrColor; msgQue_.Enqueue(pkg); return; } showing_ = true; GameObject clone = (GameObject)GameObject.Instantiate(popTextObj_); clone.transform.parent = ApplicationEntry.Instance.uiRoot.transform; clone.transform.localScale = Vector3.one; UILabel uLab = clone.GetComponentInChildren <UILabel> (); if (!string.IsNullOrEmpty(StrColor)) { //uLab.color = Color.white; uLab.text = string.Format("[b][{0}]{1}[-][-]", StrColor, content);; } else { uLab.text = string.Format("[b][{0}]{1}[-][-]", popColor[(int)type], content); } float lifeTime = clone.GetComponent <UITweener>().duration; Destroy des = clone.AddComponent <Destroy>(); des.lifetime = lifeTime; GlobalInstanceFunction.Instance.Invoke(() => { showing_ = false; if (msgQue_.Count > 0) { Pkg p = msgQue_.Dequeue(); PopText.Instance.Show(p.content, p.type, p.rightNow, p.strColor); } }, timeGap_); }
//for the tostring thing public override string ToString() { return(string.Format("NativeProcessingFile: {0}\nActualPatchName: {1}\nPkg: {2}\nDirectoryInArchive: {3}\nAtlasFile: {4}\nStlasSaveDirectory: {5}\nSltas width: {6}\nSltas hight: {7}\nPadding: {8}\nPowOf2: {9}\nSquare: {10}\nFastImagePacker: {11}\nGenerateMap: {12}\nMapTypeName: {13}\nImageFolderList: {14}\nTexturelist: {15}\nAllowToAddNewPictures: {16}", NativeProcessingFile.Equals("") ? "(empty)" : NativeProcessingFile, ActualPatchName.Equals("") ? "(empty)" : ActualPatchName, Pkg.Equals("") ? "(empty)" : Pkg, DirectoryInArchive.Equals("") ? "(empty)" : DirectoryInArchive, AtlasFile.Equals("") ? "(empty)" : AtlasFile, AtlasSaveDirectory.Equals("") ? "(empty)" : AtlasSaveDirectory, AtlasWidth == 0 ? "(empty)" : "" + AtlasWidth, AtlasHeight == 0 ? "(empty)" : "" + AtlasHeight, Padding == 0 ? "(empty)" : "" + Padding, PowOf2 == State.None ? "(empty)" : PowOf2 == State.True ? "True" : "False", Square == State.None ? "(empty)" : Square == State.True ? "True" : "False", FastImagePacker ? "True" : "False", GenerateMap == State.None ? "(empty)" : GenerateMap == State.True ? "True" : "False", MapType == MapTypes.None ? "(none selected)" : MapTypeName(MapType), ImageFolderList.Count == 0 ? "(empty)" : ImageFolderList.ToString(), TextureList.Count == 0 ? "(empty)" : TextureList.Count.ToString(), AllowToAddAdditionalImages ? "True" : "False")); }
public bool UpdatesPending() { if (this.Packages == null) { return(false); } if (this.Progress.IsRunning) { return(false); } foreach (Package Pkg in this.Packages) { if (Pkg.UpdatesPending()) { return(true); } } return(false); }
public PkgView(string path) { InitializeComponent(); if (path == null) { return; } pkgFile = MemoryMappedFile.CreateFromFile(path); using (var s = pkgFile.CreateViewStream()) ObjectPreview(new PkgReader(s).ReadHeader(), pkgHeaderTreeView); using (var s = pkgFile.CreateViewStream()) pkg = new PkgReader(s).ReadPkg(); try { using (var s = pkgFile.CreateViewStream((long)pkg.Header.pfs_image_offset, (long)pkg.Header.pfs_image_size)) ObjectPreview(PfsHeader.ReadFromStream(s), pfsHeaderTreeView); } catch (Exception e) { pkgHeaderTabControl.TabPages.Remove(outerPfsHeaderTabPage); MessageBox.Show("Error loading outer PFS: " + e.Message + Environment.NewLine + "Please report this issue at https://github.com/maxton/LibOrbisPkg/issues"); } if (pkg.Metas.Metas.Where(entry => entry.id == EntryId.ICON0_PNG).FirstOrDefault() is MetaEntry icon0) { using (var s = pkgFile.CreateViewStream(icon0.DataOffset, icon0.DataSize)) { pictureBox1.Image = Image.FromStream(s); } } contentIdTextBox.Text = pkg.Header.content_id; titleTextBox.Text = pkg.ParamSfo.ParamSfo["TITLE"]?.ToString(); sizeLabel.Text = FileView.HumanReadableFileSize((long)pkg.Header.package_size); var category = pkg.ParamSfo.ParamSfo["CATEGORY"].ToString(); typeLabel.Text = SFOView.SfoTypes.Where(x => x.Category == category).FirstOrDefault() is SFOView.SfoType t ? t.Description : "Unknown"; versionLabel.Text = pkg.ParamSfo.ParamSfo["VERSION"]?.ToString(); if (pkg.ParamSfo.ParamSfo["APP_VER"] is Utf8Value v) { appVerLabel.Text = v.Value; } else { appVerLabelLabel.Visible = false; appVerLabel.Visible = false; } var sfoEditor = new SFOView(pkg.ParamSfo.ParamSfo, true); sfoEditor.Dock = DockStyle.Fill; tabPage1.Controls.Add(sfoEditor); if (pkg.CheckPasscode("00000000000000000000000000000000")) { passcode = "00000000000000000000000000000000"; ekpfs = Crypto.ComputeKeys(pkg.Header.content_id, passcode, 1); } else { ekpfs = pkg.GetEkpfs(); } ReopenFileView(); foreach (var e in pkg.Metas.Metas) { var lvi = new ListViewItem(new[] { e.id.ToString(), string.Format("0x{0:X}", e.DataSize), string.Format("0x{0:X}", e.DataOffset), e.Encrypted ? "Yes" : "No", e.KeyIndex.ToString(), }); lvi.Tag = e; entriesListView.Items.Add(lvi); } }
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; } }
public PkgView(string path) { InitializeComponent(); if (path == null) { return; } pkgFile = MemoryMappedFile.CreateFromFile(path, FileMode.Open, "pkgFile" + idx++, 0, MemoryMappedFileAccess.Read); using (var s = pkgFile.CreateViewStream(0, 0, MemoryMappedFileAccess.Read)) ObjectPreview(new PkgReader(s).ReadHeader(), pkgHeaderTreeView); using (var s = pkgFile.CreateViewStream(0, 0, MemoryMappedFileAccess.Read)) pkg = new PkgReader(s).ReadPkg(); try { using (var s = pkgFile.CreateViewStream((long)pkg.Header.pfs_image_offset, (long)pkg.Header.pfs_image_size, MemoryMappedFileAccess.Read)) ObjectPreview(PfsHeader.ReadFromStream(s), pfsHeaderTreeView); } catch (Exception e) { pkgHeaderTabControl.TabPages.Remove(outerPfsHeaderTabPage); MessageBox.Show("Error loading outer PFS: " + e.Message + Environment.NewLine + "Please report this issue at https://github.com/maxton/LibOrbisPkg/issues"); } if (pkg.Metas.Metas.Where(entry => entry.id == EntryId.ICON0_PNG).FirstOrDefault() is MetaEntry icon0) { using (var s = pkgFile.CreateViewStream(icon0.DataOffset, icon0.DataSize, MemoryMappedFileAccess.Read)) { pictureBox1.Image = Image.FromStream(s); } } contentIdTextBox.Text = pkg.Header.content_id; titleTextBox.Text = pkg.ParamSfo.ParamSfo["TITLE"]?.ToString(); sizeLabel.Text = FileView.HumanReadableFileSize((long)pkg.Header.package_size); var category = pkg.ParamSfo.ParamSfo["CATEGORY"].ToString(); typeLabel.Text = SFOView.SfoTypes.Where(x => x.Category == category).FirstOrDefault() is SFOView.SfoType t ? t.Description : "Unknown"; versionLabel.Text = pkg.ParamSfo.ParamSfo["VERSION"]?.ToString(); if (pkg.ParamSfo.ParamSfo["APP_VER"] is Utf8Value v) { appVerLabel.Text = v.Value; } else { appVerLabelLabel.Visible = false; appVerLabel.Visible = false; } var sfoEditor = new SFOView(pkg.ParamSfo.ParamSfo, true); sfoEditor.Dock = DockStyle.Fill; tabPage1.Controls.Add(sfoEditor); if (pkg.CheckPasscode("00000000000000000000000000000000")) { passcode = "00000000000000000000000000000000"; ekpfs = Crypto.ComputeKeys(pkg.Header.content_id, passcode, 1); } else if (KeyDB.Instance.Passcodes.TryGetValue(pkg.Header.content_id, out var keydbPasscode) && pkg.CheckPasscode(keydbPasscode)) { passcode = keydbPasscode; ekpfs = Crypto.ComputeKeys(pkg.Header.content_id, passcode, 1); } else if (pkg.GetEkpfs() is byte[] ek && ek != null) { ekpfs = ek; }
public PkgViewModel() { pkgName = "OS_Modified.pkg"; Pkg = new Pkg(); }