Skip to content

Commit

Permalink
md5sum and base firmware specified
Browse files Browse the repository at this point in the history
  • Loading branch information
krazynez committed Feb 3, 2025
1 parent 0e76294 commit bd0e07b
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 11 deletions.
4 changes: 2 additions & 2 deletions src/Makefile.signed
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS) -c

LIBDIR = lib
LIBS = -lpsppower
LIBS = -lpsppower -lpsputility

PSP_FW_VERSION = 271

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Chronoswitch Downgrader v7.6.1
PSP_EBOOT_TITLE = Chronoswitch Downgrader v7.6.3

BUILD_PRX = 1

Expand Down
55 changes: 55 additions & 0 deletions src/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Chronoswitch Downgrader
Chronoswitch is a downgrader for the Playstation Portable (PSP).

## Installation
Download and extract the latest version from the releases on this github page. Copy the `PSP` folder from the extracted output to your memory stick. You will need the firmware update for version you wish to downgrade to. If you want to downgrade to 6.60, you will need the 6.60 official update. If you're downgrading a PSPgo, make sure you download the official firmware appropriate for that device.

Copy the official firmware update to `PSP/GAME/UPDATE/EBOOT.PBP` on your memory stick. If you're using a PSPgo, you can use internal storage or the memory stick for the official firmware EBOOT

The downgrader is "signed", and can be launched without having a custom firmware installed. Once you run the application, follow the on-screen instructions.

## Changelog
### Version 7.6.2
* Update to use md5 checksum when detecting PSP GO firmware.
* Specify to user what base firmware to run CS from is.
### Version 7.6.1
* Added more print statements for less common issues with parsing EBOOT.PBP or the buffer
### Version 7.6
* Changed Default color, makes it a bit easier to read.
* Detect which OFW you have to make sure your flashing the proper model OFW. ( i.e You can only flash GO OFW on GO and vice versa )
### Version 7.5
* Updated Tools to encrypt EBOOT to be OS agnostic ( from Yoti's psp_pspident )
* Bugfix: GO had issue running with just Infinity/OFW running.
### Version 7.4
* PSP GO cleanup
* Detect if EBOOT.PBP is missing from `PSP/GAME/UPDATE/`
### Version 7.3
* PSP GO can boot from ms0/ef0
### Version 7.2
* Replaced 'factory firmware limitation', which prevented certain PSPs from being downgradable at all or limited them from being downgraded to certain firmwares they theoretically support.
* This fixes most cases where an IDXFFFFFFFF or CAAFFFFFCF7 error could appear.
* Chronoswitch now detects your PSP's motherboard alongside its model and allows flashing all firmwares (5.00+) that are supported by it.
* Removed support for downgrading 09g units below 6.30.
### Version 7.1
* Added experimental support for 07g units on 6.6x.
### Version 7.0
* Added support for Infinity.
### Version 6.1
* Added support for downgrading 11g units to 6.60.
### Version 6.0
* Added support for 6.61.
### Version 5.0
* Added support for downgrading 09g units to 6.20.

## Thanks to
* some1
* bbtgp
* coyotebean
* kgsws
* Silverspring
* Bubbletune
* qwikrazor87
* The Zett

## Socials
Follow me on Twitter [@DaveeFTW](https://twitter.com/DaveeFTW), and check out [my blog](https://lolhax.org).
2 changes: 1 addition & 1 deletion src/kernel_exploit.c
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,6 @@ void doKernelExploit(void)
else
{
/* not supported */
ErrorExit(5000, "Error, your firmware is not supported.\n");
ErrorExit(5000, "Error, Chronoswitch can only run from a PSP with 6.31 or higher firmware.\n");
}
}
26 changes: 18 additions & 8 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
#include "kernel_exploit.h"
#include "rebootex.h"

PSP_MODULE_INFO("Chronoswitch", 0, 7, 61);
PSP_MODULE_INFO("Chronoswitch", 0, 7, 63);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_VFPU);
PSP_HEAP_SIZE_KB(3 << 10);

#define DOWNGRADER_VER ("7.6.1")
#define DOWNGRADER_VER ("7.6.3")


typedef struct __attribute__((packed))
Expand Down Expand Up @@ -77,16 +77,26 @@ u32 get_updater_version(char *argv)
status = sceIoGetstat(eboot_path, &stats);

int go_fw = -1;
int size = 0;

int go_check = sceIoOpen(eboot_path, PSP_O_RDONLY, 0);
sceIoLseek32(go_check, 0x346F, PSP_SEEK_SET);
u8 go_buf[1] = { 0 };
sceIoRead(go_check, go_buf, 1);
if(go_buf[0] == 0x63)
go_fw = 1;
sceIoLseek32(go_check, 0, PSP_SEEK_SET);
u8 digest[16] = { 0 };
u8 go_buf[0x2000] = { 0 };
SceKernelUtilsMd5Context ctx;
sceKernelUtilsMd5BlockInit(&ctx);
printf("Checking md5sum for EBOOT... Please wait...\n");
while((size = sceIoRead(go_check, go_buf, sizeof(go_buf))) > 0) {
sceKernelUtilsMd5BlockUpdate(&ctx, go_buf, size);
}
sceIoClose(go_check);


u8 go_md5sum[16] = { 0xFD, 0x0F, 0x7D, 0x07, 0x98, 0xB4, 0xF6, 0xE6, 0xD3, 0x2E, 0xF9, 0x58, 0x36, 0x74, 0x05, 0x27 }; // PSP GO MD5 SUM


if(!memcmp(go_md5sum, digest, 16))
go_fw = 1;

if(status < 0 && !strstr(argv, "ef0")) {
printf("\nHmmmm? Are you sure you have EBOOT.PBP in PSP/GAME/UPDATE/ ???\n");
return 0xFFF;
Expand Down

0 comments on commit bd0e07b

Please sign in to comment.