Wii Architecture – A Practical Analysis
copetti.org
copetti.org
AFAIK this was worrying enough for someone from Team Twiizers to try actually contacting Nintendo about it. I don't remember if it was bushing or marcan that tried to reach out, but Nintendo's response was to... ignore them, then cyberstalk them and call their employer. As a "two can play at that game" move, when Nintendo blocked the first title ID the Homebrew Channel used (HAXX), they changed it to JODI instead, referencing the name of Nintendo's current head of antipiracy operations.
I'd add a citation to HackMii but I wasn't able to find the actual post. Though I did see a lot of callout posts against various idiots trying to resell the Homebrew Channel. And callout posts against one particular idiot building really terrible piracy tools that would install a bunch of modified firmwares to your system, which risked bricking it... because Nintendo's system engineering was actually not that much better.
Yeah, one thing this article didn't quite get across is how fragile the Wii system software is. strcmp on hashes is just the tip of the iceberg. In fact, Team Twiizers would regularly dissuade people from playing around with custom channel banners because it was very, very, very easy to make one that would brick your System Menu if installed. And if you did that there was no recovery (at least, not until bootmii/boot2).
I think the rest of that story might have been in their 25c3 talk: https://www.youtube.com/watch?v=0rjaiNIc4W8
For this reason I humbly ask, if you find any mistakes, please report them here:
https://github.com/flipacholas/Architecture-of-consoles/issu...
That will make sure I don’t miss them, thanks!
I think it might be worth a paragraph or two about the innovative use of MEMS gyros and accelerometers in the Wiimote, Motion Plus, and Nunchuk. There's a reasonably good writeup about them here: https://arduino-projects4u.com/wii-motion-plus/ .
For a time, these were one of the easiest and most cost effective sources of small IMUs, giving birth to projects like the early drone flight control system MultiWiiCopter.
15 years later, I'm still surprised these proof-of-concepts didn't evolve into something more commercial.
[1] http://johnnylee.net/projects/wii/
Not sure if it's related to Johnny's work at Google, but there's some cool experiences being built on top of AR Core and Geospatial Creator, with stark resemblance to the ideas and visuals of those early wiimote demos [2][3].
(disclaimer: Googler, but on a different team; no relationship to the things mentioned here other than being a fan of Johnny's wiimote hacks :)
[1] https://www.linkedin.com/in/johnnychunglee/
[2] https://www.thinkwithgoogle.com/consumer-insights/consumer-t...
[3] https://fsstudio.com/googles-geospatial-creator-is-a-powerfu...
This doesn't make sense. strcmp only needs two parameters (the two strings). Perhaps the article is talking about strncmp which takes a third "length" parameter which stops comparison after N characters. But in neither case would it behave as described in the article.
The only way to make it behave that way is if the code first did a strlen() on the channel's hash and then passed that in as the third parameter to strncmp(), which seems bizarre when you're comparing the fixed length output of a hash function...
So, if you brute-force m such that its hash starts with a zero byte, and change s to all zeroes, then the Wii computes strncmp(H(m) = '\0.....', s^e mod n = '\0\0\0\0...', length). Since both hashes start with null bytes, they are treated as empty strings and compare equal.
Recommended resources https://wiibrew.org/wiki/Signing_bug, https://www.youtube.com/watch?v=0rjaiNIc4W8
I can't verify this with my Wii right now because it's standby behavior is... strange. I don't know if it's because I have bootmii/boot2 on it or what, but when it's supposed to be in standby, it instead constantly runs the fan as if it were still on. At some point in the past it worked as I described above though.
Just tested this with my Wii, I put it into standby mode and the Wiimote turns it on.
Another thing is that there are two different standby modes for wii once first booted (can be configured in settings), in one the Starlet is completely powered down (red LED) and in the other it stays on and runs scheduled tasks (orange LED). In early hardware revisions the fan is stopped in the orange mode, while in the later revisions it is temperature controlled (the first revisions will overheat and degrade/destroy the GPU if left in this standby mode for too long).