Today PlayStation 3 homebrew developer Hykem (the Demon) made available PSXTract, which is a tool to decrypt / convert PSOne Classics from PSP / PS3 with details below.
Download: PSXTract Tool / psxtract.rar (Updated) / psxtract-updated.rar (Mirror) / psxtract-src.rar (converted to gcc as compiler, and some fixes) / GIT
From the ReadMe file: PSXTract
Tool to decrypt and convert PSOne Classics from PSP/PS3. Written by Hykem.
This tool allows you to decrypt a PSOne Classics EBOOT.PBP on your PC, using the emulated PSP method. It features a modified version of libkirk's source code to support DES encryption/decryption and the AMCTRL functions.
You may supply a KEYS.BIN file to the tool, but this is not necessary. Using the internal files' hashes, psxtract can calculate the key by itself.
Game file manual decryption is also supported (DOCUMENT.DAT).
For more details about the algorithms involved in the extraction process please check the following sources:
- PBP unpacking: github.com/pspdev/pspsdk/blob/master/tools/unpack-pbp.c
- PGD decryption: emunewz.net/forum/showthread.php?tid=3834 (initial research)
- code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/crypto/PGD.java (JPCSP)
- github.com/tpunix/kirk_engine/blob/master/npdrm/dnas.c (tpunix)
AMCTRL functions: code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/crypto/AMCTRL.java
(JPCSP): github.com/tpunix/kirk_engine/blob/master/kirk/amctrl.c (tpunix)
- Draan, Proxima and everyone involved in kirk-engine (libkirk source code)
- tpunix (C port and research of the PGD and AMCTRL algorithms)
- PSPSDK (PBP unpacking sample code)
Note for the people using this: Multi Disc ISO support isn't available. You may also expect some bugs with some of the isos.
Update: A small update. Hykem was able to add multi iso support, but the images usually turned out corrupted. I was able to fix that (no idea how though) so here (linked above) it is, psxtract with single and multidisc support.
If any of your discs doesn't work it's because it's probably copy protected. FFVIII didn't work for me until i tried the US version
Update #2: From zecoxao comes PSXClassics working with decompressed ISOs, with details as follows:
I posted on twitter (twitter.com/zecoxao/status/645718862416248833) it's simple to do. Forge edat, use psx2psp to forge eboot and pack everything up.
Credits to ZeroTolerance for the information and findings.. here are the tools (Windows only):
Download: psx_classics.zip (4.2 MB)
[Register or Login to view code]
1) create pbp file using ps1topsp tool without using any compression methods.
2) extraxt the data.psar from it (this file is required for creating ISO.BIN.EDAT)
3) extract iso headers and isos from data.psar
4) extract the sector table from iso header.
5) use hasher util with each iso and sector table to create the the table with proper sha1 hashes.
6) insert the hash tables to their iso headers
7) fix the iso offsets into iso headers.
8) create ISO.BIN.DAT using modified iso headers.
9) create ECDSA signature at the tail og the ISO.BIN.DAT
10) encrypt ISO.BIN.DAT to ISO.BIN.EDAT
11) make pkg
(Made by ZeroTolerance)
Apparently (and this is something Sony LOVES doing) they decided to use the code of a tool called PSX2PSP as their own and made psxclassics. The compression algo is there (although modified) and the isos come out uncompressed or compressed if we choose to.
The only 2 differences i've found so far (by using psxtract from Hykem) were that the crypto they use and PSX2PSP's (aparent lack of) crypto and the compression algo. Sorry for the clarification
I've added the rest of the tools to the main link. However, i still couldn't forge a proper pkg. I might need some help with it, after all
Just made it work. error was in decryption of ISO.BIN.EDAT with ps3tools.. it works fine with make npdata.
Proof of concept with game LSD - Dream Emulator:
Download: UP9000-NPPS01556_00-0000000000000001.pkg (621.0 MB)
The initial issue we had was actually compressing the isos, because sony uses a custom tlzrc algorithm that we don't know about. however, ZeroTolerance found out that it's possible to just put a decompressed inside and it'd work
I assume however, that what you're saying IS true. using decompressed isos should allow for a faster loading.
Ah, and i have no idea if this method works with OFW, since the tools to add ecdsa signature and the keys are still from 3.55 downwards, so it's possible that sony hasn't added protection measures yet.
We could theoretically use a bought ps1 classic from the store as template and use it to copy activation settings to another eboot/iso.bin.edat combination we'd forge. the only issue would be passing the data (either with data transfer or with an ODDE)
I've added proper tutorial and proper scripts to make almost everything automated. Only thing that has to be done by hand is to add the signature to ISO.BIN.DAT.
I've added the instructions and some scripts to make your life easier on the mega link (above). Please consult them, if you want to make a template for psx classics. Thanks.
More PlayStation 3 News...