The current docs focus on working from a Windows perspective, but I've figured out how to do so under Linux. The patching is fine via Wine, the only difficulty is decryption.
The tool to download is https://web.archive.org/web/20140820195811/http://www.3k3y.com/IsoTools/IsoTools-1.34.7.msi. Run under Wine and install the software, then run wineconsole in the terminal. Cd to ~/.wine/drive_c/Program Files (x86)/IsoTools, and run isotoolscon.exe crypt -i Z:/path/to/game/file.iso and wait for it to finish.
EDIT: you run into the possibility of running into this:
Game ID: BCUS-98259 Processing plain region 0 (00-8BF) Processing decrypted region 1 (8C0-3E1EFF) [---- ] ETA: 0:08:28[E RROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0
Processing plain region 0 (00-8BF) Processing decrypted region 1 (8C0-3E1EFF) [---- ] ETA: 0:08:28[E RROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74
Processing decrypted region 1 (8C0-3E1EFF) [---- ] ETA: 0:08:28[E RROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0
[---- ] ETA: 0:08:28[E RROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9
RROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0
not set to an instance of an object at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [
at System.Threading.Tasks.Task.FinishContinuations () [0x000a5] in <773ec02b42 f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0
f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks.
at System.Threading.Tasks.Task.FinishStageThree () [0x0003c] in <773ec02b42f74 a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0
a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec
at System.Threading.Tasks.Task.FinishStageTwo () [0x000d4] in <773ec02b42f74a9 18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0
18ccd74911c8063c9>:0 at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor
at System.Threading.Tasks.Task.Finish (System.Boolean bUserDelegateExecuted) [ 0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0
0x00036] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7
at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks. Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0
Task& currentTaskSlot) [0x00067] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i
at System.Threading.Tasks.Task.ExecuteEntry (System.Boolean bPreventDoubleExec ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
ution) [0x00058] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWor kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
kItem () [0x00000] in <773ec02b42f74a918ccd74911c8063c9>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in <773ec02b42f7 4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
4a918ccd74911c8063c9>:0 at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] i n <773ec02b42f74a918ccd74911c8063c9>:0
n <773ec02b42f74a918ccd74911c8063c9>:0
Quickstart guide links to the portable latest version of IsoTools, which you can run with mono
You probably meant to file this to the website project
When you say "run with mono," do you mean install the Windows version of mono under Wine or is there something else?
I just wanted to put it somewhere that could access documentation. Once I get this figured out I'll post the issue over there.
You can run .net applications with mono even if it's a .exe
@hch12907 what version of mono are you using? Both before and after compiling to native I just get a black screen.
Decryption using IRD file is really simple. Relying on forum-released non open-source software for doing this is kinda sad.
Moreover, the tutorial makes it a lot more complicated than it should be, relying on three different softwares. It's actually a lot simpler (especially on UNIX-ish systems). You have to:
/dev/sdaXX to a temporary file (deriving the disc encryption key from data1 found in the IRD file);I don't get why the official tutorial need both PS3 ISO Patcher and 3k3y IsoTools.
I think I accidentally added a negative reaction, but thank you, @randomstuff! I'll take a stab at it some time over the weekend.
EDIT: Can you explain to me which files to decrypt and what commands need to be sent? I'm trying to parse the page you put in, but I don't usually touch encryption stuff.
The encryption happens at the disc-image/sector level. Not at the file level.
The SCSI commands are only useful for deriving the encryption data from the disc (you apparently need a special BD drive for that). Otherwise you can use the data from the IRD file of the disc.
Quickstart contains instructions for using LibRay on Linux, and the PS3 Disc Dumper now has a Linux version too, closing as solved
Most helpful comment
Decryption using IRD file is really simple. Relying on forum-released non open-source software for doing this is kinda sad.
Moreover, the tutorial makes it a lot more complicated than it should be, relying on three different softwares. It's actually a lot simpler (especially on UNIX-ish systems). You have to:
/dev/sdaXXto a temporary file (deriving the disc encryption key from data1 found in the IRD file);I don't get why the official tutorial need both PS3 ISO Patcher and 3k3y IsoTools.