UMD Net Ripper v0.1 by apv

UmdNetRipper copies recursively the whole UMD onto the network
using a very naive protocol (just printing "DIRECTORY: <dirname>"  
whenever it enters a new directory and "FILE: <filename>" when
starting with a new filedump. A simple listener program like
netcat can be used to capture the ripped data into a file. Then,
an unfold program can create the original file/directory structure.

Ripping a UMD over the wireless network is really fast compared
to copying it to the memory stick. Depending on the size of the
UMD and the speed of your network, it may take less than ten
minutes for a ~1GB dump. Barely enough time to pour a new cup
of coffee, right?

I have only tested it on a 1.50 machine, don't have the slightest
idea if it will work on a 1.00.

How to install/use (1.50):

  - on your PSP, create a connection with a *static* IP address
    (UmdNetRipper uses the first such connection it finds).

  - edit config.txt to reflect the IP address of your server
    (your PC for instance); you may also change the port from
    the default value 20000 into any other value you like.

  - copy the two sub folders UmdNetRip and UmdNetRip% under
    Drive:\PSP\GAME\ .

  - copy config.txt to Drive:\PSP\GAME\UmdNetRipper
  
  - on your PC, use any network listener that will dump a TCP
    stream into a file. I used netcat (nc), which I have
    included in the distribution (GNU License, I hope it was
    OK to do that, wasn't it?):

       nc.exe -l -p 20000 > file.rip
    
    (on Windows, you may see a message from your firewall, asking
    you whether to allow nc to listen to the network, it is safe
    to say yes here).

  - now go to your PSP, insert your favorite UMD, and activate
    the ripper.

  - the ripper will use the static connection, then it will try
    to connect to your PC at the address you specified in config.txt.
    If you are lucky, the ripper will recurse through the whole
    of the UMD, transferring each and every file to your PC (if
    you are not lucky, the rip will get "stuck" somewhere in the
    middle; dont give up; read on).

  - you will know if the rip ended successfully if you see a message
    on your PSP screen saying "Rip terminated successfully". Do not
    assume that it was successful if you do not see this.

  - terminate netct, pressing ^C, then create a subfolder on your
    PC, like "My Favorite Game", cd to it and issue
       ..\unfold ..\file.rip
    , where file.rip is the file you saved. Unfold will create the
    whole directory structure on your PC. From then on, you may
    use UMDGen or some other similar program to create an ISO file.
    Please avoid piracy!

  - if it got stuck, don't give up; you may retry. Most of the times,
    it will work over a couple of tries. If it insists on getting
    stuck, you may try resuming from the stuck point, by saving the
    nc output to a different file the second time and using the
    "skipupto" config directive to skip all the files that were
    correctly transferred the first time. You will then need to
    run 'unfold' twice, once for each rip file.

  - at any time, you may press HOME to exit. Occasionally, and for 
    reasons I do not know, it will stick when trying to exit, so
    you may need to pop out the battery. Most of the times it exits
    OK, though.

How to compile:

  - it should compile OK under PSPSDK. Nothing fancy is needed.

  - if you have cygwin (or Linux) plus PSPSDK, you may try a simple
    "make install". It will even copy the files to the PSP for you.

Free code:

  - you may do whatever you like with the code, like re-distributing
    it, hosting it, changing it or whatever. Please do mention the
    original in any case. Please try to share good add-ons, fixes,
    etc. with the rest of the community.

Fair use:

  - please do not use to pass pirated UMD copies to others.

  - enjoy!
