diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp index 3cac185..aa6cd46 100644 --- a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -735,16 +735,37 @@ nn::Result ImportNorData() &reinterpret_cast(buf)->ntrConfig.ncd_ex); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); - // TWL WiFi設定 - result = nn::cfg::nor::CTR::WriteTwlWifiSetting(0, reinterpret_cast(buf)->TwlWiFiSetting, - common::TWL_WIFI_SETTING_SIZE); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + // WiFiコネクションIDが仮の値であればWiFi設定は移行しない + // TWL修理に準拠している + u64 attestedUserId1; + u64 attestedUserId2; + const u32 WIFI_CONNECTION_USERID_OFFSET1 = 0xf0; + const u32 WIFI_CONNECTION_USERID_OFFSET2 = 0x1f0; + const u32 USERID_SIZE = 6; + const bit64 USERID_MASK = 0x07ffffffffffffff; - // NTR WiFi設定 - result = nn::cfg::nor::CTR::WriteNtrWifiSetting(0, reinterpret_cast(buf)->NtrWiFiSetting, - common::NTR_WIFI_SETTING_SIZE); - COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + std::memcpy(&attestedUserId1, + &reinterpret_cast (buf)->NtrWiFiSetting[WIFI_CONNECTION_USERID_OFFSET1], + USERID_SIZE); + attestedUserId1 &= USERID_MASK; + std::memcpy(&attestedUserId2, + &reinterpret_cast (buf)->NtrWiFiSetting[WIFI_CONNECTION_USERID_OFFSET2], + USERID_SIZE); + attestedUserId2 &= USERID_MASK; + + if (attestedUserId1 == attestedUserId2 && attestedUserId1 != 0) + { + // TWL WiFi設定 + result = nn::cfg::nor::CTR::WriteTwlWifiSetting(0, + reinterpret_cast (buf)->TwlWiFiSetting, common::TWL_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // NTR WiFi設定 + result = nn::cfg::nor::CTR::WriteNtrWifiSetting(0, + reinterpret_cast (buf)->NtrWiFiSetting, common::NTR_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } } common::HeapManager::GetHeap()->Free(buf);