From f8a61f221504d864dbb793a71fb630b00b10d9db Mon Sep 17 00:00:00 2001 From: yosiokat Date: Mon, 12 May 2008 12:47:29 +0000 Subject: [PATCH] =?UTF-8?q?NAMUT=5FFormat=20=E3=81=A7=E3=80=81=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=AF=E3=83=AA=E3=82=A2=E6=99=82?= =?UTF-8?q?=E3=81=AE=E3=83=91=E3=82=BF=E3=83=BC=E3=83=B3=E3=82=92=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=83=80=E3=83=A0=E5=80=A4=E3=81=AB=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=E3=80=82=20=E3=81=BE=E3=81=9F=E3=80=81WiFi=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=82=E3=82=AF=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1318 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/namut/ARM9/src/namut.c | 71 +++++++++++++------ .../sysmenu/sysmenu_lib/common/sysmenu_api.h | 2 +- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/build/libraries_sysmenu/namut/ARM9/src/namut.c b/build/libraries_sysmenu/namut/ARM9/src/namut.c index b75acbba..a8f094be 100644 --- a/build/libraries_sysmenu/namut/ARM9/src/namut.c +++ b/build/libraries_sysmenu/namut/ARM9/src/namut.c @@ -22,8 +22,10 @@ #include #include #include +#include #include #include +#include /*---------------------------------------------------------------------------* 定数定義 @@ -60,32 +62,16 @@ static const char* sDeleteNonProtecedDirectoryList[] = }; // 擬似フォーマット実行時に -// 指定ファイルは0xffでFillされます。 +// 指定ファイルはランダムデータでFillされます。 static const char* sFillFileList[] = { "nand:/shared1/TWLCFG0.dat", "nand:/shared1/TWLCFG1.dat" }; -static const u8 sClearData[CLEAR_DATA_SIZE] = -{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; + +static u8 sClearData[CLEAR_DATA_SIZE] ATTRIBUTE_ALIGN(32); +static u32 sNCFGAddr; /*---------------------------------------------------------------------------* 内部変数定義 @@ -106,6 +92,7 @@ static BOOL NAMUTi_DeleteNandDirectory(const char *path); static BOOL NAMUTi_MountAndFormatOtherTitleSaveData(u64 titleID, const char *arcname); static void NAMUTi_DrawNandTree(s32 depth, const char *path); static BOOL NAMUTi_FillFile(const char* path); +static void NAMUTi_ClearWiFiSettings( void ); static void PrintDirectory(s32 depth, const char* path); static void PrintFile(s32 depth, const char* path); @@ -159,6 +146,9 @@ BOOL NAMUT_Format(void) } } + // WiFi設定データをクリアします + NAMUTi_ClearWiFiSettings(); + return ret; } @@ -549,10 +539,14 @@ static BOOL NAMUTi_FillFile(const char* path) // ファイルオープン if (FS_OpenFileEx(&file, path, (FS_FILEMODE_RWL))) { - // ファイルを0xFFでクリア + // ファイルをランダムデータでクリア u32 filesize = FS_GetFileLength(&file); for (; filesize > CLEAR_DATA_SIZE; filesize -= CLEAR_DATA_SIZE) { + if( AES_Rand(sClearData, CLEAR_DATA_SIZE) != AES_RESULT_SUCCESS ) + { + return FALSE; + } FS_WriteFile(&file, sClearData, CLEAR_DATA_SIZE); } FS_WriteFile(&file, sClearData, (s32)filesize); @@ -696,6 +690,41 @@ static void NAMUTi_DrawNandTree(s32 depth, const char *path) FS_CloseDirectory(&dir); } + +/*---------------------------------------------------------------------------* + Name: NAMUTi_ClearWiFiSettings + + Description: NVRAMのWiFi設定データをクリアする。 + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +static void NAMUTi_ClearWiFiSettings( void ) +{ +#define NCFG_ADDR 0x20 +#define NTR_WIFI_DATA_SIZE 0x400 +#define TWL_WIFI_DATA_SIZE 0x600 + int len = ( NTR_WIFI_DATA_SIZE + TWL_WIFI_DATA_SIZE ); + + if (!NVRAMi_IsInitialized()) { + NVRAMi_Init(); + } + DC_FlushRange( &sNCFGAddr, 2 ); + sNCFGAddr = 0; + NVRAMi_Read( NCFG_ADDR, 2, (u8 *)&sNCFGAddr); + sNCFGAddr = (u32)( ( sNCFGAddr << 3 ) - len ); + + MI_CpuFillFast( sClearData, 0xffffffff, CLEAR_DATA_SIZE); + DC_FlushRange( sClearData, CLEAR_DATA_SIZE ); + while( len > 0 ) { + NVRAMi_Write( sNCFGAddr, CLEAR_DATA_SIZE , sClearData ); + sNCFGAddr += CLEAR_DATA_SIZE; + len -= CLEAR_DATA_SIZE; + } +} + + /*---------------------------------------------------------------------------* Name: PrintDirectory diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index b7be6e5f..31d972e6 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -131,7 +131,7 @@ extern void SYSM_GoSleepMode( void ); // ペアレンタルコントロール問い合わせ u32 SYSM_CalcPCTLInquiryCode( void ); // 問い合わせコード(10進8桁)算出 -u32 SYSM_CalcPCTLMasterKey( void ); // マスターキー  (10進5桁)算出 +u32 SYSM_CalcPCTLMasterKey( void ); // マスターキー  (10進5桁)算出(※内部でRTC_GetDateを使用します。) #endif