This thread is intended to spur discussion about whether it would be both feasible and relatively easy to automate ARM9Loader brute-forcing. I'll update the first post as major updates / answers arrive.
It might not be practical at the moment, given progress made in other areas.
However, future units shipping with 10.5+ might exclude other attack vectors.
Here's a set of presumptions I have... basically what I think I understand:
I2C can be used to reboot the unit
GPIO pins can be used to write to the NAND
Homebrew/payloads can send messages via I2C
Homebrew/payloads can write memory with hax instructions
Homebrew/payloads can overwrite exception vectors to point to hax instructions
Reboot does not clear memory
Would the following be an avenue that an attacker could use to automate / brute force Arm9Loader into branching into their own exception vector?
Hardmod to dump NAND
Additional Hardmod to expose I2C externally
Create two custom payloads:
"I2C/OTP" payload, which would send a message via I2C, then dump OTP, then send a second message via I2C
"PrepHax" payload, which would send a message via I2C, overwrite the exception vectors to point to I2C/OTP payload, and then send a second message via I2C
Setup N3DS to auto-boot the "PrepHax" payload, such as via Theme
Have RPI2 setup to write NAND via GPIO
Connect the N3DS I2C to RPI2's I2C
Connect the N3DS DAT0/CLK/CMD to RPI2's GPIO
Initialize I2C in multi-master mode, exposing both slave and master
Set DAT0/CLK/CMD to not interfere with boot (float?)
Reboot via I2C, wait for timeout or an I2C message indicating Hax stage
I2C messages:
PrepHax started -- set another timeout, things are progressing
PrepHax complete -- reboot with sector 150 updated to next test values
I2C/OTP started -- set another timeout, things are progressing
I2C/OTP complete -- HALT! Potentially usable magic value found!
Timeouts (based on last I2C message):
PrepHax started -- memory not reliably set, random hax failure? Just reboot via I2C
PrepHax complete -- not usable special sector, reboot with sector 150 updated
I2C/OTP started -- Log as 'potential' values for sector 150, then reboot with sector 150 updated
If nothing technical prevents this from working, this would seem to reduce
the complexity of the brute-force method.[/SPOILER]
Here's a set of presumptions I have... basically what I think I understand:
I2C can be used to reboot the unit
GPIO pins can be used to write to the NAND
Homebrew/payloads can send messages via I2C
Homebrew/payloads can write memory with hax instructions
Homebrew/payloads can overwrite exception vectors to point to hax instructions
Reboot does not clear memory
Would the following be an avenue that an attacker could use to automate / brute force Arm9Loader into branching into their own exception vector?
Hardmod to dump NAND
Additional Hardmod to expose I2C externally
Create two custom payloads:
"I2C/OTP" payload, which would send a message via I2C, then dump OTP, then send a second message via I2C
"PrepHax" payload, which would send a message via I2C, overwrite the exception vectors to point to I2C/OTP payload, and then send a second message via I2C
Setup N3DS to auto-boot the "PrepHax" payload, such as via Theme
Have RPI2 setup to write NAND via GPIO
Connect the N3DS I2C to RPI2's I2C
Connect the N3DS DAT0/CLK/CMD to RPI2's GPIO
[/SPOLIER]
Initialize I2C in multi-master mode, exposing both slave and master
Set DAT0/CLK/CMD to not interfere with boot (float?)
Reboot via I2C, wait for timeout or an I2C message indicating Hax stage
I2C messages:
PrepHax started -- set another timeout, things are progressing
PrepHax complete -- reboot with sector 150 updated to next test values
I2C/OTP started -- set another timeout, things are progressing
I2C/OTP complete -- HALT! Potentially usable magic value found!
Timeouts (based on last I2C message):
PrepHax started -- memory not reliably set, random hax failure? Just reboot via I2C
PrepHax complete -- not usable special sector, reboot with sector 150 updated
I2C/OTP started -- Log as 'potential' values for sector 150, then reboot with sector 150 updated
If nothing technical prevents this from working, this would seem to reduce
the complexity of the brute-force method.
From a theoretical point of view i don't see anything preventing this. Am i not considering something vital? This seems a really fun task if i wasn't stuck with an o3ds i would try to pursue this way myself
The question is how low the bar actually is, not including initial development time. Can this be done with only RPI2, without additional electronic circuitry (voltage converters, resistors, capacitors, transistors, etc.)?
From a theoretical point of view i don't see anything preventing this. Am i not considering something vital? This seems a really fun task if i wasn't stuck with an o3ds i would try to pursue this way myself
Most eMMC devices also support SPI mode, if the RPI2 isn't easily able to control the device using CMD/CLK/DAT0. Question: Has anyone discovered which test points correspond to the I2C bus on the various 3DS models (2DS, O3DS, O3DS XL, N3DS, N3DS XL)?
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
Nintendo's expected Summer showcase is here, offering up plenty of new announcements and exciting reveals. Let's see what they have in store in the latest Nintendo...
Continuing with the great news of Pokémon Platinum getting a native unofficial PC port just a few days ago, today, yet another classic title from the franchise has...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
When you talk about 3DS emulation, most people would jump to Citra. As the defacto choice since its first release it's seen tremendous success, and even after its...
A whole hour of PlayStation content is on the way, thanks to the latest State of Play showcase. Headlining the stream will be Marvel's Wolverine, alongside a...
What once seemed like a far off dream, and after many, many community restarts throughout the years, the elusive Mother 1 / EarthBound Beginnings Remake, which is a...
For the first time in 13 years, the Call of Duty series will again return to Nintendo's consoles. Set to launch on the 23rd of October, the latest release, Modern...
Back in April we covered the ROM hacking efforts to add fifth-generation animated sprites to third generation Pokemon games. It remains a thoroughly impressive...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
Nintendo's expected Summer showcase is here, offering up plenty of new announcements and exciting reveals. Let's see what they have in store in the latest Nintendo...
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
With rumours circulating about a Nintendo Direct in the coming days and weeks, fans are left speculating and hoping as to what might be included. At the centre of all...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
A whole hour of PlayStation content is on the way, thanks to the latest State of Play showcase. Headlining the stream will be Marvel's Wolverine, alongside a...
After much speculation and rumour, the fabled Nintendo Direct is upon us. Set to go live tomorrow, the 9th of June, at 3pm in the UK, it'll feature 50 minutes of...
For the first time in 13 years, the Call of Duty series will again return to Nintendo's consoles. Set to launch on the 23rd of October, the latest release, Modern...
Following an investigation over misleading commercial practices, today Nintendo has been imposed a fine of 35 million euros related to the controller malfunctions...
Continuing with the great news of Pokémon Platinum getting a native unofficial PC port just a few days ago, today, yet another classic title from the franchise has...