Ejemplo n.º 1
0
 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));
     }
 }
Ejemplo n.º 2
0
 //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));
 }
Ejemplo n.º 3
0
        private void DownloadNewFiles()
        {
            if (this.Packages == null)
            {
                return;
            }

            foreach (Package Pkg in this.Packages)
            {
                Pkg.DownloadNewFiles();
            }
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        private int GetDownloadedFileCount()
        {
            if (this.Packages == null)
            {
                return(0);
            }

            int Res = 0;

            foreach (Package Pkg in this.Packages)
            {
                Res += Pkg.GetDownloadedFileCount();
            }

            return(Res);
        }
Ejemplo n.º 8
0
        protected internal int GetDownloadedSize()
        {
            if (this.Packages == null)
            {
                return(0);
            }

            int Res = 0;

            foreach (Package Pkg in this.Packages)
            {
                Res += Pkg.GetDownloadedSize();
            }

            return(Res);
        }
Ejemplo n.º 9
0
        private void ApplyUpdates()
        {
            this.Progress.ChangeStatus("Aplicando actualizaciones...");

            if (this.Packages == null)
            {
                return;
            }

            foreach (Package Pkg in this.Packages)
            {
                if (Pkg.UpdatesReady())
                {
                    Pkg.ApplyUpdates();
                }
            }
        }
Ejemplo n.º 10
0
        private bool UpdatesReady()
        {
            if (this.Packages == null)
            {
                return(false);
            }

            foreach (Package Pkg in this.Packages)
            {
                if (Pkg.UpdatesReady())
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 11
0
        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);
            }
        }
Ejemplo n.º 12
0
    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_);
    }
Ejemplo n.º 13
0
 //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"));
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
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;
            }
        }
Ejemplo n.º 17
0
        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;
            }
Ejemplo n.º 18
0
 public PkgViewModel()
 {
     pkgName = "OS_Modified.pkg";
     Pkg     = new Pkg();
 }