Форум сайта python.su
Приветствую!
Вопрос скорее общего характера, а не по Python. Анализирую структуру двоичных файлов одной популярной программы-словаря. При этом я 100% уверен, что где-то в ресурсах программы должно быть слово b'HelenDZ' (или b'helendz'), потому что я видел его в словаре, однако поиск по бинарникам не дает результатов. Я знаю, что, к примеру, кириллица имеет в бинарнике кодировку cp-1251, но ведь вышеуказанное слово состоит из латиницы и должно лежать именно в форме b'HelenDZ'. Пробовал использовать словарь оффлайн, все то же самое. Значит, это слово лежит где-то в ресурсах. Все ресурсы, судя по всему, лежат в одном главном каталоге с программой. Но почему поиск не дает результатов (он рабочий, я проверял)?
Отредактировано vanvanov (Янв. 13, 2020 13:28:49)
Офлайн
vanvanov
Значит, это слово лежит где-то в ресурсах.
>>> 'HelenDZ'.encode('utf-16') b'\xff\xfeH\x00e\x00l\x00e\x00n\x00D\x00Z\x00' >>> >>> 'HelenDZ'.encode('utf-32') b'\xff\xfe\x00\x00H\x00\x00\x00e\x00\x00\x00l\x00\x00\x00e\x00\x00\x00n\x00\x00\x00D\x00\x00\x00Z\x00\x00\x00' >>>
Офлайн
py.user.next
К сожалению, ничего не найдено. Еще какие-нибудь варианты?
Офлайн
vanvanovну так сказать трудно, наврядли у вас чтото выйдет если вы не знаете наверняка:
Еще какие-нибудь варианты?
[code python][/code]
Отредактировано PEHDOM (Янв. 13, 2020 17:43:40)
Офлайн
vanvanovТам вариантов миллион. Но даже открытые данные в ascii могут храниться не так, как ты предполагаешь.
К сожалению, ничего не найдено.
PEHDOMМожет быть сжат, может храниться вообще не там и не так. Эти строки вообще в базе данных могут храниться в её внутреннем формате.
2. сжат ли чемто файл.
PEHDOMМожет быть и зашифрован чисто в целях гарантии целостности данных. Так что и не XOR может быть, а более стойкий алгоритм.
3. зашифрован ли файл.
Отредактировано py.user.next (Янв. 14, 2020 04:37:00)
Офлайн
Один из хороших вариантов разобраться - добавить свое слово и посмотреть что изменилось. Конечно если есть такая возможность.
Офлайн
doza_andСпасибо за дельный совет!
Один из хороших вариантов разобраться - добавить свое слово и посмотреть что изменилось. Конечно если есть такая возможность.
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KIT|\xa6\xb0'
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa5\xa9\xb1\xb5\x9a\xc4\xce'
Офлайн
Масок тут нет скорее всего.
То что меняется на длину слова +1 говорит о том что там слово байт в байт+длина в один байт или терминатор.
Со стороны вообще неясно о чем идет речь. То слово добавляется и про него вы говорите как что удлиняется потом комментарий появляется, который вы непонятно зачем исследуете. Когда вы описываете ваши тесты непонятно какие гипотезы вы проверяете. По результатам тестов из описания не видно какие вы выводы сделали.
Я бы посоветовал действовать более последовательно (менее хаотично). Начать со слова длины 1. Без комментариев. Найти способ кодирования (отображение данных в циферки). Сравнить с таблицами кодировок, которых туча. Может найдете вашу тогда смотрите на файл применяя эту кодировку. Потом добавляйте количество букв. Как разберетесь, займитесь комментариями.
Отредактировано doza_and (Янв. 26, 2020 07:55:25)
Офлайн
doza_andДело в том, что у словаря достаточно сложная структура. Есть специальный файл для окончаний, есть для основ, есть индекс, который склеивает номера основ во фразы, и есть файл (самый большой), по которому строится словарная статья. Я сейчас на последнем этапе (построение статьи), остальное я более-менее успешно распарсил. Структура файлов, на самом деле, несложная. Там действительно слова кодируются байт-в-байт, без шифрования, кодировка windows-1251 (да, программа старая, появилась еще в 90-х, если не раньше). При добавлении термина изменяются несколько бинарников подряд, при добавлении комментария - только 1 (отвечающий за словарную статью), поэтому изменения легче отследить. Бинарник, отвечающий за словарную статью, является исключением - там не windows-1251. На данный момент точно известно, что в нем хранятся номера статей и комментарии. Что еще - не знаю.
То слово добавляется и про него вы говорите как что удлиняется потом комментарий появляется, который вы непонятно зачем исследуете.
doza_andТам примерно такое:
Найти способ кодирования (отображение данных в циферки). Сравнить с таблицами кодировок, которых туча.
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa3\x88\xb2\xbc'
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa4\x88\xb2\xbc'
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa3\xa9\xaf\xb5\x9a\xc4\xce'
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa5\xa9\xb1\xb5\x9a\xc4\xce'
b'\xfcqo\x7fx\x87\x8e\x98\x94\x9f93(946KITs\xa5\xa9\xb1\xb6\x9a\xc4\xce'
Отредактировано vanvanov (Янв. 26, 2020 12:05:27)
Офлайн
vanvanovНу например авторы подумали что неплохо бы RLE сжатие применить. https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D0%B8%D0%BD_%D1%81%D0%B5%D1%80%D0%B8%D0%B9
Как такое может быть?
Офлайн