IPB

Добро пожаловать, гость ( Вход | Регистрация )

> The Neverhood, хеш алгоритм
-=CHE@TER=-
Jul 9 2011, 12:33
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Пишу сейчас страничку для сайта (ctpax-cheater) для игры The Neverhood.

В игре во всю используется вот такая хеш-функция (я её немножно переписал под свои нужды):

CODE
// The Neverhood hash routine
Const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

Function StrHash(S: String): Longword;
Var I, C, K: Longword;
Begin
  result:=0;
  C:=0;
  For I:=1 To Length(S) Do
  Begin
    S[I]:=UpCase(S[I]);
    K:=Pos(S[I], chars);
    If K <> 0 Then
    Begin
      If K <= 10 Then // Digits
        C:=C + (Ord(S[I]) + $16 - $40)
      Else
        C:=C + (Ord(S[I]) - $40);
      If C >= $20 Then C:=C - $20;
      result:=result xor (1 ShL C);
    End;
  End;
End;


Т.е. игнорируется всё, что не цифры и английские буквы, затем от получившегося считается хеш.
В demo-версии эта функция находится в sub_425C10.
Ею зашифрованы как коды, так и имена файлов в .BLB архивах.

В Интернете нагуглил только два кода (там ещё один есть, но он неработающий - что-то забыли):
fastforward - увеличивает скорость игры в два раза (хеш $843070C0)
happybirthdayklaymen - работает только на первом экране - перекидывает игрока на второй (*улыбается*) (хеш $188B2105)
После набора кода нужно нажать ENTER. Перед набором, кстати, тоже неплохо будет - вдруг уже что-то нажимали (ENTER отправляет код на обработку и чистит буфер ввода для кода).

Однако, если поглядеть под отладчиком даже demo-версию - кодов там дохрена и больше (вернее хешей). Плюс они раскиданы по нескольким разным функциям (как два кода выше), что затрудняет работу с ними.

Есть, например, хеш $10410127 - он сохраняет текущий кадр игры в c:\NevShot.bmp (даже во время проигрывания smack-видео!). Но вот какой код ему соответствует - хрен знает.

Есть два способа посмотреть все коды:
1) Заменить хеши на известные значения.
2) Brute-force (полный перебор).

1-ый способ очень неудобен, потому что:
а) Все хеши кодов внутри какого-то case/switch и они должны быть заменены на соответствующие (т.е. отсортированы по возрастанию, а не как попало).
б) Они разбросаны по разным функциям, так что бегать между ними очень неудобно.
в) Этот способ неудобен ещё и тем, что его нельзя предложить всем имеющим игру - им придётся её как минимум патчить.

Перебор же очень трудоёмкий, даже если выбросить оттуда UpCase (т.е. заведомо перебирать только заглавные буквы и цифры) и оптимизировать.
Я заметил, что в этом алгоритме на каждом шаге зажигается или гасится (если уже был зажжён) 1 бит в хеше. Т.е. для упомянутого хеша $10410127 слово-пароль должно состоять как минимум из 8 знаков (с учётом того, что ни один бит не выключался), так как в этом числе 8 не нулевых бит.

Собственно, вопрос: кто-нибудь может предложить простой и быстрый алгоритм для перебора?

Может быть я чего-то не вижу и здесь можно гораздо быстрее и проще хеш подобрать.
Мне не обязательно получить именно тот код, который задумывался создателями - какая-нибудь последовательность типа "bsb99dc" - тоже сойдёт.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
Axsis
Jul 16 2011, 20:00
Сообщение #2


Advanced Member
***

Группа: CTPAX-X
Сообщений: 121
Регистрация: 6-February 08
Пользователь №: 374
Спасибо сказали: 149 раз(а)



google на запрос "c:\NevShot.bmp" первой же выдаёт ссылку на "лицокнигу":
_ttp://www.facebook.com/note.php?note_id=186139338110083
QUOTE
The developers of The Neverhood created secret shortcuts to make testing faster and easier. Most of these "cheats" were removed from the retail version, but a few are still there. While playing the game, hit the ENTER key, type one of the codes below, and then hit ENTER again. When the cheat code is right you will hear a short sound effect. For codes that solve specific puzzles, you have to already be in that part of the game. Here are some codes that you can try out:

FastForward
Makes everything move faster. Doing it again will set the speed back to normal. Great for getting through the Hall of Records!

ScreenSnapShot
Saves a screen shot image to your hard drive as a file called c:\NevShot.bmp. Doing it again will overwrite the previous one, so you have to move or rename the file each time.

HappyBirthdayKlaymen
Gets you out of the Nursery (the first room)

LetMeOutOfHere
Gets you out of the Nursery Lobby (the second room with the rings and Venus Fly Trap)

Please
Solves the panel puzzle in the Dynamite Shack

заметка свежая - от 7 июля. учитывая, что и тема начата 9-го июля, напрашивается вопрос - чем вызвано такое одновременное возобновление интереса к этой игре? или это просто совпадение? smile.gif


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
-=CHE@TER=-   The Neverhood   Jul 9 2011, 12:33
Axsis   $10410127 - "AACCHFFD" ;) Правда у...   Jul 9 2011, 20:07
-=CHE@TER=-   $10410127 - "AACCHFFD" ;)Вай!...   Jul 10 2011, 04:30
Axsis   В общем каждый символ кода (цифра или буква) сдвиг...   Jul 11 2011, 14:15
-=CHE@TER=-   Спасибо большое! Примерно понял, в ближайшее в...   Jul 11 2011, 17:05
-=CHE@TER=-   Вот так: Function HashToStr(Hash: Longword...   Jul 16 2011, 08:44
Axsis   google на запрос "c:\NevShot.bmp" п...   Jul 16 2011, 20:00
-=CHE@TER=-   google на запрос "c:\NevShot.bmp" п...   Jul 17 2011, 07:29
-=CHE@TER=-   Так, почистил и переместил тему сюда. Ещё раз отде...   Jan 1 2012, 14:14
-=CHE@TER=-   Вчера обновил (так, мелкое обновление перед переме...   Apr 22 2014, 13:00
Siberian GRemlin   Ты уверен, что смотрел второе, исправленное издани...   Apr 23 2014, 12:50
-=CHE@TER=-   Тут проблема в том, что фиг знает как отличить пер...   Apr 24 2014, 05:46
Siberian GRemlin   Проверил. Второе издание отличается только исправл...   Apr 24 2014, 13:14
-=CHE@TER=-   Ну, значит моё исправление точно лишним не будет. ...   Apr 24 2014, 14:11
Siberian GRemlin   Какие технические сложности могут возникнуть при п...   Mar 26 2018, 08:45
-=CHE@TER=-   Какие технические сложности могут возникнуть при п...   Mar 26 2018, 09:47
-=CHE@TER=-   Товарищ закончил видео: [url=https://www.youtube.c...   Mar 28 2018, 10:16
Siberian GRemlin   Нет, «hood» это суффикс, используемый в существите...   Mar 28 2018, 13:54
-=CHE@TER=-   Кстати, что-то я протупил - в игре есть несколько ...   Apr 12 2018, 15:55
-=CHE@TER=-   Ну, начну в хронологическом порядке про хеши - с з...   Apr 11 2020, 13:25
hidefromkgb   Я верно понимаю, что перебиралось всё со скоростью...   Nov 23 2020, 10:42
-=CHE@TER=-   Я верно понимаю, что перебиралось всё со скоростью...   Nov 23 2020, 13:01
-=CHE@TER=-   Siberian GRemlin, извини, что я тебя не предупре...   Jul 19 2022, 15:22
Siberian GRemlin   Э-э, а я тут каким боком? Меня хороший человек, ко...   Jul 19 2022, 15:36
-=CHE@TER=-   Спасибо! Просто ты на предыдущей странице спра...   Jul 19 2022, 15:45
Siberian GRemlin   Просто ты на предыдущей странице спрашивал про то ...   Jul 19 2022, 16:05
Siberian GRemlin   Друг спрашивает, стоит ли ждать перевода «Skullmon...   Aug 13 2022, 09:51
-=CHE@TER=-   Мы с Rigel даже никогда не затрагивали этот вопрос...   Aug 13 2022, 15:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 29th March 2024 - 11:00