Форум сайта python.su
4
Добрый вечер!
Я анализирую содержимое бинарного файла. Часть документации в открытом доступе, и на ее основе удалось частично восстановить логику. Осталось проанализировать извлеченные фрагменты. Вот длина некоторых из них:
[10, 15, 16, 18, 19, 22, 23, 24, 26, 28, 29, 30]
Отредактировано vanvanov (Ноя. 27, 2019 23:05:42)
Офлайн
857
vanvanovБинарный файл можно легко создать, заполнив его произвольными данными (мусором). Так что выражение “бинарный файл” ни о чём не говорит.
Я анализирую содержимое бинарного файла.
vanvanovГде ты видел данные по три байта? 1, 2, 4, 8, 16, …, 256 - вот стандартные длины для разных данных (от чисел до пакетов). Остальные длины - это либо строки, ограниченные маркером конца строки или заданной длиной перед строкой, либо хрен знает, кто это делал и стоит ли с этим разбираться.
3 байта + 2 байта + 2 байта
vanvanovДа, похоже на набор произвольных мыслей.
Извините, если не очень понятно сформулировал особенности задачи.
Отредактировано py.user.next (Ноя. 28, 2019 01:01:40)
Офлайн
253
vanvanovУгу.
Извините, если не очень понятно сформулировал особенности задачи.
vanvanovТак напишите что это за файл. Если есть возможность прикрепите его к сообщению.
Часть документации в открытом доступе
vanvanovСформулируйте цель анализа.
Я анализирую содержимое
vanvanovЧто именно вы можете проще всего вам самому выяснить. А вот есть ли принципиальная возможность кому угодно по сообщению А узнать наступает ли событие Б определяется информативностью сообщения А. Если вам именно это нужно то смотрите что такое информационная энтропия и количество информации.
Могу ли я на основе, для начала, длины фрагментов
Офлайн
4
py.user.nextЗдесь, если интересно. Из libmtquery, README.rus:
Где ты видел данные по три байта?
3 байта - номер слова (4 байтовый long ужатый до 3-х байт)У меня получается расшифровать, когда прибавляю b'\x00'.
Офлайн
4
doza_andСловари Multitran в виде dict.ert и прочее отсюда.
Так напишите что это за файл. Если есть возможность прикрепите его к сообщению.
doza_andЕсть библиотека для анализа словарей в бинарном формате на C++, которая, видимо, уже давно не поддерживается. Хочу сделать актуальную реализацию на Python. В C++ я не бум-бум, увы.
Сформулируйте цель анализа.
Сформулируйте и приведите алгоритм анализа который у вас получился.Увы, полное описание не одну страницу займет. Делалось по 2 README из файлов этого проекта. Эти README, видно, писались для себя, потому что много белых пятен. Вкратце: есть база данных словарей в своем собственном формате. Для описания слов обычно используется алгоритм:
b'\xfccynv~!\x13\x0c&\x19\x1d51AQ' b'\xfcc|\x87\x8dz\x91\x89-\x1b\x17*A3^\x8a' b'\xfcqs\x82\x80{!\x06\x1b\x1f(%5Eo@IS' b"\xfcmpt{\x8d?\x8d\x8c\x9f\x9b?'.:=EAYZajq\x81" b'\xfcsv|y9\x8c\x94\xa0\x9f\xab\xa2\xa7i\xb0\xbe\xcd\x81\xca\xdc\xe1\xdd\xe8\xf9\xf4\x00\x05\x02\x15\xab\x99\xa3\xa8\xa5\xaf\xc3\xbb\xc7\xcc\xca\xdb\x1d\x17\xe9\xf1\xf6\x01\xfd\x0b\x14\x0c\x19."_2+qAM^aT\x95eahu\x80\x94\xae\xda\xe4' b'\xfcml\x82~\x88\x93\x97\x94\x94\x9f\xa6\xa4K1EIGK%`fmj\xab\x80\x85\x8e\x88\x8d\x94\xa2\xa3\xa6\xd6\x05' b'\xfcdvz\x83\x88\x92\x8e\x9f\x96W\xa1\xa8\xbc\xb8\xbc\xc9cX[dk_gx\x7f\x80\xbd\x92\x94\x8f\xa2\xca\xf3\xff'
Офлайн
253
vanvanovМаловероятно что кто-то шифрует числа. Могут использовать разное количество байт для представления целых чисел.
шифруют ряд целых чисел
Офлайн
857
vanvanov
Есть библиотека для анализа словарей в бинарном формате на C++, которая, видимо, уже давно не поддерживается. Хочу сделать актуальную реализацию на Python. В C++ я не бум-бум, увы.
vanvanovДумаю, тебе рано этим ещё заниматься. Лучше делай программы по хорошо документированным материалам, пока учишься. Уверяю тебя, на хорошо документированных материалах ты также будешь испытывать трудности. А когда опыт наберёшь, тогда можешь и реверсией заняться. На данном же этапе ты просто потеряешь время и результат будет нулевой. И опыта хорошего и качественного тоже не получишь. Поначалу нужно делать удобные задачки.
Они, скорее всего, шифруют ряд целых чисел. Пытаюсь понять алгоритм, который использовался для создания этих фрагментов.
Офлайн
4
py.user.next
Когда-то же надо начать таким заниматься. Уже 6 лет программирую на Питоне в качестве хобби.
Офлайн
4
doza_andДа, это я и имел в виду.
Маловероятно что кто-то шифрует числа. Могут использовать разное количество байт для представления целых чисел.
Смотреть надо не в readme а в коде на c++. Скомпилировать запустить под отладчиком. Если библиотека старая то взять старые словари.Пока не скомпилировал. Куча непонятных предупреждений. Правда, на новой системе. Возможно, следует достать старый дистрибутив Линукса.
Думаю ваша работа будет полезна если вы для словарей мультирана составите описание для kataiСпасибо. Уже смотрел, но бинарные файлы для меня - относительно новая тема, поэтому пока слишком круто.
https://kaitai.io/.
Офлайн
857
vanvanovНу, вот ты говоришь про бинарные файлы и мне становится понятно, что ты не понимаешь, что это. А это ведь такая обширная тема и по ней лучше начинать с чего-то облегчённого, с чего-то с подсказками и разжёванным до каждого бита материалом. Что ты знаешь, например, о little- и big-endian при хранении бинарных файлов на диске и в памяти программы? Вот ты знаешь, что они просто могут различаться? Это маловероятно, что ты это знаешь. А когда работаешь с бинарными файлами, причём с файлами из реального мира, а не с учебными, это всё надо представлять и учитывать. И длина этих байтовых последовательностей может меняться: в памяти программы хранится одно по длине, а сохраняется другое. За пять минут это всё не объяснишь.
Когда-то же надо начать таким заниматься. Уже 6 лет программирую на Питоне в качестве хобби.
Отредактировано py.user.next (Ноя. 28, 2019 13:31:57)
Офлайн