📄 main.c
字号:
/* * PSP Software Development Kit - http://www.pspdev.org * ----------------------------------------------------------------------- * Licensed under the BSD license, see LICENSE in PSPSDK root for details. * * main.c - Sample to demonstrate savedata encryption using sceChnnlsv * * Copyright (c) 2005 Jim Paris <jim@jtan.com> * Coypright (c) 2005 psp123 * * $Id: main.c 1559 2005-12-10 01:10:11Z jim $ */#include <pspkernel.h>#include <pspctrl.h>#include <pspdebug.h>#include <pspdisplay.h>#include <psptypes.h>#include <psputility.h>#include <stdio.h>#include <string.h>#include "encrypt.h"PSP_MODULE_INFO("SaveEncrypt", 0, 1, 1);#define printf pspDebugScreenPrintf#if 0 /* Old format save with no key, supported by 1.0+ firmware */ const char *plaintext = "ms0:/PLAIN.BIN"; const char *encrypted = "ms0:/PSP/SAVEDATA/DATA111110000/DATA.BIN"; const char *datafile = "DATA.BIN"; const char *paramsfo = "ms0:/PSP/SAVEDATA/DATA111110000/PARAM.SFO"; const unsigned char *gamekey = NULL;#else /* New format save with a key (GTA:LCS) */ const char *plaintext = "ms0:/PLAIN.BIN"; const char *encrypted = "ms0:/PSP/SAVEDATA/DATA222220000/DATA.BIN"; const char *datafile = "DATA.BIN"; const char *paramsfo = "ms0:/PSP/SAVEDATA/DATA222220000/PARAM.SFO"; const unsigned char gamekey[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFA, 0xCA, 0xDE, 0x00, 0xDE, 0xAD, 0xBE, 0xEF };#endifint waitbutton(int mask) { SceCtrlData paddata; do { sceDisplayWaitVblankStart(); sceCtrlReadBufferPositive(&paddata, 1); } while((paddata.Buttons & mask)); do { sceDisplayWaitVblankStart(); sceCtrlReadBufferPositive(&paddata, 1); } while(!(paddata.Buttons & mask)); return paddata.Buttons;}int main(int argc, char *argv[]){ int i, ret; pspDebugScreenInit(); sceCtrlSetSamplingCycle(0); sceCtrlSetSamplingMode(PSP_CTRL_MODE_DIGITAL); printf("Save Encrypt Sample\n"); printf("by Jim Paris and psp123\n\n"); printf(" Will encrypt: %s\n", plaintext); printf(" Using key:"); if(gamekey) { for (i = 0; i < 0x10; i++) printf(" %02x", gamekey[i]); } else { printf(" none"); } printf("\n\n"); printf(" Output file: %s\n", encrypted); printf("Update hashes: %s\n\n", paramsfo); printf("Press X to continue, or O to quit.\n\n"); if (waitbutton(PSP_CTRL_CROSS | PSP_CTRL_CIRCLE) & PSP_CTRL_CIRCLE) goto out; printf("Working...\n\n"); ret = encrypt_file(plaintext, encrypted, datafile, paramsfo, gamekey); if(ret < 0) { printf("Error: encrypt_file() returned %d\n\n", ret); } else { printf("Successfully wrote %d bytes to\n", ret); printf(" %s\n", encrypted); printf("and updated hashes in\n"); printf(" %s\n\n", paramsfo); } printf("Press any button to quit\n"); waitbutton(-1); out: sceKernelExitGame(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -