Что именно вызывает "тарабарщину” двоичного файла?

StackOverflow https://stackoverflow.com/questions/216066

  •  03-07-2019
  •  | 
  •  

Вопрос

Я не нашел ответа на этот конкретный вопрос;возможно, такового вообще нет.Но я уже некоторое время размышляю об этом.

Что именно заставляет двоичный файл отображаться как "тарабарщина", когда вы просматриваете его в текстовом редакторе?То же самое происходит и с зашифрованными файлами.Пытаются ли преобразовать двоичные значения файла в ASCII?Можно ли преобразовать представление для отображения необработанных двоичных значений, т.е.чтобы показать цифры 1 и 0, которые составляют файл?

Наконец, есть ли способ определить, какая программа правильно откроет файл данных?Часто, особенно в Windows, файл оказывается потерянным или иным образом не связан с определенной программой.Открыв его в текстовом редакторе, вы иногда узнаете, где оно находится, но в большинстве случаев этого нет из-за тарабарщины.Если расширение не предоставляет никакой информации, как вы можете определить, к какой программе оно принадлежит?

Это было полезно?

Решение

  • Пытаются ли преобразовать двоичные значения файла в ASCII?

Да, именно это и происходит.Как правило, двоичные значения файла также включают управляющие символы ASCII, которые недоступны для печати, что приводит к еще более причудливому отображению в обычном текстовом редакторе.

  • Можно ли преобразовать представление для отображения необработанных двоичных значений, т.е.чтобы показать цифры 1 и 0, которые составляют файл?

Это зависит от вашего редактора.То, что вам нужно, - это "шестнадцатеричный редактор", а не обычный текстовый редактор.Это покажет вам исходное содержимое файла (обычно в шестнадцатеричном, а не двоичном формате, поскольку нули и единицы займут много места и их будет сложнее прочитать).

  • Наконец, есть ли способ определить, какая программа правильно откроет файл данных?

Существует программа командной строки Linux, которая называется "файл" это попытается проанализировать файл (обычно в поисках общих шаблонов заголовков) и сообщить вам, что это за файл (например, текст, или аудио, или видео, или XML и т.д.).Я не уверен, существует ли эквивалентная программа для Windows.Конечно, результат работы этой программы - всего лишь предположение, но он может быть очень полезен, когда вы не знаете, каков формат файла.

Другие советы

Бинарный файл выглядит как бред, потому что данные в нем предназначены для чтения машиной, а не для людей. К сожалению, некоторые из нас привыкли интерпретировать тарабарщину, хотя и с помощью специализированных инструментов, которые помогают лучше видеть данные, но большинству людей не нужно знать.

Каждый байт в файле обрабатывается как символ в текущем наборе кодов (вероятно, CP1252 в Windows). Например, значение 65 байта равно «A»; Вы можете легко найти наглядные примеры в Интернете. Таким образом, байты, составляющие двоичные данные, отображаются в соответствии с набором кодов - настолько хорошо, насколько это возможно в текстовом редакторе. Он не пытается преобразовать двоичный файл - он не знает как (это делает только оригинальная программа).

Что касается того, как определить, какая программа создала файл - вы можете сделать это иногда, но не легко и надежно. В Unix (или с Cygwin в Windows) может помочь «файловая» программа. Эта программа просматривает первые несколько байтов, чтобы попытаться угадать программу.

Зашифрованные данные должны выглядеть как бред. Если это не похоже на бред, то, вероятно, он не очень хорошо зашифрован.

Файлы причин, которые являются двоичными, отображаются как бред, когда их просматривают в стандартных текстовых редакторах, таких как блокнот, потому что при отображении с кодировками, обычно используемыми в приложениях этих типов (например, ASCII UTF-8), данные отображаются в символы, когда он закодирован для отображения, вывод этого процесса, как правило, имеет для людей столь же мало смысла, как и отображаемые двоичные данные, поэтому вы видите бессмыслицу

Как упоминалось ранее, эти файлы имеют больше смысла при просмотре другим способом, например с помощью шестнадцатеричного редактора.

Некоторые типы файлов могут быть распознаны по данным, присутствующим во всех файлах данного типа, например, все исполняемые файлы (* .exe) начинаются с букв MZ

Дисплей выглядит интересно, потому что двоичный файл может содержать непечатаемые символы. Программа отображения должна заменить такие символы чем-то другим.

Этого можно избежать с помощью шестнадцатеричного редактора. Такая программа отображает каждый байт из файла в виде шестнадцатеричного значения. Это обеспечивает хороший табличный вид файла, но обычному человеку непросто расшифровать это представление, потому что мы не привыкли смотреть на данные таким образом.

Есть несколько способов узнать, к какой программе может принадлежать файл. Вы можете посмотреть на начало файла и, зная некоторые сведения, вы можете распознать тип файла. Есть некоторые типы, которые начинаются с одинаковых символов (RAR, GIF и т. Д.). Для других типов это может быть не так просто.

В Linux вы можете использовать " файл " Команда, которая поможет вам определить тип файла. Вероятно, есть программы для Windows, которые будут делать то же самое.

Двоичные данные часто бывают очень случайными. Зашифрованные данные, в частности, по определению. Каждый байт может быть представлен одним из 256 символов (исключая Unicode из уравнения). ASCII охватывает только 128 из них, и только 94 из них являются фактическими печатными символами. Вне диапазона ASCII у вас есть ряд международных символов и странных символов. Их определенно более 128, поэтому необходимо указать кодовую страницу для выбора определенного набора символов.

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

Вы всегда можете открыть файл (двоичный или текстовый файл, на самом деле нет разницы) в шестнадцатеричном редакторе и посмотреть на необработанные двоичные данные.

Невозможно определить, какая программа создала конкретный файл. В частности, если программа зашифровала свои данные, вся надежда потеряна. В противном случае часто бывает легко распознать определенные «подписи».

Да, Wordpad, Notepad и многие другие текстовые редакторы предполагают, что любой файл, который вы открываете с ним, является текстовым файлом и будут пытаться отобразить символы ASCII, представленные байтами в файле.

Шестнадцатеричные редакторы предназначены для просмотра и редактирования двоичных файлов. Они обычно отображают каждый байт в виде пары шестнадцатеричных цифр вместо «1 с и 0 с»; потому что так легче читать.

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

Двоичные файлы часто не имеют контекста вне программы, которая их использует. Некоторые двоичные форматы содержат 4-байтовую магическую последовательность в начале (например, файлы Java .class начинаются с «CAFE»), но чтобы распознать их без их программы, необходимо сопоставить эти 4-байтовые последовательности. Я полагаю, что некоторые дистрибутивы Linux содержат эту информацию для большого числа бинарных форматов и будут проверять начало файла, чтобы попытаться идентифицировать его. Кроме этого, вы ничего не можете сделать.

scroll top