Форум Magic Team

Переводы, переводы, переводы... => Ромхакинг и перевод => Тема начата: Anton от 31 Марта 2012, 16:33:04

Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Anton от 31 Марта 2012, 16:33:04
Есть ли способ, зная, скажем, первые 10 байт, найти все 12-байтные последовательности байтов?
Скажем, в тексте встречается 800 12-байтных кодов, первые 10 байт в которых 000E0001000900040000.
Мне надо найти 000E0001000900040000???? - типа так. (поиск с wildcard, короче).
И потом сохранить все это в текстовый файл/буфер обмена, после чего убрать повторяющиеся и занести результат в таблицу.

Единственные два хекс-редактора, из кучи опробованных, которые хоть как-то это делают - wind hex и win hex.
Первый все находит, но в файл выводит адреса, по которым находятся коды, но не сами коды.
Второй находит, подсвечивает найденное, но не выделяет найденное, соответственно я не могу скопировать.

А руками как-то страшновато перебирать...
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Джинни от 31 Марта 2012, 17:31:53
Способ один - написать программу. Зачем тебе это?
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Anton от 31 Марта 2012, 17:34:46
Ну как зачем, в таблицу позаносить...

вот вручную нашел:

000E0001000C000400060067={Tag 255}
000E0001000C000400060069={Tag 255001}
000E0001000C00040006006D={Tag 255002}
000E0001000C000400060070={Tag 255003}
000E0001000C000400060071={Tag 255004}
000E0001000C000400060072={Tag 255005}
000E0001000C000400060078={Tag 255006}
000E0001000C000400060083={Tag 255007}
000E0001000C000400060086={Tag 255008}
000E0001000C00040006008A={Tag 255009}
000E0001000C00040006009F={Tag 255010}
000E0001000C0004000600A1={Tag 255011}
000E0001000C0004000600A3={Tag 255012}
000E0001000C0004000600A4={Tag 255013}
000E0001000C0004000600A5={Tag 255014}
000E0001000C0004000600A9={Tag 255015}
000E0001000C0004000600AA={Tag 255016}
000E0001000C0004000600AB={Tag 255017}
000E0001000C0004000600BA={Tag 255018}
000E0001000C0004000600C0={Tag 255019}
000E0001000C0004000600C1={Tag 255020}
000E0001000C0004000600C2={Tag 255021}
000E0001000C0004000600C9={Tag 255022}
000E0001000C0004000600CA={Tag 255023}
000E0001000C0004000600D0={Tag 255024}
000E0001000C0004000600D1={Tag 255025}
000E0001000C0004000600D9={Tag 255026}
000E0001000C0004000600DE={Tag 255027}
000E0001000C0004000600E2={Tag 255028}
000E0001000C0004000600E3={Tag 255029}
000E0001000C0004000600EC={Tag 255030}
000E0001000C0004000600F0={Tag 255031}
000E0001000C0004000600F3={Tag 255032}
000E0001000C0004000600F4={Tag 255033}
000E0001000C0004000600F8={Tag 255034}
000E0001000C0004000600F9={Tag 255035}
000E0001000C000400060128={Tag 255036}
000E0001000C000400060192={Tag 255037}
000E0001000C0004000601F5={Tag 255038}
000E0001000C0004000601F6={Tag 255239}
000E0001000C0004000601F9={Tag 255240}
000E0001000C0004000601FE={Tag 255241}
000E0001000C0004000601FF={Tag 255242}
000E0001000C00040006020A={Tag 255243}
000E0001000C000400060223={Tag 255244}
000E0001000C000400060224={Tag 255245}
000E0001000C000400060225={Tag 255246}
000E0001000C000400060226={Tag 255247}
000E0001000C000400060227={Tag 255248}
000E0001000C000400060259={Tag 255249}
000E0001000C00040006025A={Tag 255250}
000E0001000C00040006025D={Tag 255251}
000E0001000C000400060262={Tag 255252}
000E0001000C000400060288={Tag 255253}
000E0001000C000400060289={Tag 255254}
000E0001000C00040006028A={Tag 255255}
000E0001000C00040006028B={Tag 255256}
000E0001000C00040006028C={Tag 255257}
000E0001000C00040006028D={Tag 255258}
000E0001000C00040006028E={Tag 255259}
000E0001000C00040006028F={Tag 255260}
000E0001000C000400060290={Tag 255261}
000E0001000C000400060299={Tag 255262}
000E0001000C0004000602A5={Tag 255263}
000E0001000C0004000602B1={Tag 255264}
000E0001000C0004000602B2={Tag 255265}
000E0001000C0004000602BB={Tag 255266}
000E0001000C000400060386={Tag 255267}
000E0001000C000400060388={Tag 255268}
000E0001000C00040006038C={Tag 255269}
000E0001000C000400060394={Tag 255270}
000E0001000C000400060396={Tag 255271}
000E0001000C0004000603A0={Tag 255272}
000E0001000C0004000603AC={Tag 255273}
000E0001000C0004000603AF={Tag 255274}
000E0001000C0004000603B0={Tag 255275}
000E0001000C0004000603B1={Tag 255276}
000E0001000C0004000603B6={Tag 255277}
000E0001000C0004000603BB={Tag 255278}

а это только на основе одного 10-байтного 000E0001000C00040006...
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: JurasskPark от 31 Марта 2012, 22:32:48
Я попытался программу написать, но не получается.  :'(
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Anton от 31 Марта 2012, 23:26:22
Спасибо, но немного не то.
Она считает по порядку, от 00 до FF.
В игре же есть пропуски:

000E0001000900040000002D={1940 30}
000E0001000900040000002E={1940 31}
000E00010009000400000030={1940 32}
000E00010009000400000031={1940 33}
000E0001000900040000003D={1940 34}
000E00010009000400000042={1940 35}
000E00010009000400000052={1940 36}
000E00010009000400000053={1940 37}
000E00010009000400000054={1940 38}
000E00010009000400000056={1940 39}
000E00010009000400000057={1940 40}
000E000100090004000000FF={1940 41}
000E00010009000400000100={1940 42}
000E00010009000400000200={1940 43}
000E00010009000400000203={1940 44}
000E00010009000400000207={1940 45}
......................
000E00010009000400001F1C={1940 155}
000E00010009000400002000={1940 156}
000E00010009000400003A00={1940 157}
000E00010009000400004000={1940 158}
000E00010009000400004026={1940 159}
000E00010009000400004200={1940 160}
000E00010009000400004226={1940 161}
000E0001000900040000FF00={1940 162}
000E0001000900040000FF01={1940 163}
000E0001000900040000FF05={1940 164}

Из 805 кодов (точнее, их over 1000 - 805 только в одном из шести архивов с текстами), где первые 10 байт 000E0001000900040000, нашлись 164 разных.
Три часа сидел, и это только 000E0001000900040000хххх.

В HexWorkshop версии 6.6 появился поиск по маске (типа: 0F??3500).
И он даже копирует hex value найденной позиции в буфер, но, падла, только по одной. Все сразу - только адреса.

Представляю, что получится за таблица...
Можно, конечно, оставить 10 байт кода={название}, и в круптаре будет: {название}/xx/xxТекст...
Но хочется ж красиво...

Помогите лучше с плагином...
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: TrickZter от 02 Апреля 2012, 05:52:58
Можно, конечно, оставить 10 байт кода={название}, и в круптаре будет: {название}/xx/xxТекст...
Но хочется ж красиво...
Разве {Tag 255275} - красиво?
По мне так {X}/xx/xx даже лучше чем {Tag xxxxxx}
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Anton от 02 Апреля 2012, 08:01:54
Разве {Tag 255275} - красиво?

А {1940 хх}Текст... - красивее?
Все равно перед многими текстами будет какой-то код из таблицы. И просто {X} (если ты имеешь в виду один символ) - никак не получится, кодов очень много, даже если только 10 байтные оставить.
Плюс вместо /xx/xx могут попадаться буквы, которые можно случайно затереть.
Название: Поиск хекс-значений по маске (с wildcard)
Отправлено: Anton от 03 Апреля 2012, 21:38:01
Если кому вдруг интересно.
Через bookmarks проблема решилась. (Hex Workshop 6.6.1.x и выше).
Выделить все найденное в окошке Results, правой мышой -> Add bookmark, назвать, потом сохранить закладку в файл (Tools -> Bookmarks), потом его открыть -  в окошке Results покажет уже hex values - в Results на пустом поле правой мышой - экспорт в txt.
 Дальше открыть txt в экселе, убрать лишние колонки, отфильтровать по алфавиту и убрать дубликаты. Ctrl+C.
Ctrl+V в таблицу.