I edited the post, doing a complete write-up. Check it out!Of course, the DS did not have NAND!
Would be interesting to look into the FIRM used with the DS, maybe it could be tricked with one of those hybrid carts or some clever DS programming.
I edited the post, doing a complete write-up. Check it out!Of course, the DS did not have NAND!
Would be interesting to look into the FIRM used with the DS, maybe it could be tricked with one of those hybrid carts or some clever DS programming.
Right got it thanksYou're dishing out cash either way
so you may as well get Kernal access and unsigned .cia files

That's fun since the encryotion users XOR and a per-console bit stream you can generate the XOR data if you happen to know the plain text. Then you simply XOR an old version with the calculated values and it's valid. Game over.Pretty much; they were lazy. Since the dsi had full NAND access, they just went and did the same for TWL_FIRM. However, this does not work for DS mode, since DS mode didn't have NAND access. Therefore, no ordinary DS flashcart will work.
What we do is take over TWL_FIRM with dsiwarehax, with a game like fieldrunners, installing the hacked save on an already controlled 3ds. (Installing the save, in a nutshell, requires arm9 control) We then transfer the save to the unhacked 3ds, and take over TWL_FIRM, thus being able to dump the NAND, inject an older FIRM with the known plaintext exploit (can someone remind me how that works again please? How can we decrypt FIRM and FIRM alone from an encrypted NAND?) And inject the modified NAND into the 3ds. Since the older FIRM is signed, the 3ds will say "go right ahead! (In running)".
And that's how the DSiWare downgrade works! Dang, this was longer than I thought it'd be. I might actually make a new thread containing this info.
Wait, what?That's fun since the encryotion users XOR and a per-console bit stream you can generate the XOR data if you happen to know the plain text. Then you simply XOR an old version with the calculated values and it's valid. Game over.


Well, I'm still learning nerdese: I don't quite know assembly yet, but I understand most things by now. Plus, I think it's less that I don't understand it and more that he didn't explain it well. It for one doesn't explain why only FIRM can be decrypted. Could you lay it out a bit more for me so I understand it better, @gudenaurock?English; A plaintext attack

Oh sure.Well, I'm still learning nerdese: I don't quite know assembly yet, but I understand most things by now. Could you lay it out a bit more for me so I understand it better, @gudenaurock?
A B Q
0 0 0
1 0 1
0 1 1
1 1 0
byte[] data = readData();
int seed = getSeed();
Random rand = getRandom(seed);
for(int i = 0; i < data.length; i++){
data[i] = data[i] ^ rand.nextByte();
}
byte[] plain = readData(plain);
byte[] encrypted = readData(encrypted);
byte[] pad = new byte[plain.length];
for(int i = 0; i < data.length; i++){
pad[i] = plain[i] ^ encrypted[i];
}

This is precisely what I was wondering. How can you choose the wrong setting, accept an update prompt, and finally agree to the EULA without noticing? I mean, come on; this can't be possible.One does not simply accidentally update while changing the system date and time. My real question is how did you actually manage to do that while following the guide and only changing date and time? I'm not even doing this as negativity towards OP, I'm genuinely curious as to how it managed to become updated.
OK, I think I understand the decryption part. But how do we get the known plaintext in the first place?Oh sure.
So XOR is a binary operation, only true if one input is true. A is input 1, B is input 2 and Q is the output.
Code:A B Q 0 0 0 1 0 1 0 1 1 1 1 0
So you take eight of these for a byte. Now the thing with using this for encryption like on the FIRM partitions is that you can create what I believe is called an "oracle", basicly the old XOR pads from early game decryption just slightly different.
Now, to encrypt or decrypt you (hopefully) need a stream of bytes that is generated from a pseudo random number generator with a seed to create "random" data that will be the same for each iteration of crypto. You then take this stream and the data you want to operate on and iterate through, applying XOR to each byte.
Something like this: (Note the caret is XOR, not exponent)
Code:byte[] data = readData(); int seed = getSeed(); Random rand = getRandom(seed); for(int i = 0; i < data.length; i++){ data[i] = data[i] ^ rand.nextByte(); }
The fun part of this is the "symmetric" nature of an XOR cipher, this allows the use of known plaintext to calculate the "random" numbers used in the crypto. To do this you take the plain text and XOR the encrypted data.
Something like this:
Code:byte[] plain = readData(plain); byte[] encrypted = readData(encrypted); byte[] pad = new byte[plain.length]; for(int i = 0; i < data.length; i++){ pad[i] = plain[i] ^ encrypted[i]; }
Please keep in mind, you can never encrypt a larger blob then the plain text and encrypted portions, you can only go with the smaller of the two.
If you need any more clarification, shout!
Edit:
Please do not kill me for that code, it is bad and slow. It is for clarity.

Exploits, finding it, updates, it really depends!OK, I think I understand the decryption part. But how do we get the known plaintext in the first place?
So how did we find it in the case of 11.0? A9lh?Exploits, finding it, updates, it really depends!

I do think we have all the needed keys, it was probably dumped from an update.So how did we find it in the case of 11.0? A9lh?
One does not simply accidentally update while changing the system date and time. My real question is how did you actually manage to do that while following the guide and only changing date and time? I'm not even doing this as negativity towards OP, I'm genuinely curious as to how it managed to become updated.
To be Honest I myself still cant believe how stupid can I be. I didnt know the site was down so I was keep trying and i keep getting error than i change time /date read i need to fast so i was doing go to the internet clear all date some pop up i didn't read since i was doing fast boom that was the update. that's how it happenThis is precisely what I was wondering. How can you choose the wrong setting, accept an update prompt, and finally agree to the EULA without noticing? I mean, come on; this can't be possible.
Yeah, I can sort of imagine that.To be Honest I myself still cant believe how stupid can I be. I didnt know the site was down so I was keep trying and i keep getting error than i change time /date read i need to fast so i was doing go to the internet clear all date some pop up i didn't read since i was doing fast boom that was the update. that's how it happen
it suck cause now I need to pay $100 for hardmod +a9lh +shipping all that happen cause I was stupidYeah, I can sort of imagine that.
Tip: only pay for a hardmod. A9LH is somewhat easy to install these days, and if you aren't aware, you don't have to mess with hardware to install it.it suck cause now I need to pay $100 for hardmod +a9lh +shipping all that happen cause I was stupid
yeah I know but ii i have to pay might just get the whole comboTip: only pay for a hardmod. A9LH is somewhat easy to install these days, and if you aren't aware, you don't have to mess with hardware to install it.
yeah I know but ii i have to pay might just get the whole combo
(Homebrew can be achieved on 11.0.33 via browserhax, than install menuhax.') so why cant downgrade i thought all we need is to install menhax than downgrade
yeah I know but ii i have to pay might just get the whole combo
(Homebrew can be achieved on 11.0.33 via browserhax, than install menuhax.') so why cant downgrade i thought all we need is to install menhax than downgrade