Fix reading directly from the disc

Getting the file size with os.stat() does not work with block devices.

You can now:

  libray -i /dev/sg0 -o test.iso
This commit is contained in:
Gabriel Corona 2019-07-06 23:15:10 +02:00
parent b9a9e6c18d
commit 4cec6b92e5
2 changed files with 14 additions and 4 deletions

View file

@ -56,10 +56,17 @@ required arguments:
-i ISO, --iso ISO Path to .iso file -i ISO, --iso ISO Path to .iso file
``` ```
Rip a PS3 to .ISO with an appropriate blu-ray drive: https://rpcs3.net/quickstart (see "Compatible Blu-ray disc drives section"). You need to use an appropriate blu-ray drive: https://rpcs3.net/quickstart (see "Compatible Blu-ray disc drives section").
Then just feed the .ISO to libray which will try to download an IRD decryption file for your iso.
Example: On some systems (eg. Linux), you can decrypt directly from the disc.
```
libray -i /dev/sr0 -o ps3_game_decrypted.iso
```
Libray will try to download an IRD decryption file for your iso:
Alternatively, you can first rip the disc to an ISO file and then decrypt from the ISO file:
``` ```
libray -i ps3_game.iso -o ps3_game_decrypted.iso libray -i ps3_game.iso -o ps3_game_decrypted.iso

View file

@ -58,7 +58,10 @@ ISO_IV = to_bytes("69474772af6fdab342743aefaa186287")
def filesize(filename): def filesize(filename):
"""Get size of a file in bytes from os.stat""" """Get size of a file in bytes from os.stat"""
return os.stat(filename).st_size try:
return open(filename, "rb").seek(0, 2)
except:
return os.stat(filename).st_size
def read_seven_bit_encoded_int(fileobj, order): def read_seven_bit_encoded_int(fileobj, order):