Since yesterday's PS4 PKG Backporting updates PlayStation 4 scene developer maxton of Maxton.xyz announced on Twitter that he updated the LibOrbisPkg PKGTool (LibOrbisPkg PkgEditor) adding support for EKPFS / XTS keys to access an encrypted PKG's file system alongside a keydb.json file to store the keys eliminating the need to paste them in every time a Package is opened.
Download: PKGEditor (Latest Builds) / GIT / PkgEditor-0.1.214.rar (102 KB) / pkgtool-linux-x64.7z (128 KB) via @KIWIDOGGIE aka kd_tech_ on X
He notes keys are now saved to a JSON file located at %AppData%/LibOrbisPkg/keydb.json
To quote from the README.md: LibOrbisPkg
I am developing an open source library for reading and writing PS4 PKG files. This project's goal is to eliminate the need to use proprietary *** tools. Without a proper open PKG tool, the PS4 homebrew scene cannot flourish.
All code in this repository is licensed under the GNU LGPL version 3, which can be found in LICENSE.txt.
Download
The latest builds are available to download at AppVeyor.
Usage
PkgEditor
PkgEditor is a GUI tool with which you can edit GP4 projects, create and edit SFO files, and build PKG and PFS archives. The tool also supports opening PKGs directly. You can see the header, entries, and if the package is a fake PKG or you enter a passcode, you can browse files as well.
PkgTool
PkgTool is a command line tool for common PKG/PFS/SFO tasks. Integrate it into your build scripts!
Thanks
Everyone who helped, either directly or indirectly, but especially the following:
PkgEditor is a GUI tool. You can work with GP4 projects, PKG files, and SFO files.
Usage guide:
Creating PKGs with GP4 Projects
The contents and layout of a PKG file are defined in GP4 project files. PkgEditor allows you to create and edit GP4 files. To create a GP4 project, click File->New->GP4 Project, and choose a name and location for your GP4 project. You can also open an existing project with File->Open.
PKGs require a content id, which should have the format XXXXXX-YYYY00000_00-ZZZZZZZZZZZZZZZZ and be exactly 36 characters long. This uniquely identifies the PKG and should not be shared between any two PKG files.
PKGs also require a passcode, but because we are making fake PKGs this passcode doesn't do anything to prevent people from accessing the PKG's files. You can still set a custom passcode if you want.
If you're making an additional content (DLC) fake PKG, you will need to enter an entitlement key. A default one of all zeroes is provided by default.
Add folders to the PKG by right-clicking in the file view (right side) and choosing New Folder. You can also drag a folder or files into this view, which will add the file or folder and its subfolders and files.
You can enter a Volume Timestamp which will be used as the file timestamp in the PFS image, and the Creation Date which will be put into the PARAM.SFO at build time. Checking the Use time of build? checkbox will override the creation date to whatever the current time is when you build the PKG. Checking the Include time? checkbox will include the date and time in the creation date, while leaving it unchecked will leave just the date (day/month/year).
All PKGs need a param.sfo file in the Image0/sce_sys directory. You should create an SFO with File->New->SFO File, create the SFO, and then add it to the Image0/sce_sys directory by dragging and dropping into the file view.
Click Build PKG when you're done adding files. It will ask for an output filename, the default is the content id.
The Build PFS button is for debugging purposes, you can probably ignore that.
Opening PKGs
Click File->Open and select your PKG file. Double click on the PARAM_SFO entry in the Entries tab to open it in a new tab. Browse and extract files in the Files tab. Right click files to extract.
Editing SFO Files
Click File->Open to open an existing SFO file, or click File->New->SFO File to create a new one.
A user-friendly editor is currently being worked on. You can click the Defaults->Load <..> defaults buttons to get a template for an AC or GD game package. Click on a key/value pair in order to modify it. The changes are reflected in real time in the table. There is not currently an undo feature, but changes are not written to the file until you press Ctrl-S or File->Save.
Download: PKGEditor (Latest Builds) / GIT / PkgEditor-0.1.214.rar (102 KB) / pkgtool-linux-x64.7z (128 KB) via @KIWIDOGGIE aka kd_tech_ on X
He notes keys are now saved to a JSON file located at %AppData%/LibOrbisPkg/keydb.json
To quote from the README.md: LibOrbisPkg
I am developing an open source library for reading and writing PS4 PKG files. This project's goal is to eliminate the need to use proprietary *** tools. Without a proper open PKG tool, the PS4 homebrew scene cannot flourish.
All code in this repository is licensed under the GNU LGPL version 3, which can be found in LICENSE.txt.
Download
The latest builds are available to download at AppVeyor.
Usage
PkgEditor
PkgEditor is a GUI tool with which you can edit GP4 projects, create and edit SFO files, and build PKG and PFS archives. The tool also supports opening PKGs directly. You can see the header, entries, and if the package is a fake PKG or you enter a passcode, you can browse files as well.
PkgTool
PkgTool is a command line tool for common PKG/PFS/SFO tasks. Integrate it into your build scripts!
Code:
Usage: PkgTool.exe <verb> [options ...]
Verbs:
pfs_buildinner <input_project.gp4> <output_pfs.dat>
Builds an inner PFS image from the given GP4 project.
pfs_buildouter [--encrypt] <input_project.gp4> <output_pfs.dat>
Builds an outer PFS image, optionally encrypted, from the given GP4 project.
pfs_extract [--verbose] <input.dat> <output_directory>
Extracts all the files from a PFS image to the given output directory. Use the verbose flag to print filenames as they are extracted.
pkg_build <input_project.gp4> <output_directory>
Builds a fake PKG from the given GP4 project in the given output directory.
pkg_extract [--verbose] [--passcode <...>] <input.pkg> <output_directory>
Extracts all the files from a PKG to the given output directory. Use the verbose flag to print filenames as they are extracted.
pkg_extractentry [--passcode <...>] <input.pkg> <entry_id> <output.bin>
Extracts the selected entry from the given PKG file.
pkg_extractinnerpfs [--passcode <...>] <input.pkg> <output_pfs.dat>
Extracts the inner PFS image from a PKG file.
pkg_extractouterpfs [--encrypted] [--passcode <...>] <input.pkg> <pfs_image.dat>
Extracts and decrypts the outer PFS image from a PKG file. Use the --encrypted flag to leave the image encrypted.
pkg_listentries <input.pkg>
Lists the entries in a PKG file.
pkg_makegp4 [--passcode <...>] <input.pkg> <output_dir>
Extracts all content from the PKG and creates a GP4 project in the output directory
pkg_validate [--verbose] <input.pkg>
Checks the hashes and signatures of a PKG.
sfo_deleteentry <param.sfo> <entry_name>
Deletes the named entry from the SFO file.
sfo_listentries <param.sfo>
Lists the entries in an SFO file.
sfo_new <param.sfo>
Creates a new empty SFO file at the given path.
sfo_setentry [--value <...>] [--type <...>] [--maxsize <...>] [--name <...>] <param.sfo> <entry_name>
Creates or modifies the named entry in the given SFO file.
Everyone who helped, either directly or indirectly, but especially the following:
- flatz
- idc
PkgEditor is a GUI tool. You can work with GP4 projects, PKG files, and SFO files.
Usage guide:
Creating PKGs with GP4 Projects
The contents and layout of a PKG file are defined in GP4 project files. PkgEditor allows you to create and edit GP4 files. To create a GP4 project, click File->New->GP4 Project, and choose a name and location for your GP4 project. You can also open an existing project with File->Open.
PKGs require a content id, which should have the format XXXXXX-YYYY00000_00-ZZZZZZZZZZZZZZZZ and be exactly 36 characters long. This uniquely identifies the PKG and should not be shared between any two PKG files.
PKGs also require a passcode, but because we are making fake PKGs this passcode doesn't do anything to prevent people from accessing the PKG's files. You can still set a custom passcode if you want.
If you're making an additional content (DLC) fake PKG, you will need to enter an entitlement key. A default one of all zeroes is provided by default.
Add folders to the PKG by right-clicking in the file view (right side) and choosing New Folder. You can also drag a folder or files into this view, which will add the file or folder and its subfolders and files.
You can enter a Volume Timestamp which will be used as the file timestamp in the PFS image, and the Creation Date which will be put into the PARAM.SFO at build time. Checking the Use time of build? checkbox will override the creation date to whatever the current time is when you build the PKG. Checking the Include time? checkbox will include the date and time in the creation date, while leaving it unchecked will leave just the date (day/month/year).
All PKGs need a param.sfo file in the Image0/sce_sys directory. You should create an SFO with File->New->SFO File, create the SFO, and then add it to the Image0/sce_sys directory by dragging and dropping into the file view.
Click Build PKG when you're done adding files. It will ask for an output filename, the default is the content id.
The Build PFS button is for debugging purposes, you can probably ignore that.
Opening PKGs
Click File->Open and select your PKG file. Double click on the PARAM_SFO entry in the Entries tab to open it in a new tab. Browse and extract files in the Files tab. Right click files to extract.
Editing SFO Files
Click File->Open to open an existing SFO file, or click File->New->SFO File to create a new one.
A user-friendly editor is currently being worked on. You can click the Defaults->Load <..> defaults buttons to get a template for an AC or GD game package. Click on a key/value pair in order to modify it. The changes are reflected in real time in the table. There is not currently an undo feature, but changes are not written to the file until you press Ctrl-S or File->Save.