Skip to content

Commit

Permalink
See description
Browse files Browse the repository at this point in the history
I didn't actually change that much, but because GitHub views a change of
encoding or EOL as a change, most of the files appear to be changed.

Anyway, all I did was update the .gitignore file to be way more
universal, and I also updated all the copyright messages to include
GPLv3 and you as the creator.

The only other things I changed were cosmetic changes to blank
documents. I filled out the changelog, author, and other files to be
more complete.

Everything else should be largely unchanged, except I added a newline at
the end of every document so that certain applications and Linux
distributions would be more happy.

Hope everything goes OK with this commit. 😃
  • Loading branch information
DerekTurtleRoe committed Dec 11, 2015
1 parent ae502cc commit 0f4b729
Show file tree
Hide file tree
Showing 26 changed files with 823 additions and 627 deletions.
151 changes: 149 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,153 @@
*.o
# Linux stuff

# Only for Linux, not sure what it is for though...
*~

# Linux package management formats

*.dmg
*.xpi
*.gem
*.egg
*.deb
*.rpm

# KDE directory preferences
.directory

# Linux trash folder
.Trash-*

# Windows stuff

# Windows image thumbnail cache
[Tt]humbs.db
ehthumbs.db

# Windows folder config file
[Dd]esktop.ini

# Recycle bin used on file shares
$R[Ee][Cc][Yy][Cc][Ll][Ee].B[Ii][Nn]/
R[Ee][Cc][Yy][Cc][Ll][Ee][Rr]/

# Windows installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts and recent items links
*.lnk

# System restore data/restore points, Windows backup, volume shadow copy, content indexer, CHKDSK logs
System Volume Information/

# System Recovery boot image
[Rr][Ee][Cc][Oo][Vv][Ee][Rr][Yy]/

# Virtual Memory file
[Pp]agefile.sys

# Hibernation data
[Hh]iberfil.sys

# System boot files
boot/

# Cached MSI install files
[Cc][Oo][Nn][Ff][Ii][Gg].[Mm][Ss][Ii]
MSOCache/

# System performance logs
[Pp]erf[Ll]ogs/

# Mac stuff

._*
__MACOSX/
.DS_Store
.AppleDouble
.LSOverride
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.AppleDB
.AppleDesktop
.apdisk
Network Trash Folder
Temporary Items

# SVN

.svn/

# Mercurial/HG

.hg/
*/.hg/
*/.hgignore
.hgignore
.hgsigs
.hgsub
.hgsubstate
.hgtags

# CVS

/CVS/*
*/CVS/*
**/CVS/*
.cvsignore
*/.cvsignore

# TortoiseGit config file

/.tgitconfig

# Temporary and backup files

*.tmp
*.bak

# Microsoft Office temporary files

~$*.doc*
~$*.xls*
*.xlk
~$*.ppt*

# LibreOffice locks
.~lock.*#

# Compressed and packed data

*.7z
*.rar
*.zip
*.tar
*.gz
*.bzip
*.bz2
*.xz
*.lzma
*.iso
*.img
*.ccd
*.nrg

# Compiled binaries

*.jar
*.exe
*.com
*.cmd

# stuff for this project
*.o
tst_sc_encrypt
ps3xport
.deps/
Expand All @@ -18,4 +166,3 @@ install-sh
ltmain.sh
missing
stamp-h1

Empty file removed ABOUT-NLS
Empty file.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Copyright (C) 2015 Kakaroto
8 changes: 8 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Changelog

v0.2
Fix issue #3: ExtractFile pulls out the wrong data
Port to Windows

v0.1
Initial release
1 change: 0 additions & 1 deletion INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -362,4 +362,3 @@ operates.

`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

3 changes: 1 addition & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Makefile.am for ps3xport
#
# Licensed under LGPL 2.1. See file COPYING.
# Licensed under GPL v3. See file COPYING.

ERROR_CFLAGS = \
$(PS3XPORT_CFLAGS) \
Expand Down
5 changes: 5 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
December 31, 2014
v0.2 released!

November 22, 2011
v0.1 released!
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
PS3xport : PS3/EXPORT Backup Manipulation Utility
PS3xport : PS3/EXPORT backup manipulation utility
---

PS3xport is a utility for manipulating PS3 Backup archives. It can create a fully working backup from scratch, as well as extract files from existing backups or rename, delete or add new files to an existing backup.
PS3xport is a utility for manipulating PS3 backup archives. It can create a fully working backup from scratch, as well as extract files from existing backups or rename, delete or add new files to an existing backup.

# PS3 Backup files
A PS3 Backup is created from the `System Settings -> Backup Utility -> Backup` menu on the XMB. It requires the use of a FAT32 formatted hard drive and it will create the backup as a subdirectory of the directory *PS3/EXPORT/* named with the current date and time. For example : *D:/PS3/EXPORT/201412242359*
# PS3 backup files
A PS3 backup is created from the `System Settings -> Backup Utility -> Backup` menu on the XMB. It requires the use of a FAT32-formatted storage and it will create the backup as a sub-directory of the directory *PS3/EXPORT/* named with the current date and time. For example : *D:/PS3/EXPORT/201412242359*

The Backup directory will contain the following files :

Expand All @@ -13,7 +13,7 @@ The Backup directory will contain the following files :
* archive2.dat - This will be the "**Index** file" of your copy-protected files
* archive2_00.dat, archive2_01.dat, archive2_02.dat, etc.. - These are the "**Data** files" for your copy-protected data

As you can see, there are two types of files, **Index** files and **Data** files. The Index files will contain the list of all the files and directories in the Data files while the Data files will only contain data. There are also two types of backups, regular files and copy-protected files. The copy-protected files are for your PSN games, copy-protected save files and the like. The copy-protected files are encrypted with your unique PS3 device ID so they cannot be decrypted on another PS3.
As you can see, there are two types of files, **Index** files and **Data** files. The index files will contain the list of all the files and directories in the data files while the data files will only contain data. There are also two types of backups, regular files and copy-protected files. The copy-protected files are for your PSN games, copy-protected save files and the like. The copy-protected files are encrypted with your unique PS3 device ID so they cannot be decrypted on another PS3.
The archive.dat files will not be encrypted with your PS3's *Device ID* so they can be restored on any PS3. However, the file does contain your *OpenPSID* which tells the PS3 from which console the backup was created. Not having the right PSID set in a backup has little significance, other than the fact that when restoring it, the PS3 will show a warning about the backup being restored from a different PS3.

# Tool Usage
Expand Down Expand Up @@ -60,23 +60,23 @@ Here is the usage of the tool :

The tool needs access to the PS3 keys in order to function. You can give it the path of the *keys.conf* file using the **SetKeysFile** command. If it is not specified, then the tool will first look for the *keys.conf* file in the current directory, then in the directory defined by the environment variable __*PS3\_KEYS\_PATH*__ if it exists, then in the `.ps3` directory in the home directory. The keys.conf file needs to have a key of type '**sc**' with revision 3.

You can set the Device ID with the **SetDeviceID** command and give it the Device ID (also known as IDP) either as a hex string or by specifying the filename to a 16-byte binary file containing the device id. The same can also be used for setting the OpenPSID of the console with the **SetPSID** command.
You can set the Device ID with the **SetDeviceID** command and give it the Device ID (also known as IDP) either as a hex string or by specifying the file name to a 16-byte binary file containing the device id. The same can also be used for setting the OpenPSID of the console with the **SetPSID** command.

If you need to find the OpenPSID of your console, you can simply create a backup and use the **ExtractPSID** command, specifying the backup directory and a filename to which to write the PSID as a binary file.
If you need to find the OpenPSID of your console, you can simply create a backup and use the **ExtractPSID** command, specifying the backup directory and a file name to which to write the PSID as a binary file.

Note that those settings are not permanent, so for them to be used by the tool, they need to precede another command which requires them. See examples for more information.

You can use the **ReadIndex** and **ReadData** commands to read the **Index** (archive.dat or archive2.dat) and **Data** files (archive_XX.dat or archive2_XX.dat) and print information about them. Using the **ReadIndex** command will list all the files and directories in the index file with their full path, sizes and permissions, etc.. as well as any additional data available in the index file, such as the backup's unique ID, the console's PSID, the size of the copy-protected data, etc.. Using the **ReadData** command will simply output the backup's unique ID, the index of the data file (the files must be sequential), and will make sure that the files are not corrupted by hashing the entire data file. Note that for Copy-Protected files (archive2[_XX].dat), the DeviceID must be set.
You can use the **ReadIndex** and **ReadData** commands to read the **Index** (archive.dat or archive2.dat) and **Data** files (archive_XX.dat or archive2_XX.dat) and print information about them. Using the **ReadIndex** command will list all the files and directories in the index file with their full path, sizes and permissions, etc...as well as any additional data available in the index file, such as the backup's unique ID, the console's PSID, the size of the copy-protected data, etc.. Using the **ReadData** command will simply output the backup's unique ID, the index of the data file (the files must be sequential), and will make sure that the files are not corrupted by hashing the entire data file. Note that for copy-protected files (archive2[_XX].dat), the DeviceID must be set.

The **Decrypt** command can be useful for debugging a file or for better understanding the file format. It will simply take a .dat file and decrypt it for you, either using a PS3 static key for archive.dat files or the Device ID for archive2.dat files.

The **Dump** command will extract an entire backup to the given destination directory. Note that in order to extract copy-protected content, you need to set the DeviceID first. If you wish to extract only a specific file, you can instead use the **ExtraFile** command and specify the file you want extracted. For even more freedom you can also use the **ExtractPath** command which will extract every file and directory which matches the path specified.

To delete a file from a backup, use the **DeleteFile** or **DeletePath** commands. They will basically just rename the file into the /dev_hdd0/tmp/null file as deleting a file would require the regeneration of the entire backup file.

The **DeleteProtected** command however will affect the archive.dat file so it acts as if there is no archive2.dat file that comes with it, thus removing the copy-protected content from the backup. This will mostly have the effect of disabling the warning on the PS3 when the backup is restored on a different PS3 that some of the data could not be restored.
The **DeleteProtected** command, however, will affect the archive.dat file so it acts as if there is no archive2.dat file that comes with it, thus removing the copy-protected content from the backup. This will mostly have the effect of disabling the warning on the PS3 when the backup is restored on a different PS3 that some of the data could not be restored.

To add new files to the backup, use the *Add* and *AddProtected** commands. They will recursively add all the files specified to the backup. You can also create a backup from scratch with the **CreateBackup** command, giving it the backup directory to create, the directory for the content and for the copy-protected content. You can set either one of the directories to `-` in order to ignore that directory.
To add new files to the backup, use the *Add* and *AddProtected** commands. They will recursively add all the files specified to the backup. You can also create a backup from scratch with the **CreateBackup** command, giving it the backup directory to create, the directory for the content, and the directory for the copy-protected content. You can set either one of the directories to `-` in order to ignore that directory.

# Examples

Expand Down
Loading

0 comments on commit 0f4b729

Please sign in to comment.