Skip to content

Secrets

Andrew Nagle edited this page Nov 15, 2015 · 1 revision

Secrets are represented using a combination of 64 different symbols, listed below:

B D F G H J L M #
N Q R S T W Y ! + -
b d f g h j m $ * / : ~
n q r s t w y ? % & ( = )
2 3 4 5 6 7 8 9 @

Each character represents a 6-bit integer, ranging from 0 to 63. The values of each symbol are as follows:

0 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36 37
38 39 40 41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60 61 62 63

Decoding the cipher

These 3 bits calculate where to start decoding the code. These 3 bits are not encoded, the rest of the code (not confirmed if it includes the checksum or not), including the other 3 bits of character 1 are encoded

To decode the sequence, first multiply the Cipher start byte by 4 to locate the correct start position to decode the password. The cipher starts at 4bytes multipled by the cipher start byte ID

Example of decoding a linked game code As an example I'll demonstrate decoding the first few characters of the following code:

mG52B 5g7rY 3)G♣# 4QjW:

m is 32, or 100000 in 6 bit binary, only the first 3 bits are needed to determine the start position, which is 100, 100 in decimal is 4, so multiply 4 by 4=16. The 16th character in the cipher string is 9. Once the start position has been located, the code can be decoded by XORing each character with it's counterpart in the cipher string.

m is 32 XORed with 9 = 41 G is 3 XORed with 41 = 42 5 is 54 XORed with 59 = 13 2 is 51 XORed with 49 = 2 B is 0 XORed with 2 = 2

and so on

cipher string is zero-based and is as follows:

21, 35, 46,  4, 13, 63, 26, 16,
58, 47, 30, 32, 15, 62, 54, 55,
 9, 41, 59, 49,  2, 22, 61, 56, 
40, 19, 52, 50,  1, 11, 10, 53,
14, 27, 18, 44, 33, 45, 37, 48,
25, 42,  6, 57, 60, 23, 51, 24
Clone this wiki locally