From 809c92427e5cc66085dd7fe75469f78b701813d1 Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 2 Jun 2011 01:54:23 +0000 Subject: [PATCH] =?UTF-8?q?WiFi=E3=82=B3=E3=83=8D=E3=82=AF=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3ID=E3=81=8C=E4=BB=AE=E3=81=AE=E5=80=A4?= =?UTF-8?q?=E3=81=A7=E3=81=82=E3=82=8C=E3=81=B0WiFi=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AF=E7=A7=BB=E8=A1=8C=E3=81=97=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB(TWL=E4=BF=AE=E7=90=86=E3=81=AB=E6=BA=96?= =?UTF-8?q?=E6=8B=A0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@301 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/Importer.cpp | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Importer.cpp index 1150aa9..6f22326 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Importer.cpp @@ -749,16 +749,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);