diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp index 8a5c3ea..f9af94f 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -325,8 +325,8 @@ void ControlState(::std::vector& operationMessage, bool& nextStep, { COMMON_LOGGER("Initialize Console\n"); - // SDカードのIVSと本体のIVSは異なるか? - if (EqualsIVSFileandIVS()) + // SDカードのシリアルナンバーと本体のシリアルナンバーは異なるか? + if (EqualsSerialFileandSerial()) { // 同一本体に書き戻そうとしたファイルを作る COMMON_LOGGER("Restore to the same console. Initialize.\n"); diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index 0c49c40..4b8efcc 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -67,7 +67,7 @@ TimeZone s_TimeZone; const size_t NTP_SERVER_NAME_LENGTH = 256; char s_NtpServerName[NTP_SERVER_NAME_LENGTH]; -bool s_CheckedEqualsIVSFileandIVS = false; +bool s_CheckedEqualsSerialFileandSerial = false; bool s_CheckedEqualsRegionDataandRegion = false; bool s_ReadSerialNumber = false; @@ -222,69 +222,28 @@ u8* ReadSerialNumber() return s_SerialNo; } -bool EqualsIVSFileandIVS() +bool EqualsSerialFileandSerial() { nn::Result result; - void* ivs; - size_t ivsSize; - size_t readSize; + u8* serial; + size_t serialSize; static bool retval = false; - if(s_CheckedEqualsIVSFileandIVS) + if(s_CheckedEqualsSerialFileandSerial) { return retval; } - COMMON_LOGGER("Check IVS\n"); + COMMON_LOGGER("Check Serial Number\n"); - GetIvs(&ivs, &ivsSize); + GetSerialNumber(&serial, &serialSize); + ReadSerialNumber(); - size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize() / 2; - NN_LOG("AllocatableSize = %d\n", bufSize); - - void* enc = common::HeapManager::GetHeap()->Allocate(bufSize); - if (enc != NULL) + if(std::memcmp(s_SerialNo, serial, nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN) == 0) { - common::SdReaderWriter sdReader; - - result = sdReader.ReadBuf(common::IVS_PATHNAME, enc, bufSize, &readSize); - if(result.IsSuccess()) - { - void *dec = common::HeapManager::GetHeap()->Allocate(readSize); - if(dec != NULL) - { - // AES復号化する - nn::crypto::Initialize(); - nn::crypto::SwAesCtrContext swAesCtrContest; - - swAesCtrContest.Initialize(s_IvsDecryptIv, common::key, sizeof(common::key)); - swAesCtrContest.Decrypt(dec, enc, readSize); - - NN_LOG("readSize = %d, ivsSize = %d\n", readSize, ivsSize); - // サイズ一致かつ内容一致でtrue - if (readSize == ivsSize && std::memcmp(ivs, dec, ivsSize) == 0) - { - retval = true; - } - - common::HeapManager::GetHeap()->Free(dec); - - } - else - { - NN_LOG("Failed Allocate Heap!! %s, %d", __FILE__, __LINE__); - } - } - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - - s_CheckedEqualsIVSFileandIVS = true; - common::HeapManager::GetHeap()->Free(enc); - } - else - { - NN_LOG("Failed Allocate Heap!! %s, %d", __FILE__, __LINE__); - return retval; + retval = true; } + s_CheckedEqualsSerialFileandSerial = true; return retval; } @@ -1345,7 +1304,7 @@ void ImportTwlSoundData() void ClearFileReadResult() { - s_CheckedEqualsIVSFileandIVS = false; + s_CheckedEqualsSerialFileandSerial = false; s_CheckedEqualsRegionDataandRegion = false; s_ReadSerialNumber = false; } diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h index 03f46d1..8cf420a 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -23,7 +23,7 @@ namespace ConsoleRestore { -bool EqualsIVSFileandIVS(); +bool EqualsSerialFileandSerial(); bool EqualsRegionDataandRegion(); u8* ReadSerialNumber();