2018-07-07 00:38:10 +02:00
# LibRay
2018-06-20 22:28:52 +02:00
LibRay: A portmanteau of Libre and Blu-Ray
2019-07-07 21:18:34 +02:00
LibRay aims to be a Libre (FLOSS) Python application for unencrypting,
2018-06-20 22:28:52 +02:00
extracting, repackaging, and encrypting PS3 ISOs.
A hackable, crossplatform, alternative to ISOTools and ISO-Rebuilder.
2019-06-07 09:00:03 +02:00
**Note: this is still a very beta project, report any bug you see!**
2019-05-16 10:37:28 +02:00
## How to install
2019-06-07 09:19:33 +02:00
Note: You will need Python 3, so you might want to use `python3` and `pip3` instead of `python` and `pip` depending on your system.
### From PyPi:
1. `sudo pip install libray`
### Manually:
2019-05-16 10:37:28 +02:00
1. Clone this repository ```git clone https://notabug.org/necklace/libray` ``
2. Install dependencies with ```sudo pip install -r requirements.txt` ``
3. Run ```sudo python setup.py install` ``
2019-06-07 09:19:33 +02:00
### From AUR:
For Arch or Arch-based GNU/Linux distributions there's an option to [install libray from the AUR ](https://aur.archlinux.org/packages/libray-git/ ) (Arch User Repository).
2019-07-07 21:18:34 +02:00
You will need an [AUR helper ](https://wiki.archlinux.org/index.php/AUR_helpers ) (of which there are many).
2019-06-07 09:19:33 +02:00
Then you will need to run the appropriate install command for that AUR helper using `libray-git` as package name.
This will essentially automatically do the manual method for you.
### Done!
2019-05-16 10:37:28 +02:00
2019-06-07 09:19:33 +02:00
`libray` is now installed to your path.
2019-05-16 10:37:28 +02:00
2019-05-16 10:44:07 +02:00
## How do I use it?
```
2019-11-02 22:16:34 +01:00
usage: libray [-h] -i ISO [-o OUTPUT] [-k IRD] [-v]
2019-05-16 10:44:07 +02:00
A Libre (FLOSS) Python application for unencrypting, extracting, repackaging,
and encrypting PS3 ISOs
2019-11-02 22:16:34 +01:00
required arguments:
-i ISO, --iso ISO Path to .iso file or stream
2019-05-16 10:44:07 +02:00
optional arguments:
-o OUTPUT, --output OUTPUT
Output filename
-k IRD, --ird IRD Path to .ird file
2019-11-02 22:16:34 +01:00
-v, --verbose Increase verbosity
2019-05-16 10:44:07 +02:00
```
2019-11-02 22:16:34 +01:00
First off, even before you install libray, you will need a compatible Blu-Ray drive that can read PS3 discs.
There's a compiled list of compatible drives here: [https://rpcs3.net/quickstart ](https://rpcs3.net/quickstart ) ([archive ](https://web.archive.org/web/20190801060739/https://rpcs3.net/quickstart] )) (see "Compatible Blu-ray disc drives section").
2019-05-16 10:44:07 +02:00
2019-07-06 23:15:10 +02:00
On some systems (eg. Linux), you can decrypt directly from the disc.
```
libray -i /dev/sr0 -o ps3_game_decrypted.iso
```
2019-08-01 08:23:04 +02:00
Libray will automatically try to download an IRD decryption file for your iso. If you don't have internet connection, but you do have an .ird file you can specify that:
```
libray -i /dev/sr0 -k game_ird_file.ird -o ps3_game_decrypted.iso
```
2019-07-06 23:15:10 +02:00
Alternatively, you can first rip the disc to an ISO file and then decrypt from the ISO file:
2019-05-16 10:44:07 +02:00
```
libray -i ps3_game.iso -o ps3_game_decrypted.iso
```
Then, if you want to feed it into RPCS3 just extract the contents of the .ISO:
```
7z x nfs_ps3_decrypted.iso
```
2019-07-07 21:18:34 +02:00
And move the resulting folders into the appropriate folder for RPCS3:
- Linux: /home/username/.config/rpcs3/dev_hdd0/disc/
2019-05-16 10:44:07 +02:00
2019-05-16 10:37:28 +02:00
## License
2019-08-01 08:23:04 +02:00
This project is Free, Libre, and Open Source Software; FLOSS, licensed under the GNU General Public License version 3. GPLv3.
2018-06-20 22:28:52 +02:00
2019-08-01 08:42:14 +02:00
See also COPYING or LICENSE.txt
Copyright © 2018 - 2019 Nichlas Severinsen
2019-05-16 10:37:28 +02:00
## Error!
2019-07-07 21:18:34 +02:00
Help! I get
2019-05-16 10:37:28 +02:00
> ImportError: No module named Crypto.Cipher
or
> ImportError: cannot import name 'byte_string' from 'Crypto.Util.py3compat' (/usr/lib/python3.7/site-packages/Crypto/Util/py3compat.py)
This is due to multiple similarly named python crypto packages, one way to fix it is:
```
sudo pip uninstall crypto
sudo pip uninstall pycrypto
sudo pip install pycrypto
```
2019-11-02 22:16:34 +01:00
If you get any other errors, or have any other problem with libray, please [create an issue ](https://notabug.org/necklace/libray/issues/new )!
2019-05-16 10:37:28 +02:00
## Development
2018-07-09 07:40:41 +02:00
2019-07-07 21:18:34 +02:00
[see also ](http://www.psdevwiki.com/ps3/Bluray_disc#Encryption ) ([archive.fo ](https://archive.fo/hN1E6 ))
2018-06-21 22:02:47 +02:00
2019-11-02 22:16:34 +01:00
[7bit encoded int / RLE / CLP ](https://github.com/microsoft/referencesource/blob/1acafe20a789a55daa17aac6bb47d1b0ec04519f/mscorlib/system/io/binaryreader.cs#L582-L600 )
2018-06-21 22:02:47 +02:00
clp = compressed length prefix
2018-07-07 00:38:10 +02:00
2018-07-09 07:40:41 +02:00
## Todo
2018-07-07 00:38:10 +02:00
- Extract ISO (currently doable with `7z x output.iso`
2019-06-07 09:00:03 +02:00
- Repackage (unextract) and reencrypt iso?
2018-07-09 07:40:41 +02:00
- Test .irds with version < 9
- Custom command to backup all irds available
2019-07-07 21:18:34 +02:00
- Unit tests