libPS4/include/libc.h
@@ -60,5 +60,6 @@ extern size_t (*fwrite)(const void * ptr, size_t size, size_t count, FILE *strea
extern int (*fseek)(FILE *stream, long int offset, int origin);
extern long int(*ftell)(FILE *stream);
extern int (*fclose)(FILE *stream);
+extern int (*fprintf)(FILE *stream, const char *format, ...);
void initLibc(void);
libPS4/source/libc.c
@@ -53,6 +53,7 @@ size_t (*fwrite)(const void * ptr, size_t size, size_t count, FILE *stream );
int (*fseek)(FILE *stream, long int offset, int origin);
long int(*ftell)(FILE *stream);
int (*fclose)(FILE *stream);
+int (*fprintf)(FILE *stream, const char *format, ...);
void initLibc(void) {
int libc = sceKernelLoadStartModule("libSceLibcInternal.sprx", 0, NULL, 0, 0, 0);
@@ -108,4 +109,5 @@ void initLibc(void) {
RESOLVE(libc, fseek);
RESOLVE(libc, ftell);
RESOLVE(libc, fclose);
+ RESOLVE(libc, fprintf);
}
@@ -1761,6 +1761,7 @@ int filezilla_server_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_bu
int netbsd_sha1crypt_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED const hashconfig_t *hashconfig);
int atlassian_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED const hashconfig_t *hashconfig);
int ps3_nid_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED const hashconfig_t *hashconfig);
+int ps4_nid_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED const hashconfig_t *hashconfig);
/**
* hook functions
@@ -240,6 +240,7 @@ static const char HT_14900[] = "Skip32";
static const char HT_15000[] = "FileZilla Server >= 0.9.55";
static const char HT_15100[] = "Juniper/NetBSD sha1crypt";
static const char HT_16110[] = "PS3 Function NIDs";
+static const char HT_16111[] = "PS4 Function NIDs";
static const char HT_99999[] = "Plaintext";
static const char HT_00011[] = "Joomla < 2.5.18"...
That said, if you give it a try on a PlayStation 4 under 4.50 and receive a ffff000000000539 error prompt it's expected output for the exploit's success.