diff --git a/build/tools/sctools/common/src/hwi.c b/build/tools/sctools/common/src/hwi.c index 1d3006e..015d1b8 100644 --- a/build/tools/sctools/common/src/hwi.c +++ b/build/tools/sctools/common/src/hwi.c @@ -22,6 +22,7 @@ #include "font.h" #include "text.h" #include "mprintf.h" +#include "my_fs_util.h" /* @@ -111,7 +112,12 @@ BOOL MiyaBackupTWLSettings(const char *path) return FALSE; } +#if 0 writtenSize = FS_WriteFile(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) ); +#else + writtenSize = my_fs_crypto_write(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) ); +#endif + if( writtenSize != sizeof(LCFGTWLSettingsData) ) { fsResult = FS_GetArchiveResultCode(path); mprintf("Failed write file 1 - HWNormal Info.:%d\n", fsResult ); @@ -156,7 +162,12 @@ BOOL MiyaRestoreTWLSettings(const char *path) mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult ); return FALSE; } +#if 0 readSize = FS_ReadFile(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) ); +#else + readSize = my_fs_crypto_read(&f, (void *)&cfg_data, (s32)sizeof(LCFGTWLSettingsData) ); +#endif + if( readSize != sizeof(LCFGTWLSettingsData) ) { fsResult = FS_GetArchiveResultCode(path); mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult ); @@ -170,16 +181,11 @@ BOOL MiyaRestoreTWLSettings(const char *path) return FALSE; } - - - - /* 実際に書き出し */ if( FALSE == WriteTWLSettings( &cfg_data ) ) { return FALSE; } - return TRUE; } @@ -194,8 +200,8 @@ BOOL MiyaReadHWSecureInfo( LCFGTWLHWSecureInfo *Info ) retval = LCFGi_THW_ReadSecureInfo(); if( retval != LCFG_TSF_READ_RESULT_SUCCEEDED ) { - OS_TPrintf( "HW Normal Info read failed.\n" ); - mprintf( "HW Normal Info read failed.\n" ); + OS_TPrintf( "HW Secure Info read failed.\n" ); + mprintf( "HW Secure Info read failed.\n" ); return FALSE; } @@ -238,160 +244,3 @@ BOOL MiyaReadHWNormalInfo( LCFGTWLHWNormalInfo *Info ) } - -/*---------------------------------------------------------------------------* - Name: HWI_WriteHWNormalInfoFile - - Description: HWノーマルInfoファイルのライト - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ -static BOOL MiyaWriteHWNormalInfoFile( LCFGTWLHWNormalInfo *Info ) -{ - /* - - typedef struct LCFGTWLHWNormalInfo { - u8 rtcAdjust; // RTC調整値 - u8 rsv[ 3 ]; - u8 movableUniqueID[ LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ]; // 移行可能なユニークID - } LCFGTWLHWNormalInfo; // 20byte - */ - - if (!LCFGi_THW_WriteNormalInfoDirect( Info )) { - OS_TPrintf( "HW Normal Info Write failed.\n" ); - mprintf( "HW Normal Info Write failed.\n" ); - return FALSE; - } - return TRUE; -} - - - - -BOOL MiyaBackupHWNormalInfo(const char *path) -{ - FSFile f; - BOOL bSuccess; - FSResult fsResult; - s32 writtenSize; - - LCFGTWLHWNormalInfo info; - - if( FALSE == MiyaReadHWNormalInfo( &info ) ) { - return FALSE; - } - - FS_InitFile(&f); - - FS_CreateFileAuto(path, (FS_PERMIT_R|FS_PERMIT_W)); - bSuccess = FS_OpenFileEx(&f, path, (FS_FILEMODE_R|FS_FILEMODE_W)); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed open file 1 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - - writtenSize = FS_WriteFile(&f, (void *)&info, (s32)sizeof(LCFGTWLHWNormalInfo) ); - if( writtenSize != sizeof(LCFGTWLHWNormalInfo) ) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed write file 1 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - bSuccess = FS_CloseFile(&f); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed close file 1 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - return TRUE; -} - -BOOL MiyaReadHWNormalInfo_From_SD(const char *path, LCFGTWLHWNormalInfo *info) -{ - FSFile f; - BOOL bSuccess; - FSResult fsResult; - s32 readSize; - - if( info == NULL ) { - return FALSE; - } - - FS_InitFile(&f); - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - readSize = FS_ReadFile(&f, (void *)info, (s32)sizeof(LCFGTWLHWNormalInfo) ); - if( readSize != sizeof(LCFGTWLHWNormalInfo) ) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - bSuccess = FS_CloseFile(&f); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed close file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - return TRUE; -} - - -BOOL MiyaRestoreHWNormalInfo(const char *path) -{ - FSFile f; - BOOL bSuccess; - FSResult fsResult; - s32 readSize; - - LCFGTWLHWNormalInfo info; - LCFGTWLHWNormalInfo info_temp; - - FS_InitFile(&f); - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed open file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - readSize = FS_ReadFile(&f, (void *)&info, (s32)sizeof(LCFGTWLHWNormalInfo) ); - if( readSize != sizeof(LCFGTWLHWNormalInfo) ) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed read file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - bSuccess = FS_CloseFile(&f); - if (bSuccess == FALSE) { - fsResult = FS_GetArchiveResultCode(path); - mprintf("Failed close file 2 - HWNormal Info.:%d\n", fsResult ); - return FALSE; - } - - - /* RTCの補正値だけはそのまま使う */ - if( FALSE == MiyaReadHWNormalInfo( &info_temp ) ) { - return FALSE; - } - info.rtcAdjust = info_temp.rtcAdjust; - - /* 実際に書き出し */ - if( FALSE == MiyaWriteHWNormalInfoFile( &info ) ) { - return FALSE; - } - - return TRUE; -} - - - diff --git a/build/tools/sctools/common/src/menu_version.c b/build/tools/sctools/common/src/menu_version.c index 336b6fd..04537a8 100644 --- a/build/tools/sctools/common/src/menu_version.c +++ b/build/tools/sctools/common/src/menu_version.c @@ -1,4 +1,5 @@ #include +#include #include "menu_version.h" @@ -28,6 +29,8 @@ typedef struct SystemMenuVersion { u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; } SystemMenuVersion; +static u8 WorkForNA[NA_VERSION_DATA_WORK_SIZE]; + BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts) { @@ -44,6 +47,13 @@ BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts) } // STD_MemSet((void *)s_version, 0, sizeof(TWL_SYSMENU_VER_STR_LEN); STD_MemSet((void *)str_ver, 0, TWL_SYSMENU_VER_STR_LEN); + + + if (!NA_LoadVersionDataArchive(WorkForNA, NA_VERSION_DATA_WORK_SIZE)) { + OS_TPrintf("NA load error\n"); + return FALSE; + } + FS_InitFile(&file); @@ -83,6 +93,8 @@ BOOL Read_SystemMenuVersion(u16 *major, u16 *minor, u32 *ts) } FS_CloseFile(&file); + + (void)NA_UnloadVersionDataArchive(); return retval; } diff --git a/build/tools/sctools/common/src/my_fs_util.c b/build/tools/sctools/common/src/my_fs_util.c index 0d7fc2d..0dce698 100644 --- a/build/tools/sctools/common/src/my_fs_util.c +++ b/build/tools/sctools/common/src/my_fs_util.c @@ -1,4 +1,5 @@ #include +#include #include "text.h" #include "mprintf.h" #include "my_fs_util.h" @@ -1115,6 +1116,155 @@ static void Path_Buffers_Clean( char *path_src_dir, char *path_src_full, } } + + + + +/* + void CRYPTO_RC4Encrypt(CRYPTORC4Context* context, const void* in, u32 length, void* out); + + context - CRYPTO_RC4Init() で予め鍵を設定した CRYPTORC4Context 型の構造体を指定します。 + in - RC4 アルゴリズムによる暗号化/復号を行う対象のデータへのポインタを指定します。 + length - in で指定したデータの長さを指定します。 + out - 暗号化/復号を行った結果を格納する先のポインタを指定します。 + +*/ +static u32 my_fs_GetStringLength(char* str) +{ + u32 i; + for (i = 0; ; i++) { + if (*(str++) == '\0') { + return i; + } + } +} + +static char *my_fs_key = "twl-repair-tool"; + + +s32 my_fs_crypto_read(FSFile *f, void *ptr, s32 size) +{ + s32 readSize; + CRYPTORC4FastContext context; + u8 *crypt_buf; + + crypt_buf = (u8 *)OS_Alloc( (u32)size ); + if(crypt_buf == NULL ) { + return -1; + } + + readSize = FS_ReadFile(f, (void *)crypt_buf, size); + if( readSize != size ) { + /* error! */ + goto end; + } + CRYPTO_RC4FastInit(&context, my_fs_key, my_fs_GetStringLength(my_fs_key)); + CRYPTO_RC4FastEncrypt(&context, (char *)crypt_buf, (u32)size, ptr); + + end: + if( crypt_buf != NULL ) { + OS_Free(crypt_buf); + } + return readSize; +} + +s32 my_fs_crypto_write(FSFile *f, void *ptr, s32 size) +{ + s32 writtenSize; + CRYPTORC4FastContext context; + u8 *crypt_buf; + + crypt_buf = (u8 *)OS_Alloc( (u32)size ); + if(crypt_buf == NULL ) { + return -1; + } + + CRYPTO_RC4FastInit(&context, my_fs_key, my_fs_GetStringLength(my_fs_key)); + CRYPTO_RC4FastEncrypt(&context, (char *)ptr, (u32)size, crypt_buf); + + writtenSize = FS_WriteFile(f, crypt_buf, size); + if( writtenSize != size ) { + /* error */ + } + + if( crypt_buf != NULL ) { + OS_Free(crypt_buf); + } + return writtenSize; +} + +BOOL MydataLoadDecrypt(const char *path, void *pBuffer, int size, FSFile *log_fd) +{ + FSFile f; + BOOL bSuccess; + // u32 fileSize; + s32 readSize = 0; + + FS_InitFile(&f); + + bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); + if( ! bSuccess ) { + miya_log_fprintf(log_fd, "Failed Open File %s\n",__FUNCTION__); + miya_log_fprintf(log_fd, " path=%s\n", path ); + miya_log_fprintf(log_fd, " res=%s\n", my_fs_util_get_fs_result_word( FS_GetArchiveResultCode(path) )); + return FALSE; + } + readSize = my_fs_crypto_read(&f, pBuffer, (s32)size); + if( readSize != size ) { + miya_log_fprintf(log_fd, "Failed Read File: %s\n",path); + } + bSuccess = FS_CloseFile(&f); + if( ! bSuccess ) { + miya_log_fprintf(log_fd, "Failed Close File\n"); + miya_log_fprintf(log_fd, " %s\n", my_fs_util_get_fs_result_word( FS_GetArchiveResultCode(path))); + } + return TRUE; + } + + +BOOL MydataSaveEncrypt(const char *path, void *pData, int size, FSFile *log_fd) +{ +#pragma unused(log_fd) + FSFile f; + // BOOL flag; + BOOL bSuccess; + FSResult res; + FSResult fsResult; + s32 writtenSize; + + FS_InitFile(&f); + + bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_W); + if( ! bSuccess ) { + FS_CreateFileAuto( path, FS_PERMIT_W|FS_PERMIT_R); + bSuccess = FS_OpenFileEx(&f, path , FS_FILEMODE_W ); + if( ! bSuccess ) { + res = FS_GetArchiveResultCode( path ); + miya_log_fprintf(NULL, "%s file open error %s\n", __FUNCTION__,path ); + miya_log_fprintf(NULL, " Failed open file:%s\n", my_fs_util_get_fs_result_word( res )); + return FALSE; + } + } + + fsResult = FS_SetFileLength(&f, 0); + if( fsResult != FS_RESULT_SUCCESS ) { + } + + writtenSize = my_fs_crypto_write(&f, pData, (s32)size); + if( writtenSize != size ) { + return FALSE; + } + + FS_FlushFile(&f); + bSuccess = FS_CloseFile(&f); + if( bSuccess ) { + + } + return TRUE; +} + + + BOOL MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd) { FSFile f; @@ -1176,6 +1326,7 @@ BOOL MydataSave(const char *path, void *pData, int size, FSFile *log_fd) writtenSize = FS_WriteFile(&f, pData, (s32)size); if( writtenSize != size ) { + return FALSE; } FS_FlushFile(&f); diff --git a/build/tools/sctools/common/src/my_fs_util.h b/build/tools/sctools/common/src/my_fs_util.h index 3de4687..34c51a7 100644 --- a/build/tools/sctools/common/src/my_fs_util.h +++ b/build/tools/sctools/common/src/my_fs_util.h @@ -17,6 +17,8 @@ extern "C" { #endif char *my_fs_util_get_fs_result_word( FSResult res ); +s32 my_fs_crypto_write(FSFile *f, void *ptr, s32 size); +s32 my_fs_crypto_read(FSFile *f, void *ptr, s32 size); int find_title_save_data(MY_DIR_ENTRY_LIST **headp, const char *path_dst, const char *path_src, int *save_dir_info, char *log_file_name , int level); @@ -38,6 +40,10 @@ BOOL SDCardValidation(void); BOOL CheckShopRecord(u8 region, FSFile *log_fd); BOOL MydataSave(const char *path, void *pData, int size, FSFile *log_fd); BOOL MydataLoad(const char *path, void *pBuffer, int size, FSFile *log_fd); + +BOOL MydataLoadDecrypt(const char *path, void *pBuffer, int size, FSFile *log_fd); +BOOL MydataSaveEncrypt(const char *path, void *pData, int size, FSFile *log_fd); + void GetDirEntryList( MY_DIR_ENTRY_LIST *head, u64 **pBuffer, int *size); BOOL TitleIDSave(const char *path, u64 *pData, int count, FSFile *log_fd); BOOL TitleIDLoad(const char *path, u64 **pBuffer, int *count, FSFile *log_fd); diff --git a/build/tools/sctools/common/src/mynvram.c b/build/tools/sctools/common/src/mynvram.c index e72e002..abc85f6 100644 --- a/build/tools/sctools/common/src/mynvram.c +++ b/build/tools/sctools/common/src/mynvram.c @@ -6,6 +6,7 @@ #include "text.h" #include "mprintf.h" #include "mynvram.h" +#include "my_fs_util.h" #define NVRAM_PERSONAL_DATA_OFFSET 0x20 @@ -18,8 +19,6 @@ #define NVRAM_INTERNAL_BUF_SIZE 0x100 static u8 nvram_buffer[NVRAM_INTERNAL_BUF_SIZE] ATTRIBUTE_ALIGN(32); -//static char nor_file_path[FS_FILE_NAME_MAX]; - static BOOL my_nvram_read( u32 offset, u32 size, void *buf) { @@ -138,7 +137,7 @@ BOOL nvram_backup(char *path) { BOOL bSuccess; FSFile nor_fd; - u16 offset; + u32 offset; u32 vol; int len; #define BUF_SIZE 0x100 @@ -177,13 +176,19 @@ BOOL nvram_backup(char *path) offset *= 8; offset -= 0xA00; + OS_TPrintf( "nvram %d: offset = 0x%02x\n",__LINE__, offset); + for( vol = 0 ; vol < NVRAM_PERSONAL_DATA_SIZE ; vol += BUF_SIZE ) { - OS_TPrintf("."); if( TRUE != my_nvram_read( offset+vol , BUF_SIZE, (void* )nor_buf) ) { OS_TPrintf( "nvram error: %s %s %d\n",__FILE__,__FUNCTION__,__LINE__); } else { + OS_TPrintf( " --: offset = 0x%02x\n", offset+vol); +#if 0 len = FS_WriteFile(&nor_fd, nor_buf, BUF_SIZE); +#else + len = my_fs_crypto_write(&nor_fd, nor_buf, BUF_SIZE); +#endif if (len != BUF_SIZE) { OS_TPrintf("FS_WriteFile() failed."); @@ -205,7 +210,7 @@ BOOL nvram_restore(char *path) { BOOL bSuccess; FSFile nor_fd; - u16 offset; + u32 offset; u32 vol; int len; // char nor_file_path[FS_FILE_NAME_MAX]; @@ -241,7 +246,11 @@ BOOL nvram_restore(char *path) for( vol = 0 ; vol < NVRAM_PERSONAL_DATA_SIZE ; vol += BUF_SIZE ) { OS_TPrintf("."); +#if 0 len = FS_ReadFile(&nor_fd, nor_buf, BUF_SIZE); +#else + len = my_fs_crypto_read(&nor_fd, nor_buf, BUF_SIZE); +#endif if (len != BUF_SIZE) { OS_TPrintf("FS_ReadFile() failed."); break; @@ -257,10 +266,8 @@ BOOL nvram_restore(char *path) OS_TPrintf("\n"); bSuccess = FS_CloseFile(&nor_fd); - // mprintf("nvram write completed.\n"); OS_TPrintf( "nvram write completed.\n"); return TRUE; } - diff --git a/build/tools/sctools/copy_dst/src/main.c b/build/tools/sctools/copy_dst/src/main.c index f9f2c08..35df981 100644 --- a/build/tools/sctools/copy_dst/src/main.c +++ b/build/tools/sctools/copy_dst/src/main.c @@ -71,7 +71,7 @@ static void SDEvents(void *userdata, FSEvent event, void *arg) m_set_palette(tc[0], M_TEXT_COLOR_YELLOW ); mprintf("SD card:inserted!\n"); m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - mprintf("Push A button to start\n"); + mprintf("Push A button to start RESTORE\n"); } } @@ -134,7 +134,7 @@ static BOOL RestoreFromSDCard1(void) したがって MyData mydata にはデータが入っている。 */ // static BOOL SDBackupToSDCard8(void) - mprintf("RTC data restore "); + mprintf("RTC data restore "); if( RTC_RESULT_SUCCESS != RTC_SetDate( &(mydata.rtc_date) ) ) { flag = FALSE; } @@ -165,24 +165,19 @@ static BOOL RestoreFromSDCard2(void) if ( LCFGi_THW_WriteNormalInfoDirect( &hwn_info )) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); /* red */ mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - -#if 0 - // いらんやんか・・ - // static BOOL SDBackupToSDCard1(void) - mprintf("Unique ID backup "); - if( TRUE == MiyaBackupHWNormalInfo( MyFile_GetUniqueIDFileName() ) ) { - } -#endif return TRUE; } + static BOOL RestoreFromSDCard3(void) { // static BOOL SDBackupToSDCard2(void) @@ -190,13 +185,15 @@ static BOOL RestoreFromSDCard3(void) if( TRUE == nvram_restore( MyFile_GetWifiParamFileName() ) ) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); return TRUE; } @@ -208,13 +205,15 @@ static BOOL RestoreFromSDCard4(void) if( TRUE == MiyaRestoreTWLSettings( MyFile_GetUserSettingsFileName() ) ) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); return TRUE; } @@ -226,14 +225,15 @@ static BOOL RestoreFromSDCard5(void) if( TRUE == RestoreDirEntryList( MyFile_GetAppSharedListFileName(), MyFile_GetAppSharedRestoreLogFileName() )) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - return TRUE; } @@ -244,14 +244,15 @@ static BOOL RestoreFromSDCard6(void) if( TRUE == RestoreDirEntryList( MyFile_GetPhotoListFileName() , MyFile_GetPhotoRestoreLogFileName() )) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - return TRUE; } @@ -264,67 +265,79 @@ static BOOL RestoreFromSDCard8(void) if( TRUE == RestoreDirEntryList( MyFile_GetAppDataListFileName() , MyFile_GetAppDataRestoreLogFileName() )) { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { // error m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - return TRUE; } - - static BOOL LoadWlanConfig(void) { - /* ユーザーデータ書き込みモード */ + u8 buf[256]; + int len; + int i; /* ユーザーデータ書き込みモード */ if( TRUE == LoadWlanConfigFile("sdmc:/wlan_cfg.txt") ) { OS_TPrintf("SSID = %s\n", GetWlanSSID()); + mfprintf(tc[3],"SSID = %s\n", GetWlanSSID()); OS_TPrintf("MODE = "); + mfprintf(tc[3],"MODE = "); switch( GetWlanMode() ) { case 1: OS_TPrintf("NONE\n"); + mfprintf(tc[3],"NONE\n"); break; case 2: OS_TPrintf("WEP128\n"); + mfprintf(tc[3],"WEP128\n"); break; case 3: OS_TPrintf("WPA-TKIP\n"); + mfprintf(tc[3],"WPA-TKIP\n"); break; case 4: OS_TPrintf("WPA2-TKIP\n"); + mfprintf(tc[3],"WPA2-TKIP\n"); break; case 5: OS_TPrintf("WPA-AES\n"); + mfprintf(tc[3],"WPA-AES\n"); break; case 6: OS_TPrintf("WPA2-AES\n"); + mfprintf(tc[3],"WPA2-AES\n"); break; defalut: OS_TPrintf("Unknow mode..\n"); + mfprintf(tc[3],"Unknow mode..\n"); break; } OS_TPrintf("KEY STR = %s\n", GetWlanKEYSTR()); - { - u8 buf[256]; - int len; - int i; - len = GetWlanKEYBIN(buf); - if( len ) { - OS_TPrintf("KEY BIN = 0x"); - for( i = 0 ; i < len ; i++ ) { - OS_TPrintf("%02X",buf[i]); - } - OS_TPrintf("\n"); + mfprintf(tc[3],"KEY STR = %s\n", GetWlanKEYSTR()); + + len = GetWlanKEYBIN(buf); + if( len ) { + OS_TPrintf("KEY BIN = 0x"); + mfprintf(tc[3],"KEY BIN = 0x"); + for( i = 0 ; i < len ; i++ ) { + OS_TPrintf("%02X",buf[i]); + mfprintf(tc[3],"%02X",buf[i]); } + OS_TPrintf("\n"); + mfprintf(tc[3],"\n"); } } else { OS_TPrintf("Invalid wlan cfg file\n"); + mfprintf(tc[3],"Invalid wlan cfg file\n"); + return FALSE; } return TRUE; } @@ -359,7 +372,6 @@ static BOOL RestoreFromSDCard7(void) mprintf("-user title list loading.. "); OS_TPrintf("user title list loading\n"); - // (void)TitleIDSave( MyFile_GetDownloadTitleIDFileName(), pBuffer, count, NULL); if( TRUE == TitleIDLoad( MyFile_GetDownloadTitleIDFileName(), &title_id_buf_ptr, &title_id_count, NULL) ) { @@ -384,7 +396,6 @@ static BOOL RestoreFromSDCard7(void) mprintf("OK.\n"); m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - /* nand:/ticketはチケット同期でダウンロード */ // 不要:デバイス情報の表示 PrintDeviceInfo(); @@ -414,7 +425,7 @@ static BOOL RestoreFromSDCard7(void) m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - return FALSE; + goto end_nhttp; } else { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ @@ -431,7 +442,7 @@ static BOOL RestoreFromSDCard7(void) m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); - return FALSE; + goto end_ec; } else { m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ @@ -441,21 +452,18 @@ static BOOL RestoreFromSDCard7(void) // 必須:デバイス証明書の発行 if( FALSE == KPSClient() ) { - return FALSE; + goto end_ec_f; } if( FALSE == ECDownload((NAMTitleId *)title_id_buf_ptr , (u32)title_id_count) ) { - return FALSE; + goto end_ec_f; } // 不要:セーブデータ領域を作成 // NAM_Init を忘れてた SetupTitlesDataFile((NAMTitleId *)title_id_buf_ptr , (u32)title_id_count); - if( title_id_buf_ptr != NULL && title_id_count != 0 ) { - OS_Free( title_id_buf_ptr ); - } - + end_ec_f: // cleanup // EC の終了処理 mprintf("-EC_Shutdown.. "); @@ -471,6 +479,7 @@ static BOOL RestoreFromSDCard7(void) mprintf("OK.\n"); } m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + end_ec: // ネットワークからの切断 @@ -478,16 +487,21 @@ static BOOL RestoreFromSDCard7(void) mprintf("-disconnecting... "); NHTTP_Cleanup(); + end_nhttp: NSSL_Finish(); - + end_nssl: NcFinish(); + end_nc: //OS_TPrintf("NSSL_Finish() return = %d\n", NSSL_Finish()); TerminateWcmControl(); OS_TPrintf("done.\n"); mprintf("done.\n"); - + + if( title_id_buf_ptr != NULL && title_id_count != 0 ) { + OS_Free( title_id_buf_ptr ); + } // EC が自分の Title ID のディレクトリを作成してしまうため、削除する DeleteECDirectory(); @@ -636,6 +650,8 @@ void TwlMain(void) u8 macAddress[6]; MY_ENTRY_LIST *mfiler_list_head = NULL; BOOL reboot_flag; + u16 s_major, s_minor; + u32 s_timestamp; OS_Init(); OS_InitThread(); @@ -679,10 +695,30 @@ void TwlMain(void) // 必須;SEA の初期化 SEA_Init(); + m_set_palette(tc[0], M_TEXT_COLOR_YELLOW ); + mprintf( "Sys-menu ver." ); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) { + mprintf( "%d.%d", s_major, s_minor ); + mprintf( " (%08x)\n", s_timestamp ); + } + else { + m_set_palette(tc[0], M_TEXT_COLOR_RED ); + mprintf( "read error!\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + } + mprintf( "\n"); + + reboot_flag = OS_IsRebooted(); /* デバッグのために強制的に */ // reboot_flag = TRUE; + (void)m_get_key_trigger(); + keyData = m_get_key_code(); + if ( keyData & PAD_BUTTON_X ) { + reboot_flag = TRUE; + } if( FALSE == reboot_flag ) { @@ -695,7 +731,6 @@ void TwlMain(void) else { sd_card_flag = TRUE; } - FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL); @@ -707,20 +742,6 @@ void TwlMain(void) mprintf("NA load error\n"); } else { - - { - u16 s_major, s_minor; - u32 s_timestamp; - if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) { - OS_TPrintf( "SystemMenuVersionData\n" ); - // 文字列 - // 数値 - OS_TPrintf( " Version(num) : %d.%d\n", s_major, s_minor ); - // OS_TPrintf( " Version(str) : %s\n", s_version.str_ver ); - OS_TPrintf( " Timestamp : %08x\n", s_timestamp ); - } - } - if (!NUC_LoadCert()) { // WRAMにロード OS_TPrintf("Client cert load error\n"); @@ -910,7 +931,7 @@ void TwlMain(void) MyFile_SetPathBase("sdmc:/"); MyFile_AddPathBase((const char *)MFILER_GetCursorEntryPath( &mfiler_list_head ) ); MyFile_AddPathBase("/"); - if(TRUE == MydataLoad( MyFile_GetGlobalInformationFileName(), &mydata, sizeof(MyData), NULL) ) { + if(TRUE == MydataLoadDecrypt( MyFile_GetGlobalInformationFileName(), &mydata, sizeof(MyData), NULL) ) { mprintf("Personal data. restore "); m_set_palette(tc[0], 0x2); /* green */ mprintf("OK.\n"); @@ -918,7 +939,9 @@ void TwlMain(void) start_my_thread(); } else { - mprintf("Not a backup data directory\n"); + m_set_palette(tc[0], 0x1); /* red */ + mprintf("NG.\n"); + m_set_palette(tc[0], 0xF); /* white */ } } else { @@ -971,7 +994,7 @@ void TwlMain(void) n--; m_set_display_offset_x(tc[0], n); } - + label: mfprintf(tc[1], "\f%4d/%02d/%02d %02d:%02d:%02d\n\n", rtc_date.year + 2000, rtc_date.month , rtc_date.day, rtc_time.hour , rtc_time.minute , rtc_time.second ); diff --git a/build/tools/sctools/copy_org/src/main.c b/build/tools/sctools/copy_org/src/main.c index 6b68bd4..d7479d6 100644 --- a/build/tools/sctools/copy_org/src/main.c +++ b/build/tools/sctools/copy_org/src/main.c @@ -34,6 +34,7 @@ #include "nuc.h" #include "myfilename.h" +#include "menu_version.h" //================================================================================ @@ -57,6 +58,7 @@ static void SDEvents(void *userdata, FSEvent event, void *arg) m_set_palette(tc[0], M_TEXT_COLOR_YELLOW ); mprintf("SD card:inserted!\n"); m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + mprintf("push A button to start BACKUP\n"); } } @@ -104,14 +106,16 @@ static BOOL SDBackupToSDCard2(void) /* Wifi設定の保存 */ mprintf("WirelessLAN param. backup "); if( TRUE == nvram_backup( MyFile_GetWifiParamFileName() ) ) { - m_set_palette(tc[0], 0x2); /* green */ + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ return TRUE; } @@ -121,14 +125,16 @@ static BOOL SDBackupToSDCard3(void) /* nand:/shared1ディレクトリまわりの保存 */ mprintf("User setting param. backup "); if( TRUE == MiyaBackupTWLSettings( MyFile_GetUserSettingsFileName() ) ) { - m_set_palette(tc[0], 0x2); /* green */ + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ return TRUE; } @@ -150,12 +156,14 @@ static BOOL SDBackupToSDCard4(void) mydata.num_of_shared2_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetAppSharedListFileName() ); m_set_palette(tc[0], 0x2); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], 0xF); /* white */ } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ (void)ClearDirEntryList( &dir_entry_list_head ); return TRUE; } @@ -164,7 +172,6 @@ static BOOL SDBackupToSDCard5(void) { MY_DIR_ENTRY_LIST *dir_entry_list_head = NULL; int save_dir_info = 0; - /* nand2:/photoディレクトリまわりの保存 内容は写真長のJPEGファイル @@ -176,17 +183,18 @@ static BOOL SDBackupToSDCard5(void) // PrintDirEntryListBackward( dir_entry_list_head, NULL ); mydata.num_of_photo_files = SaveDirEntryList( dir_entry_list_head, MyFile_GetPhotoListFileName() ); - m_set_palette(tc[0], 0x2); /* green */ + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ (void)ClearDirEntryList( &dir_entry_list_head ); - return TRUE; } @@ -204,18 +212,20 @@ static BOOL SDBackupToSDCard6(void) mprintf("App. save data backup "); if( 0 == find_title_save_data( &dir_entry_list_head, MyFile_GetAppDataSaveDirName(), "nand:/title", - &save_dir_info, MyFile_GetAppDataLogFileName(),0 ) ) - { - // PrintDirEntryListBackward( dir_entry_list_head, NULL ); - mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head , MyFile_GetAppDataListFileName() ); - m_set_palette(tc[0], 0x2); /* green */ - mprintf("OK.\n"); - } - else { - m_set_palette(tc[0], 0x1); /* red */ - mprintf("NG.\n"); + &save_dir_info, MyFile_GetAppDataLogFileName(),0 ) ) { + // PrintDirEntryListBackward( dir_entry_list_head, NULL ); + mydata.num_of_app_save_data = SaveDirEntryList( dir_entry_list_head , MyFile_GetAppDataListFileName() ); + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ + mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } - m_set_palette(tc[0], 0xF); /* white */ + else { + m_set_palette(tc[0], M_TEXT_COLOR_RED ); + mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; + } + (void)ClearDirEntryList( &dir_entry_list_head ); return TRUE; @@ -229,6 +239,7 @@ static BOOL SDBackupToSDCard7(void) int count; int j; u64 *ptr; + BOOL flag = TRUE; /* タイトルリストの生成 */ /* @@ -274,12 +285,16 @@ static BOOL SDBackupToSDCard7(void) if( TRUE == TitleIDSave( MyFile_GetDownloadTitleIDFileName(), pBuffer, count, NULL) ) { //MyFile_GetDownloadTitleIDLogFileName() - m_set_palette(tc[0], 0x2); /* green */ + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.(save ids)\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + flag = FALSE; + // return FALSE; } if( pBuffer ) { OS_Free(pBuffer); @@ -288,11 +303,13 @@ static BOOL SDBackupToSDCard7(void) else { m_set_palette(tc[0], 0x1); /* red */ mprintf("NG.(get ids)\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + flag = FALSE; + // return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ (void)ClearDirEntryList( &dir_entry_list_head ); - return TRUE; + return flag; } static BOOL SDBackupToSDCard8(void) @@ -325,15 +342,17 @@ static BOOL SDBackupToSDCard8(void) LCFG_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN ); mprintf("Personal data backup "); - if( TRUE == MydataSave( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) { - m_set_palette(tc[0], 0x2); /* green */ + if( TRUE == MydataSaveEncrypt( MyFile_GetGlobalInformationFileName(), (void *)&mydata, sizeof(MyData), NULL) ) { + m_set_palette(tc[0], M_TEXT_COLOR_GREEN ); /* green */ mprintf("OK.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); } else { - m_set_palette(tc[0], 0x1); /* red */ + m_set_palette(tc[0], M_TEXT_COLOR_RED ); mprintf("NG.\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + return FALSE; } - m_set_palette(tc[0], 0xF); /* white */ return TRUE; } @@ -404,6 +423,8 @@ void TwlMain(void) int i; int n; u8 macAddress[6]; + u16 s_major, s_minor; + u32 s_timestamp; OS_Init(); OS_InitThread(); @@ -448,6 +469,22 @@ void TwlMain(void) // 必須;SEA の初期化 SEA_Init(); + m_set_palette(tc[0], M_TEXT_COLOR_LIGHTBLUE ); + mprintf( "Sys-menu ver." ); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + if( TRUE == Read_SystemMenuVersion(&s_major, &s_minor, &s_timestamp) ) { + mprintf( "%d.%d", s_major, s_minor ); + mprintf( " (%08x)\n", s_timestamp ); + } + else { + m_set_palette(tc[0], M_TEXT_COLOR_RED ); + mprintf( "read error!\n"); + m_set_palette(tc[0], M_TEXT_COLOR_WHITE ); + } + mprintf( "\n"); + + + // 不要:NAM の初期化 // NAM_Init(&AllocForNAM, &FreeForNAM);