Readme
PS3 Decryptor
PS3Dec is a remake of the original PS3 decryptor which decrypts PS3s redump ISOs.
the original one was written in C around 11 years ago, the sole reason I rewrote this one is for learning Rust and making my own slightly faster version to add features later anytime I want.
also I love ps3.
How does it work ?
According to PSDev Wiki
a Blu-ray disc consists of sectors with a length of
2048 bytes.
Encryption:
Some regions are encrypted some are not
Usually even numbered regions are encrypted and odd numbered regions are not encrypted
the encryption used is AES-128 in CBC mode with no padding
What is simply done is using a decryption key and decrypting what needs to be decrypted as for the rest it is directly
written to disk without
keeping the data in memory.
Demo
Decrypting MX vs. ATV Untamed (USA) in less than 2 seconds on a fast enough rig! sometimes increasing the thread count too high might add a slight overhead for the dec process to start.
Please bear in mind this demonstration is done on some very idealistic conditions with a very good CPU and a good SSD.
https://github.com/user-attachments/assets/978c1827-d788-449a-a52f-6743e94cb4db
Usage
Option
Description
Note
--iso
For the ISO file
--dk
For decryption key, a base-16 hex key
--tc
Thread count, specifies the number of threads
Be careful with this one
--auto
Enables automatic key detection and decryption
Will only work if there is the key in the keys folder
--skip
Disables the press any key to exit after decryption
--output_dir
output directory destination for the decrypted iso
--output_name
output file name for the decrypted iso
--chunk-size
how big the chunk of the iso is processed at the same time in MIB
Read down below about chunk size section.
ps3dec. exe - - iso game. iso - - dk yourdecryptionkey - - tc 64 - - chunk- size 16
If you don't want to keep changing your decryption key every time you can use --auto flag , which will look
inside a folder called keys containing the entire PS3 keys library which you can fetch from aldostools dkey database
here Aldostools dkeys , to note that only .dkey files containing a base-16 hex
key are compatible.
ps3dec. exe - - iso game. iso - - auto - - tc 64
about chunk size parameter
I have added a new flag called --chunk-size It defines how many bytes you read, decrypt, and write per thread!
we batch sectors in a chunk and decrypt them then write to disk.
this was a request, and I am not sure how much benefit this can bring besides tweaking ram and disk usage.
Building PS3dec
This works for macOS, Linux and windows
Install Rust from https://rustup.rs/
Clone the repository run git clone https://github.com/Redrrx/ps3dec
cd ps3dec
make sure to close and reopen your terminal for proper rust install to be recognized
cargo build -- release
the output would be at /target
If on linux run chmod+ x target/ release/ ps3dec to make ps3dec an executable.
a very small note around here, if there's an issue that is specifically related to a library when it's targeting a platform I don't have much I can do about it, but you can fork the repository and find a replacement or a custom implementation, but this is unlikely as most of the libraries used are not reliant on any critical platform specific implementations and mostly standard ie: win api etc...
Run cargo check to check for compatibility:
cargo check -- target < target-triple>
Use this command to add your new target platform
rustup target add < target-triple>
Then build for the target using:
cargo build -- release -- target < target-triple>
more on targets here
Releases types
If you visit the releases page you might find two types
Stable == ready to use, reliable enough.
Preview == trying out requests, and toying around before stable.
Acknowledgements