Как открыть и прочитать двоичный файл на Mac
У вас есть файл без полезного расширения или тот, который macOS не распознаёт, .bin, дамп прошивки, старое сохранение игры, что-то, что экспортировало устройство. Двойной клик по нему либо ничего не даёт, либо открывает его в TextEdit как стену из сломанных символов. Вы хотите знать, как открыть двоичный файл на Mac, не гадая и не рискуя самим файлом.
Почему двойной клик не работает
macOS решает, как открыть файл, по его расширению, а при его отсутствии по догадке о типе. У двоичных файлов, файлов, которые хранят сырые данные, а не текст, нет стандартного расширения, распознаваемого системой, поэтому macOS либо отказывается их открывать, либо передаёт тому приложению, которое считает самым подходящим. Обычно это TextEdit, который пытается декодировать байты как текст и показывает вам в основном нечитаемые символы с редкими настоящими словами, проглядывающими сквозь них.
Этот эффект читаемого-слова-в-шуме возникает не в вашем воображении. Двоичные файлы часто содержат встроенный текст (пути к файлам, метки, строки версий), даже если окружающие данные действительно двоичные. TextEdit отображает всё это как текст, из-за чего вы и получаете этот наполовину искажённый, наполовину знакомый вид. На самом деле он не показывает вам ничего полезного, и если вы случайно сохраните из TextEdit, вы можете повредить файл.
Что вам на самом деле нужно: шестнадцатеричный вид
Двоичный файл представляет собой просто последовательность байтов, каждый из которых число от 0 до 255. Стандартный и безопасный способ на это посмотреть даёт шестнадцатеричный вид: каждый байт показан как двухсимвольное шестнадцатеричное значение (от 00 до FF), выстроенное в ряды рядом со столбцом смещения (где в файле вы находитесь) и текстовым столбцом (те же байты, истолкованные как ASCII, для читаемых частей). Именно это даёт шестнадцатеричный редактор, и это единственный вид, который показывает реальное содержимое, не гадая о формате.
Три способа туда добраться
Terminal, с помощью xxd или hexdump. macOS поставляется с обоими. Запустите xxd yourfile.bin | less, и вы получите прокручиваемый шестнадцатеричный дамп прямо в Terminal. Это быстро и всегда доступно, но только для чтения, без поиска, без перехода к смещению и без интерпретации того, на что вы смотрите, помимо сырого hex. Годится для быстрого взгляда, неудобно для чего-то большего.
TextEdit или другой текстовый редактор. Не надо. Как выше, он декодирует байты как текст, что неправильный ракурс для двоичных данных, и есть реальный риск тихо повредить файл, если он будет сохранён.
Специальный шестнадцатеричный редактор. Это правильный инструмент, если вы делаете больше, чем пятисекундный взгляд: прокручиваете большой файл, ищете конкретную последовательность байтов, переходите к известному смещению или проверяете, что на самом деле представляет собой фрагмент байтов (число, дату, цвет, строку в другой кодировке). Hexter создан именно для этого. Он по умолчанию открывает любой файл только для чтения, так что просмотр незнакомого двоичного файла не несёт риска его изменить. Файлы открываются мгновенно независимо от размера, потому что Hexter читает байты по запросу, а не загружает весь файл в память.
Шаг за шагом
- Откройте файл. Перетащите его на Hexter или используйте «Файл > Открыть». Не нужно сначала угадывать тип файла; Hexter открывает что угодно как сырые байты.
- Прочитайте раскладку. Столбец смещения слева говорит, где в файле вы находитесь. Шестнадцатеричная сетка в середине показывает каждый байт как два hex-символа. Текстовая панель справа показывает те же байты как ASCII для тех частей файла, которые являются настоящим текстом.
- Перейдите к конкретному смещению с помощью ⌘J, если вы уже знаете, куда смотреть, вместо прокрутки.
- Выделите байты, чтобы осмотреть их. Выделение диапазона показывает эти данные, истолкованные как разные числовые типы (8-, 16-, 32- или 64-битные целые, со знаком или без, в любом порядке байтов) в боковой панели инспектора. Так вы понимаете, являются ли четыре байта размером файла, меткой времени или чем-то ещё.
- Ищите с помощью ⌘F, если вы ищете конкретную строку или последовательность байтов, а не прокручиваете вручную.
- Включайте редактирование только если действительно нужно что-то изменить. Hexter держит файлы только для чтения, пока вы явно не включите редактирование, и даже тогда изменения лежат в обратимом слое патчей до тех пор, пока вы не решите сохранить. Ничто из того, что вы делаете, просто смотря на файл, не может коснуться оригинала.
Если окажется, что файл имеет формат, который Hexter распознаёт структурно, PNG, ZIP, Mach-O, WAV или SQLite, вкладка «Анализ» разберёт реальную структуру (границы чанков, заголовки, поля) рядом с сырыми байтами, так что вы получите больше, чем просто hex.
Вот и весь рабочий процесс: открыть, прочитать три столбца, перейти или найти нужное место и осмотреть выделение, когда нужно понять, что на самом деле означает конкретная последовательность байтов. Никаких догадок, и ничто под угрозой, пока вы сами не скажете.