PFU is a Python tool for extracting and analyzing PS4 firmware update files (PUPs). It provides an easy way to unpack and inspect the contents of PUP packages.
- Extracts all files and metadata from PUP archives
- Prints extensive details about the package contents, including:
- Firmware version
- Number of files contained
- Installation instructions
- File paths
- File sizes
- SHA-256 hashes
- Intuitive GUI to select PUP files to unpack
- Saves extracted files to output directory
- Actively maintained and open source
PFU requires Python 3 and the following modules:
- tkinter
- struct
- lzma
- pycryptodome
Install dependencies with:
pip install tkinter struct lzma pycryptodome
- Clone the GitHub repository:
git clone https://github.com/seregonwar/Pup-file-extractor.git
- Install dependencies:
pip install -r requirements.txt
- Run the script with:
python pup_unpacker.py
- Use the dialog to select a PUP file.
- The content will be extracted to your working directory.
The pup_unpacker.py
script has extensive documentation on all functions and classes. Developers can easily integrate the PUP extraction functionality into their applications.
See the wiki for more usage details.
pup_unpacker.py
: Main GUI script to select and extract PUP files.pup_decrypt_tool.py
: Tool to decrypt PUP files.ps4_dec_pup_info.py
: Module to extract information from decrypted PUP files.pup_module.py
: Module to manage the PUP file extraction logic.Pupfile.py
: Module to read and interpret PUP files.
The PUP extraction logic was adapted from ps4_dec_pup_info by SocraticBliss.
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is only for educational and investigative purposes. I am not responsible for any misuse or damage caused by this tool.
The development of this software is currently at a standstill. The code is complete and partially fulfills its intended functionality, but I am seeking a way to decrypt all update files encrypted with AES-256. The PFU feature is finished, but it cannot fully and properly extract the files. If I had access to Sony’s encryption keys and integrated them into the code, the decryption process would be much simpler. I will continue to release patches to address any bugs.