Дело было вечером, делать было нечего. Недавно я играл в контру на GB. После Hard'а я решил пройти сложность Maniac, но застрял на одном из уровней (жизей мало и continues равны нулю). Так и возникла идея взломать систему паролей.
Теория Пароль состоит из 4 позиций и 18 битов. Эти биты сохраняют данные игровые параметры:
- текущий уровень (2-5)
- сложность (Easy/Normal/Hard/Maniac)
- количество жизней (0-7)
- количество continues (0-3)
- количество бомб (0-5)
- оружие персонажа (Machine gun/Flamethrower/Homing gun/Spread gun/Crush gun)
Сырой пароль Sum = C
1,C
0,D
1,D
0,G
2,G
1,G
0,S
2,S
1,S
0,Cn
1,Cn
0,B
2,B
1,B
0,L
2,L
1,L
0Обозначения D — номер сложности (0-3) в двоичной системе счисления.
Номер | Сложность |
0 | Easy |
1 | Normal |
2 | Hard |
3 | Maniac |
G — номер пушки (0-4) в двоичной системе счисления.
Номер | Пушка |
0 | Machine gun |
1 | Flamethrower |
2 | Homing gun |
3 | Spread gun |
4 | Crush gun |
S — номер уровня (1-4) в двоичной системе счисления.
Cn — количество continues (0-3) в двоичной системе счисления.
B — количество бомб (0-5) в двоичной системе счисления.
L — количество жизней (0-7) в двоичной системе счисления.
C (контрольная сумма) = количество активированных битов по mod 4.
Генерация пароля После вычисления контрольной суммы, к Sum применяется операция XOR с числом 0xC1.
Потом полученная Sum записывается в позиции:
1 позиция = (((Sum div26)div 26)div 26) mod 26
2 позиция = ((Sum div26)div 26) mod 26
3 позиция = (Sum div26) mod 26
4 позиция = Sum mod 26
КодированиеUS/JP/EU: 1BCD2FGH3JKLMN4PQRST5VWXYZ
Удачи, спасибо за прочтение.