Автор Тема: [NES] Metal storm - генерирование паролей  (Прочитано 3279 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Awl

  • Пользователь
  • Сообщений: 38
  • Пол: Мужской
    • Twitter
    • Youtube
    • Просмотр профиля
[NES] Metal storm - генерирование паролей
« : 31 Декабрь 2016, 21:24:52 »
Дело было вечером, делать было нечего. Я играл в Metal storm на сложности Expert и очень сильно злился из-за нехватки жизней. Пройдя один из уровней, я увидел, что игра выдаёт мне пароль. Тут то и родилась мысль взломать систему паролей, и накрутить побольше жизней. Своими наработками в этом нелёгком деле я хотел бы с Вами поделиться.

Теория

Пароль состоит из 10 позиций, каждая позиция состоит из 5 битов, итого 10*5= 50 битов. Эти биты сохраняют данные игровые параметры:
  • текущий уровень ((1-1)—(7-1))
  • сложность (Normal/Expert)
  • количество жизней (0-127)
  • количество очков (0-1048575)
  • улучшения (пушка, щит, броня, огненый шар)

Сырой пароль

(L6,L5,L4,L3,L2) (H14,H13,H12,H11,H10) (H19,H18,H17,H16,H15) (S3,S2,S1,S0,A0) (C14,C13,C12,C11,C10) (C24,C23,C22,C21,C20) (H9,H8,H7,H6,H5) (G0,L1,L0,Sh0,F0) (H4,H3,H2,H1,H0) (R4,R3,R2,R1,R0)

Обозначения

L — номер жизней (0-127) в двоичной системе счисления.
H — количество очков (0-1048575) в двоичной системе счисления.
S — номер уровня (0-15) в двоичной системе счисления.

НомерУровеньСложность
01-1Normal
12-1Normal
23-1Normal
34-1Normal
45-1Normal
56-1Normal
67-1Normal
71-1Expert
82-1Expert
93-1Expert
104-1Expert
115-1Expert
126-1Expert
137-1Expert
141-1Normal
15Final bossNormal

A — броня.
G — номер пушки (0-1) в двоичной системе счисления.

НомерПушка
0Начальная
1Волновая

Sh — щит.
F — огненый шар (работает во время смены гравитации).
R — рандом (0-31) в двоичной системе счисления.

Жизни = (((H14∗64) + (H13∗96) + (H12∗112) + (H11∗120) + (H10∗124) + (H4∗64) + (H3∗96) + (H2∗112) + (H1∗120) + (H0∗124)) mod128 + номер жизней) mod128

C1 = (3 позиция + 4 позиция +7 позиция + 8 позиция) mod32
C2 = (1 позиция - 2 позиция - 9 позиция) mod32

После вычисления C1 и C2, нужно к начальному паролю прибавить макет, который зависит от рандома.

Рандом mod8Макет
09,22,30,19,22,22,6,16,5,0
125,1,0,20,6,16,0,4,26,0
228,21,29,18,22,21,4,21,28,0
317,7,13,31,11,20,17,8,10,0
418,1,30,9,22,27,12,12,0,0
50,11,31,6,1,27,21,22,6,0
621,2,16,18,21,15,14,20,19,0
70,10,10,3,22,25,10,30,3,0

Потом нужно к 1 и 5 позициям прибавить: (рандом div8)∗8
После этого ко всем позициям применяется операция: mod32

Кодирование

US: TSD8K970B1P!VNXC3M4♥QHZ5F2GRWJL6
JP: TED8K97UB1PYONXC3M4IAHZ5F2GRWJL6

Удачи, спасибо за прочтение, поздравляю всех Вас с наступающим Новым Годом!
« Последнее редактирование: 01 Январь 2017, 19:09:26 от Awl »

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Metal storm - генерирование паролей
« Ответ #1 : 31 Декабрь 2016, 22:32:12 »
Awl, взаимно)
Хм, взлом паролей, хорошая тема, об этом мне тоже стоит написать...