diff --git a/_Projects_/ps3netsrv/Makefile b/_Projects_/ps3netsrv/Makefile index 6232ca8e..b09f79de 100644 --- a/_Projects_/ps3netsrv/Makefile +++ b/_Projects_/ps3netsrv/Makefile @@ -17,6 +17,10 @@ CPPFLAGS += -Wall -Wno-format -I./include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_B #CFLAGS += -DMAKEISO #CPPFLAGS += -DMAKEISO +#CFLAGS += -DNO_UPDATE +#CPPFLAGS += -DNO_UPDATE +#OUTPUT := makeiso_rip + #CFLAGS += -DNOSSL #CPPFLAGS +=-DNOSSL #OBJS = src/main.o src/compat.o src/mem.o src/File.o src/VIsoFile.o diff --git a/_Projects_/ps3netsrv/Makefile.linux b/_Projects_/ps3netsrv/Makefile.linux index fa527d81..2ec8b9cc 100644 --- a/_Projects_/ps3netsrv/Makefile.linux +++ b/_Projects_/ps3netsrv/Makefile.linux @@ -14,6 +14,10 @@ CPPFLAGS += -Doff64_t=off_t #CFLAGS += -DMAKEISO #CPPFLAGS += -DMAKEISO +#CFLAGS += -DNO_UPDATE +#CPPFLAGS += -DNO_UPDATE +#OUTPUT := makeiso_rip + #CFLAGS += -DNOSSL #CPPFLAGS +=-DNOSSL #OBJS = src/main.o src/compat.o src/mem.o src/File.o src/VIsoFile.o diff --git a/_Projects_/ps3netsrv/Makefile.macos b/_Projects_/ps3netsrv/Makefile.macos index 71d0c27e..99aefe55 100644 --- a/_Projects_/ps3netsrv/Makefile.macos +++ b/_Projects_/ps3netsrv/Makefile.macos @@ -14,6 +14,10 @@ CPPFLAGS += -Doff64_t=off_t #CFLAGS += -DMAKEISO #CPPFLAGS += -DMAKEISO +#CFLAGS += -DNO_UPDATE +#CPPFLAGS += -DNO_UPDATE +#OUTPUT := makeiso_rip + #CFLAGS += -DNOSSL #CPPFLAGS +=-DNOSSL #OBJS = src/main.o src/compat.o src/mem.o src/File.o src/VIsoFile.o diff --git a/_Projects_/ps3netsrv/bins/Linux/Readme.md b/_Projects_/ps3netsrv/bins/Linux/Readme.md index 8b896e8a..bab49cd1 100644 --- a/_Projects_/ps3netsrv/bins/Linux/Readme.md +++ b/_Projects_/ps3netsrv/bins/Linux/Readme.md @@ -1,3 +1,3 @@ # ps3netsrv for Linux -Here is a RELEASE build of the latest ps3netsrv source code (build 20240707). Built on Ubuntu 22.04 LTS. +Here is a RELEASE build of the latest ps3netsrv source code (build 20240709). Built on Ubuntu 22.04 LTS. diff --git a/_Projects_/ps3netsrv/bins/Linux/makeiso b/_Projects_/ps3netsrv/bins/Linux/makeiso index 2e61e55e..2b9a969d 100644 Binary files a/_Projects_/ps3netsrv/bins/Linux/makeiso and b/_Projects_/ps3netsrv/bins/Linux/makeiso differ diff --git a/_Projects_/ps3netsrv/bins/Linux/makeiso_rip b/_Projects_/ps3netsrv/bins/Linux/makeiso_rip new file mode 100644 index 00000000..d2535a76 Binary files /dev/null and b/_Projects_/ps3netsrv/bins/Linux/makeiso_rip differ diff --git a/_Projects_/ps3netsrv/bins/Linux/ps3netsrv_linuxX86_64 b/_Projects_/ps3netsrv/bins/Linux/ps3netsrv_linuxX86_64 index 69c9988f..e4b4edf5 100644 Binary files a/_Projects_/ps3netsrv/bins/Linux/ps3netsrv_linuxX86_64 and b/_Projects_/ps3netsrv/bins/Linux/ps3netsrv_linuxX86_64 differ diff --git a/_Projects_/ps3netsrv/bins/Windows/makeiso.exe b/_Projects_/ps3netsrv/bins/Windows/makeiso.exe index 66adaa8e..6ac97a37 100644 Binary files a/_Projects_/ps3netsrv/bins/Windows/makeiso.exe and b/_Projects_/ps3netsrv/bins/Windows/makeiso.exe differ diff --git a/_Projects_/ps3netsrv/bins/Windows/makeiso_rip.exe b/_Projects_/ps3netsrv/bins/Windows/makeiso_rip.exe new file mode 100644 index 00000000..3a8ef1db Binary files /dev/null and b/_Projects_/ps3netsrv/bins/Windows/makeiso_rip.exe differ diff --git a/_Projects_/ps3netsrv/bins/Windows/ps3netsrv.exe b/_Projects_/ps3netsrv/bins/Windows/ps3netsrv.exe index 2ade0613..d0d41977 100644 Binary files a/_Projects_/ps3netsrv/bins/Windows/ps3netsrv.exe and b/_Projects_/ps3netsrv/bins/Windows/ps3netsrv.exe differ diff --git a/_Projects_/ps3netsrv/include/AbstractFile.h b/_Projects_/ps3netsrv/include/AbstractFile.h index b3327511..9b4fa6a3 100644 --- a/_Projects_/ps3netsrv/include/AbstractFile.h +++ b/_Projects_/ps3netsrv/include/AbstractFile.h @@ -10,6 +10,8 @@ class AbstractFile public: virtual ~AbstractFile() {} + bool ps3Mode; + virtual int open(const char *path, int flags) = 0; virtual int close(void) = 0; virtual ssize_t read(void *buf, size_t nbyte) = 0; diff --git a/_Projects_/ps3netsrv/include/File.h b/_Projects_/ps3netsrv/include/File.h index bb11998f..5c3029a9 100644 --- a/_Projects_/ps3netsrv/include/File.h +++ b/_Projects_/ps3netsrv/include/File.h @@ -85,6 +85,8 @@ class File : public AbstractFile File(); virtual ~File(); + bool ps3Mode; + virtual int open(const char *path, int flags); virtual int close(void); virtual ssize_t read(void *buf, size_t nbyte); diff --git a/_Projects_/ps3netsrv/include/VIsoFile.h b/_Projects_/ps3netsrv/include/VIsoFile.h index 1d435584..c70de1b9 100644 --- a/_Projects_/ps3netsrv/include/VIsoFile.h +++ b/_Projects_/ps3netsrv/include/VIsoFile.h @@ -64,8 +64,6 @@ class VIsoFile : public AbstractFile { private: - bool ps3Mode; - off64_t vFilePtr; uint8_t *fsBuf; @@ -124,6 +122,7 @@ class VIsoFile : public AbstractFile virtual ssize_t write(void *buf, size_t nbyte); virtual int64_t seek(int64_t offset, int whence); virtual int fstat(file_stat_t *fs); + bool ps3Mode; }; #endif diff --git a/_Projects_/ps3netsrv/src/File.cpp b/_Projects_/ps3netsrv/src/File.cpp index 864935d5..fcc86599 100644 --- a/_Projects_/ps3netsrv/src/File.cpp +++ b/_Projects_/ps3netsrv/src/File.cpp @@ -312,6 +312,8 @@ int File::open(const char *path, int flags) else if(enc_type_ == kDiscType3k3yDec) printf("3K3YDec key found.\n"); + ps3Mode = (enc_type_ > kDiscTypeNone); + return SUCCEEDED; #endif //#ifndef NOSSL } diff --git a/_Projects_/ps3netsrv/src/compat.c b/_Projects_/ps3netsrv/src/compat.c index 24a57c2b..68101e98 100644 --- a/_Projects_/ps3netsrv/src/compat.c +++ b/_Projects_/ps3netsrv/src/compat.c @@ -1,3 +1,4 @@ +#include #include "compat.h" #include "mem.h" @@ -306,6 +307,10 @@ int stat_file(const char *path, file_stat_t *fs) fs->file_size = ((uint64_t)wfd.nFileSizeHigh << 32) | wfd.nFileSizeLow; + #ifdef NO_UPDATE + if(strstr(path, "/PS3UPDAT.PUP")) fs->file_size = 0; + #endif + fs->ctime = FileTimeToUnixTime(&wfd.ftCreationTime, NULL); fs->atime = FileTimeToUnixTime(&wfd.ftLastAccessTime, NULL); fs->mtime = FileTimeToUnixTime(&wfd.ftLastWriteTime, NULL); @@ -403,6 +408,11 @@ int stat_file(const char *path, file_stat_t *fs) return ret; fs->file_size = st.st_size; + + #ifdef NO_UPDATE + if(strstr(path, "/PS3UPDAT.PUP")) fs->file_size = 0; + #endif + fs->mtime = st.st_mtime; fs->ctime = st.st_ctime; fs->atime = st.st_atime; diff --git a/_Projects_/ps3netsrv/src/main.cpp b/_Projects_/ps3netsrv/src/main.cpp index 28f77ec2..3d83e893 100644 --- a/_Projects_/ps3netsrv/src/main.cpp +++ b/_Projects_/ps3netsrv/src/main.cpp @@ -318,8 +318,13 @@ static int create_iso(char *folder_path, char *fileout, int viso) const uint32_t buf_size = 0x10000; char *buffer = (char *)client.buf; uint64_t offset = 0; - uint64_t rem_size = st.file_size % buf_size; - uint64_t iso_size = st.file_size - rem_size; + uint64_t file_size = st.file_size; + #ifdef NO_UPDATE + if(client.ro_file->ps3Mode && (viso == VISO_NONE) && (file_size > 268435456)) + file_size -= 268435456; // truncate last 256 MB (PS3UPDAT.PUP) from encrypted ISO + #endif + uint64_t rem_size = file_size % buf_size; + uint64_t iso_size = file_size - rem_size; uint16_t count = 0x100; if(iso_size >= buf_size) { @@ -336,7 +341,7 @@ static int create_iso(char *folder_path, char *fileout, int viso) client.ro_file->read(buffer, rem_size); write_file(fd_out, buffer, rem_size); } - printf("Dumped ISO: %llu bytes\n", (long long unsigned int)st.file_size); + printf("Dumped ISO: %llu bytes\n", (long long unsigned int)file_size); } close_file(fd_out); @@ -1794,9 +1799,9 @@ int main(int argc, char *argv[]) // Show build number set_white_text(); #ifndef MAKEISO - printf("ps3netsrv build 20240707"); + printf("ps3netsrv build 20240709"); #else - printf("makeiso build 20240707"); + printf("makeiso build 20240709"); #endif set_red_text(); @@ -2116,7 +2121,7 @@ int main(int argc, char *argv[]) for(int i = 1; i < argc; i++) { file_stat_t st; - if(stat_file(argv[i], &st) < 0 || st.mode & S_IFDIR != S_IFDIR) + if(stat_file(argv[i], &st) < 0) { printf("Invalid path: %s\n", argv[i]); continue;