Что именно вызывает двоичный файл "бред"? - PullRequest
14 голосов
/ 19 октября 2008

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

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

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

Ответы [ 7 ]

16 голосов
/ 19 октября 2008
  • Двоичные значения файла пытаются преобразовать в ASCII?

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

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

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

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

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

5 голосов
/ 19 октября 2008

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

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

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

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

2 голосов
/ 19 октября 2008

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

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

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

2 голосов
/ 19 октября 2008

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

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

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

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

1 голос
/ 19 октября 2008

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

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

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

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

0 голосов
/ 19 октября 2008

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

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

0 голосов
/ 19 октября 2008

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

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

...