Homebrew AES key scrambler

  • Thread starter Thread starter Suiginou
  • Start date Start date
  • Views Views 89,907
  • Replies Replies 455
  • Likes Likes 12
Last edited by RednaxelaNnamtra,
I don't think so, it does not directly containing any keys, it only generates them using some simple calculations . For the wii key I think it was a common way to generate them using a program.
well, it depends on who you ask and how you generate the keys ; if it works the way i think; do you use an arbitrary set of bytes ? are your pointers to retrieve the keys unique ?

edit : i checked out your method to generate the keys, and it would be deemed illegal ; you provide an incomplete form of the keys and generate only a few of the bytes ; this is deemed illegal since you use user input to complete part of the keys (as you already have 75% of the keys provided in clear text and you don't give any actual choice to the user, since you ask said user to input a fixed value)
 
Last edited by capito27,
I added the source, so people could check it.
i'll send you a cleaner method that i once used when comming up with a method to generate the keys for 9.5 N3DS firm, basicly it generates the 2k first bytes of PI (pi exists in all bases, including hexadecimal) and it pulls those keys from those bytes and a user input ; it would ask the user to answer a simple question "what is the meaning of the universe" and if the user inputs anything else, the hashes would be wrong, but the user would be warned and prompted to retry.
how this method is supperior to yours : you generate the keys using a subset of PI, by definition PI isn't copyrightable and thus any subset derivated from it isn't. thus making it a cleaner method. i'm implementing it atm, i'll post a source here once i'm done
 
i'll send you a cleaner method that i once used when comming up with a method to generate the keys for 9.5 N3DS firm, basicly it generates the 2k first bytes of PI (pi exists in all bases, including hexadecimal) and it pulls those keys from those bytes and a user input ; it would ask the user to answer a simple question "what is the meaning of the universe" and if the user inputs anything else, the hashes would be wrong, but the user would be warned and prompted to retry.
how this method is supperior to yours : you generate the keys using a subset of PI, by definition PI isn't copyrightable and thus any subset derivated from it isn't. thus making it a cleaner method. i'm implementing it atm, i'll post a source here once i'm done
An example would be enougth, so that I could implement it tomorow.
 
An example would be enougth, so that I could implement it tomorow.
here is my example of implementation when generating and setting up the 9.5 firm key; just feed PI[] through a generator and you'll be legal ; the keygenerator returns an integer if you give it the index in the key and the user generated offset ; you'll have to change a few things around, but this is kinda how it works in the big lines (if you need to generate hex of pi online for test, here you go : http://hexpi.sourceforge.net/webservices/index.php?s=0&n=20 change n to whatever number)
Code:
{
unsigned int KeyGenerator(int Offset, int index)
{
  //under here are all 1024 first decimals of PI, unless we implement a way to compute the first 1024 hexadecimal PI decimals, it will stay as a block this way.
  int PI[1024] =
  {
  0x24, 0x3F, 0x6A, 0x88, 0x85, 0xA3, 0x08, 0xD3, 0x13, 0x19, 0x8A, 0x2E, 0x03, 0x70, 0x73, 0x44, 0xA4, 0x09, 0x38, 0x22, 0x29, 0x9F, 0x31, 0xD0, 0x08, 0x2E, 0xFA, 0x98, 0xEC, 0x4E, 0x6C, 0x89,
  0x45, 0x28, 0x21, 0xE6, 0x38, 0xD0, 0x13, 0x77, 0xBE, 0x54, 0x66, 0xCF, 0x34, 0xE9, 0x0C, 0x6C, 0xC0, 0xAC, 0x29, 0xB7, 0xC9, 0x7C, 0x50, 0xDD, 0x3F, 0x84, 0xD5, 0xB5, 0xB5, 0x47, 0x09, 0x17,
  0x92, 0x16, 0xD5, 0xD9, 0x89, 0x79, 0xFB, 0x1B, 0xD1, 0x31, 0x0B, 0xA6, 0x98, 0xDF, 0xB5, 0xAC, 0x2F, 0xFD, 0x72, 0xDB, 0xD0, 0x1A, 0xDF, 0xB7, 0xB8, 0xE1, 0xAF, 0xED, 0x6A, 0x26, 0x7E, 0x96,
  0xBA, 0x7C, 0x90, 0x45, 0xF1, 0x2C, 0x7F, 0x99, 0x24, 0xA1, 0x99, 0x47, 0xB3, 0x91, 0x6C, 0xF7, 0x08, 0x01, 0xF2, 0xE2, 0x85, 0x8E, 0xFC, 0x16, 0x63, 0x69, 0x20, 0xD8, 0x71, 0x57, 0x4E, 0x69,
  0xA4, 0x58, 0xFE, 0xA3, 0xF4, 0x93, 0x3D, 0x7E, 0x0D, 0x95, 0x74, 0x8F, 0x72, 0x8E, 0xB6, 0x58, 0x71, 0x8B, 0xCD, 0x58, 0x82, 0x15, 0x4A, 0xEE, 0x7B, 0x54, 0xA4, 0x1D, 0xC2, 0x5A, 0x59, 0xB5,
  0x9C, 0x30, 0xD5, 0x39, 0x2A, 0xF2, 0x60, 0x13, 0xC5, 0xD1, 0xB0, 0x23, 0x28, 0x60, 0x85, 0xF0, 0xCA, 0x41, 0x79, 0x18, 0xB8, 0xDB, 0x38, 0xEF, 0x8E, 0x79, 0xDC, 0xB0, 0x60, 0x3A, 0x18, 0x0E,
  0x6C, 0x9E, 0x0E, 0x8B, 0xB0, 0x1E, 0x8A, 0x3E, 0xD7, 0x15, 0x77, 0xC1, 0xBD, 0x31, 0x4B, 0x27, 0x78, 0xAF, 0x2F, 0xDA, 0x55, 0x60, 0x5C, 0x60, 0xE6, 0x55, 0x25, 0xF3, 0xAA, 0x55, 0xAB, 0x94,
  0x57, 0x48, 0x98, 0x62, 0x63, 0xE8, 0x14, 0x40, 0x55, 0xCA, 0x39, 0x6A, 0x2A, 0xAB, 0x10, 0xB6, 0xB4, 0xCC, 0x5C, 0x34, 0x11, 0x41, 0xE8, 0xCE, 0xA1, 0x54, 0x86, 0xAF, 0x7C, 0x72, 0xE9, 0x93,
  0xB3, 0xEE, 0x14, 0x11, 0x63, 0x6F, 0xBC, 0x2A, 0x2B, 0xA9, 0xC5, 0x5D, 0x74, 0x18, 0x31, 0xF6, 0xCE, 0x5C, 0x3E, 0x16, 0x9B, 0x87, 0x93, 0x1E, 0xAF, 0xD6, 0xBA, 0x33, 0x6C, 0x24, 0xCF, 0x5C,
  0x7A, 0x32, 0x53, 0x81, 0x28, 0x95, 0x86, 0x77, 0x3B, 0x8F, 0x48, 0x98, 0x6B, 0x4B, 0xB9, 0xAF, 0xC4, 0xBF, 0xE8, 0x1B, 0x66, 0x28, 0x21, 0x93, 0x61, 0xD8, 0x09, 0xCC, 0xFB, 0x21, 0xA9, 0x91,
  0x48, 0x7C, 0xAC, 0x60, 0x5D, 0xEC, 0x80, 0x32, 0xEF, 0x84, 0x5D, 0x5D, 0xE9, 0x85, 0x75, 0xB1, 0xDC, 0x26, 0x23, 0x02, 0xEB, 0x65, 0x1B, 0x88, 0x23, 0x89, 0x3E, 0x81, 0xD3, 0x96, 0xAC, 0xC5,
  0x0F, 0x6D, 0x6F, 0xF3, 0x83, 0xF4, 0x42, 0x39, 0x2E, 0x0B, 0x44, 0x82, 0xA4, 0x84, 0x20, 0x04, 0x69, 0xC8, 0xF0, 0x4A, 0x9E, 0x1F, 0x9B, 0x5E, 0x21, 0xC6, 0x68, 0x42, 0xF6, 0xE9, 0x6C, 0x9A,
  0x67, 0x0C, 0x9C, 0x61, 0xAB, 0xD3, 0x88, 0xF0, 0x6A, 0x51, 0xA0, 0xD2, 0xD8, 0x54, 0x2F, 0x68, 0x96, 0x0F, 0xA7, 0x28, 0xAB, 0x51, 0x33, 0xA3, 0x6E, 0xEF, 0x0B, 0x6C, 0x13, 0x7A, 0x3B, 0xE4,
  0xBA, 0x3B, 0xF0, 0x50, 0x7E, 0xFB, 0x2A, 0x98, 0xA1, 0xF1, 0x65, 0x1D, 0x39, 0xAF, 0x01, 0x76, 0x66, 0xCA, 0x59, 0x3E, 0x82, 0x43, 0x0E, 0x88, 0x8C, 0xEE, 0x86, 0x19, 0x45, 0x6F, 0x9F, 0xB4,
  0x7D, 0x84, 0xA5, 0xC3, 0x3B, 0x8B, 0x5E, 0xBE, 0xE0, 0x6F, 0x75, 0xD8, 0x85, 0xC1, 0x20, 0x73, 0x40, 0x1A, 0x44, 0x9F, 0x56, 0xC1, 0x6A, 0xA6, 0x4E, 0xD3, 0xAA, 0x62, 0x36, 0x3F, 0x77, 0x06,
  0x1B, 0xFE, 0xDF, 0x72, 0x42, 0x9B, 0x02, 0x3D, 0x37, 0xD0, 0xD7, 0x24, 0xD0, 0x0A, 0x12, 0x48, 0xDB, 0x0F, 0xEA, 0xD3, 0x49, 0xF1, 0xC0, 0x9B, 0x07, 0x53, 0x72, 0xC9, 0x80, 0x99, 0x1B, 0x7B,
  0x25, 0xD4, 0x79, 0xD8, 0xF6, 0xE8, 0xDE, 0xF7, 0xE3, 0xFE, 0x50, 0x1A, 0xB6, 0x79, 0x4C, 0x3B, 0x97, 0x6C, 0xE0, 0xBD, 0x04, 0xC0, 0x06, 0xBA, 0xC1, 0xA9, 0x4F, 0xB6, 0x40, 0x9F, 0x60, 0xC4,
  0x5E, 0x5C, 0x9E, 0xC2, 0x19, 0x6A, 0x24, 0x63, 0x68, 0xFB, 0x6F, 0xAF, 0x3E, 0x6C, 0x53, 0xB5, 0x13, 0x39, 0xB2, 0xEB, 0x3B, 0x52, 0xEC, 0x6F, 0x6D, 0xFC, 0x51, 0x1F, 0x9B, 0x30, 0x95, 0x2C,
  0xCC, 0x81, 0x45, 0x44, 0xAF, 0x5E, 0xBD, 0x09, 0xBE, 0xE3, 0xD0, 0x04, 0xDE, 0x33, 0x4A, 0xFD, 0x66, 0x0F, 0x28, 0x07, 0x19, 0x2E, 0x4B, 0xB3, 0xC0, 0xCB, 0xA8, 0x57, 0x45, 0xC8, 0x74, 0x0F,
  0xD2, 0x0B, 0x5F, 0x39, 0xB9, 0xD3, 0xFB, 0xDB, 0x55, 0x79, 0xC0, 0xBD, 0x1A, 0x60, 0x32, 0x0A, 0xD6, 0xA1, 0x00, 0xC6, 0x40, 0x2C, 0x72, 0x79, 0x67, 0x9F, 0x25, 0xFE, 0xFB, 0x1F, 0xA3, 0xCC,
  0x8E, 0xA5, 0xE9, 0xF8, 0xDB, 0x32, 0x22, 0xF8, 0x3C, 0x75, 0x16, 0xDF, 0xFD, 0x61, 0x6B, 0x15, 0x2F, 0x50, 0x1E, 0xC8, 0xAD, 0x05, 0x52, 0xAB, 0x32, 0x3D, 0xB5, 0xFA, 0xFD, 0x23, 0x87, 0x60,
  0x53, 0x31, 0x7B, 0x48, 0x3E, 0x00, 0xDF, 0x82, 0x9E, 0x5C, 0x57, 0xBB, 0xCA, 0x6F, 0x8C, 0xA0, 0x1A, 0x87, 0x56, 0x2E, 0xDF, 0x17, 0x69, 0xDB, 0xD5, 0x42, 0xA8, 0xF6, 0x28, 0x7E, 0xFF, 0xC3,
  0xAC, 0x67, 0x32, 0xC6, 0x8C, 0x4F, 0x55, 0x73, 0x69, 0x5B, 0x27, 0xB0, 0xBB, 0xCA, 0x58, 0xC8, 0xE1, 0xFF, 0xA3, 0x5D, 0xB8, 0xF0, 0x11, 0xA0, 0x10, 0xFA, 0x3D, 0x98, 0xFD, 0x21, 0x83, 0xB8,
  0x4A, 0xFC, 0xB5, 0x6C, 0x2D, 0xD1, 0xD3, 0x5B, 0x9A, 0x53, 0xE4, 0x79, 0xB6, 0xF8, 0x45, 0x65, 0xD2, 0x8E, 0x49, 0xBC, 0x4B, 0xFB, 0x97, 0x90, 0xE1, 0xDD, 0xF2, 0xDA, 0xA4, 0xCB, 0x7E, 0x33,
  0x62, 0xFB, 0x13, 0x41, 0xCE, 0xE4, 0xC6, 0xE8, 0xEF, 0x20, 0xCA, 0xDA, 0x36, 0x77, 0x4C, 0x01, 0xD0, 0x7E, 0x9E, 0xFE, 0x2B, 0xF1, 0x1F, 0xB4, 0x95, 0xDB, 0xDA, 0x4D, 0xAE, 0x90, 0x91, 0x98,
  0xEA, 0xAD, 0x8E, 0x71, 0x6B, 0x93, 0xD5, 0xA0, 0xD0, 0x8E, 0xD1, 0xD0, 0xAF, 0xC7, 0x25, 0xE0, 0x8E, 0x3C, 0x5B, 0x2F, 0x8E, 0x75, 0x94, 0xB7, 0x8F, 0xF6, 0xE2, 0xFB, 0xF2, 0x12, 0x2B, 0x64,
  0x88, 0x88, 0xB8, 0x12, 0x90, 0x0D, 0xF0, 0x1C, 0x4F, 0xAD, 0x5E, 0xA0, 0x68, 0x8F, 0xC3, 0x1C, 0xD1, 0xCF, 0xF1, 0x91, 0xB3, 0xA8, 0xC1, 0xAD, 0x2F, 0x2F, 0x22, 0x18, 0xBE, 0x0E, 0x17, 0x77,
  0xEA, 0x75, 0x2D, 0xFE, 0x8B, 0x02, 0x1F, 0xA1, 0xE5, 0xA0, 0xCC, 0x0F, 0xB5, 0x6F, 0x74, 0xE8, 0x18, 0xAC, 0xF3, 0xD6, 0xCE, 0x89, 0xE2, 0x99, 0xB4, 0xA8, 0x4F, 0xE0, 0xFD, 0x13, 0xE0, 0xB7,
  0x7C, 0xC4, 0x3B, 0x81, 0xD2, 0xAD, 0xA8, 0xD9, 0x16, 0x5F, 0xA2, 0x66, 0x80, 0x95, 0x77, 0x05, 0x93, 0xCC, 0x73, 0x14, 0x21, 0x1A, 0x14, 0x77, 0xE6, 0xAD, 0x20, 0x65, 0x77, 0xB5, 0xFA, 0x86,
  0xC7, 0x54, 0x42, 0xF5, 0xFB, 0x9D, 0x35, 0xCF, 0xEB, 0xCD, 0xAF, 0x0C, 0x7B, 0x3E, 0x89, 0xA0, 0xD6, 0x41, 0x1B, 0xD3, 0xAE, 0x1E, 0x7E, 0x49, 0x00, 0x25, 0x0E, 0x2D, 0x20, 0x71, 0xB3, 0x5E,
  0x22, 0x68, 0x00, 0xBB, 0x57, 0xB8, 0xE0, 0xAF, 0x24, 0x64, 0x36, 0x9B, 0xF0, 0x09, 0xB9, 0x1E, 0x55, 0x63, 0x91, 0x1D, 0x59, 0xDF, 0xA6, 0xAA, 0x78, 0xC1, 0x43, 0x89, 0xD9, 0x5A, 0x53, 0x7F,
  0x20, 0x7D, 0x5B, 0xA2, 0x02, 0xE5, 0xB9, 0xC5, 0x83, 0x26, 0x03, 0x76, 0x62, 0x95, 0xCF, 0xA9, 0x11, 0xC8, 0x19, 0x68, 0x4E, 0x73, 0x4A, 0x41, 0xB3, 0x47, 0x2D, 0xCA, 0x7B, 0x14, 0xA9, 0x4A,
  };
int pointer[16] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; //redacted because posted online
return (pointer[index]+Offset < 0) ? PI[0]:PI[pointer[index]+Offset] ;
}

// @breif Initialize N3DS keys
void KeyInit(void* source)
{
  int i;
  int UserInput = 42; //proper function to be implemented, question to the user will be "What is the meaning of life?"
  uint8_t firm_key[16] = { 0 };
  uint8_t * _source = (uint8_t*)source;
  for (i = 0; i<16; i++)
  {
  firm_key[i] = _source[i] ^ KeyGenerator(UserInput,i);
  }
  setup_aeskeyX(0x16, firm_key);
}
 
Last edited by capito27,
here is my example of implementation when generating and setuping the 9.5 firm key; just feed PI[] through a generator and you'll be legal ; the keygenerator returns an integer if you give it the offset in the key and the user generated index ; you'll have to change a few things around, but this is kinda how it works in the big lines (if you need to generate hex of pi online for test, here you go : http://hexpi.sourceforge.net/webservices/index.php?s=0&n=20 change n to whatever number)
this is literally exactly as illegal as distributing straight keys just btw~
 
in which way ? i'm curious about how this is as illegal ?
Instructing a user on how to modify some data (i.e. 'enter this number and click this button') or telling them where to look to find copyrighted information ('x position in this irrational number') is still disseminating copyrighted information. Digital copyright law is as arbitrary as these numbers can be, but it doesn't mean they aren't protected in all of these cases.
People tried to do this with Wii keys in the past and promptly got all their tools DMCA'd.
 
Instructing a user on how to modify some data (i.e. 'enter this number and click this button') or telling them where to look to find copyrighted information ('x position in this irrational number') is still disseminating copyrighted information. Digital copyright law is as arbitrary as these numbers can be, but it doesn't mean they aren't protected in all of these cases.
People tried to do this with Wii keys in the past and promptly got all their tools DMCA'd.
ok, let's have some fun, shall we :
first of all, you are talking about the Digital Millennium Copyright Act. (yes, Digital Copyright law, according to google at the very least, is another term for the DMCA), which you should know is only valid in the USA (page one of the DMCA text "U.S. Copyright Office Summary" this means that it is an USA national law, not valid world-wide), this forum being hosted in france (http://whois.domaintools.com/gbatemp.net) and one of it's administrators being from south england and the other one from an unknown location, makes this board hosting this content perfectly legal (at least from your stand point and the legal text you cited).
then, this program would only be illegal to USA users according to you, then i'll just decline any consequences that may occure from downloading and executing the tool if the user is currently living in the USA.
Also, i'd be very interested to know about where you got your criterion in the first sentence, not that i don't trust you, simply that one shouldn't believe everything one sees on the internet without any proof of any kind, for all I know, you may have totally made up those criterions.
And also, just to inform you, from your views on what constitutes Illegal content or not, your webservice for unlocking the parental control (https://mkey.salthax.org/) is also VERY illegal ; let me show you article 12 I of the DMCA (you can find more details here, if you feel so inclined, page 6)
Article 12 of the WCT provides in relevant part:
Contracting Parties shall provide adequate and effective legal remedies against any person knowingly performing any of the following acts knowing, or with respect to civil remedies having reasonable grounds to know, that it will induce, enable, facilitate or conceal an infringement of any right covered by this Treaty or the Berne Convention :(i) to remove or alter any electronic rights management information without authority;
as you can see, the the last part of the article, it is stated that it it illegal to remove or alter any electronic rights managment information without authority....this sounds awfully simillar to what parental control is supposed to do, doesn't it, to manage the rights, and your tool allows users to remove the right managment information without any authority control. would be a problem if you were to get in trouble with DMCA laws, because you know, you live in the USA.
 
  • Like
Reactions: night_hawk
ok, let's have some fun, shall we :
first of all, you are talking about the Digital Millennium Copyright Act. (yes, Digital Copyright law, according to google at the very least, is another term for the DMCA), which you should know is only valid in the USA (page one of the DMCA text "U.S. Copyright Office Summary" this means that it is an USA national law, not valid world-wide), this forum being hosted in france (http://whois.domaintools.com/gbatemp.net) and one of it's administrators being from south england and the other one from an unknown location, makes this board hosting this content perfectly legal (at least from your stand point and the legal text you cited).
then, this program would only be illegal to USA users according to you, then i'll just decline any consequences that may occure from downloading and executing the tool if the user is currently living in the USA.
Also, i'd be very interested to know about where you got your criterion in the first sentence, not that i don't trust you, simply that one shouldn't believe everything one sees on the internet without any proof of any kind, for all I know, you may have totally made up those criterions.
And also, just to inform you, from your views on what constitutes Illegal content or not, your webservice for unlocking the parental control (https://mkey.salthax.org/) is also VERY illegal ; let me show you article 12 I of the DMCA (you can find more details here, if you feel so inclined, page 6)

as you can see, the the last part of the article, it is stated that it it illegal to remove or alter any electronic rights managment information without authority....this sounds awfully simillar to what parental control is supposed to do, doesn't it, to manage the rights, and your tool allows users to remove the right managment information without any authority control. would be a problem if you were to get in trouble with DMCA laws, because you know, you live in the USA.
GBATemp is prompt to comply to DMCA requests...
 

Site & Scene News

Popular threads in this forum