Hexter

Hexter против Hex Fiend: какой шестнадцатеричный редактор для Mac выбрать

Если вы искали шестнадцатеричный редактор для Mac, вы почти наверняка натыкались на Hex Fiend. Он бесплатный, с открытым кодом, и это стандартная рекомендация практически в любом списке «лучших шестнадцатеричных редакторов для Mac». К тому же это действительно хорошая программа. Это не пост в духе «почему наше приложение лучше». Это честный взгляд на то, где Hex Fiend по-прежнему остаётся правильным выбором, и где Hexter делает вещи достаточно иначе, чтобы это имело значение.

Если коротко

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

Возможность за возможностью

Hex Fiend Hexter
Цена Бесплатно, открытый код (лицензия BSD) Ещё не вышел в Mac App Store
Работа с большими файлами Обрабатывает файлы примерно до 118 ГБ, не загружая их в память Читает байты по запросу через кеш фрагментов; пока не тестировался на масштабах Hex Fiend
Безопасность редактирования Есть явный режим «только для чтения», который можно включить или задать по умолчанию, но сам по себе это не режим из коробки Открывает любой файл только для чтения, всегда, без настройки, меняющей это умолчание; редактирование требует явного переключателя, а правки лежат в обратимом слое патчей до сохранения
Защита от перезаписи Стандартное сохранение; в документации не упомянут встроенный шаг резервного копирования Перезапись оригинального файла требует подтверждения и предлагает автоматическую резервную копию (один файл .hexter-backup, который заменяется при каждом последующем сохранении, а не история с метками времени)
Двоичное сравнение Сравнение с учётом вставок/удалений; ограничение по размеру нигде в документации или заметках к выпуску не указано Настоящий алгоритм сравнения, но сейчас ограничен для очень крупных сравнений, с переходом к более грубому результату сверх этого размера
Встроенный разбор структур Поставляется с действительно большой встроенной библиотекой шаблонов (около 17 категорий), но шаблон вы просматриваете и применяете вручную Структуры PNG, ZIP, Mach-O, WAV и SQLite распознаются и разбираются автоматически при открытии, без выбора шаблона
Хеширование Не встроенная функция CRC32, Adler32, MD5, SHA-1, SHA-256 и SHA-512, вычисляемые по файлу в фоне
Строки, закладки, обнаружение аномалий Не встроено Всё встроено: извлечение строк, именованные закладки с заметками и сканирование на всплески энтропии, подозрительные последовательности байтов и несоответствия сигнатур формата
Интерфейс AppKit, функциональный, ему больше десяти лет Нативный SwiftUI, тёмная тема, создан для актуальной macOS
Расширяемость Лицензия BSD из двух пунктов, встраивается как фреймворк в другие приложения Не рассчитан на встраивание; отдельное приложение
Пользовательские двоичные шаблоны Поддерживаются через систему шаблонов для произвольных форматов Пока не поддерживаются; пять встроенных парсеров покрывают распространённые форматы, но пользовательского языка шаблонов нет

Где Hex Fiend по-прежнему лучший выбор

Если вы регулярно работаете с файлами в десятки гигабайт, дампами прошивок, образами дисков, крупными выгрузками баз данных, то с моделью памяти Hex Fiend и его репутацией на таком масштабе трудно спорить. У его инструмента сравнения нет задокументированного ограничения по размеру, что важно, если ваша работа связана со сравнением больших двоичных файлов. Он к тому же бесплатный, а это само по себе чего-то стоит, и если вы создаёте инструмент, которому нужно встроить компонент шестнадцатеричного редактирования, его лицензия BSD и архитектура фреймворка делают это возможным так, как отдельное приложение не позволяет.

Hex Fiend также уже поставляется с солидной встроенной библиотекой шаблонов, примерно 17 категорий, охватывающих исполняемые файлы, архивы, аудио и многое другое, так что и на структурированных форматах он стартует не с нуля. Если вам нужен пользовательский шаблон для чего-то редкого или проприетарного, что ещё не покрыто, система шаблонов Hex Fiend (и такие инструменты, как 010 Editor или ImHex, которые идут в этом направлении дальше) вам помогут. Разбор структур в Hexter хорошо работает для пяти известных ему форматов, PNG, ZIP, Mach-O, WAV, SQLite, но не позволяет задавать собственные.

Где Hexter делает что-то иначе

Ключевое отличие не в функции, а в умолчании. У Hex Fiend действительно есть режим «только для чтения», но нужно знать, что его надо включить (или задать по умолчанию в настройках); из коробки он открывает файл в редактируемом режиме. Hexter открывает любой файл только для чтения, всегда, без настройки, чтобы это изменить. Редактирование вы включаете намеренно, а изменения удерживаются в слое патчей, который можно просмотреть и откатить прежде, чем что-либо коснётся оригинального файла. Если вы тратите больше времени на просмотр файлов, чем на редактирование, а большинство сессий в шестнадцатеричном редакторе сводятся на самом деле к осмотру, а не правке, то это умолчание значит больше, чем кажется. Оно означает, что открытие незнакомого файла, чужого конфига, скачанного образа прошивки, файла, который вы отлаживаете, по умолчанию не несёт риска, и вам не нужно помнить о том, чтобы сначала щёлкнуть переключателем.

Второе отличие в том, что происходит автоматически, когда вы открываете файл, который Hexter распознаёт. Вместо плоской стены шестнадцатеричных значений вы получаете реальную структуру: границы чанков PNG с их типом и CRC, локальные заголовки файлов ZIP-архива, команды загрузки двоичного файла Mach-O, поля заголовка файла SQLite, разобранные и разложенные рядом с сырыми байтами, без всякой настройки. Встроенные шаблоны Hex Fiend могут дать вам похожую детализацию, но сначала вы просматриваете список шаблонов и применяете один сами.

Помимо этого, хеширование, извлечение строк и обнаружение аномалий (всплески энтропии, несоответствия сигнатур, подозрительные последовательности байтов) встроены в Hexter напрямую, тогда как в мире Hex Fiend это обычно отдельный инструмент.

Честная рекомендация

Используйте Hex Fiend, если вы уже свободно владеете шестнадцатеричными редакторами, вам нужно работать с очень большими файлами или вы хотите бесплатный инструмент с долгой историей и активным сообществом. Используйте Hexter, если вам нужен шестнадцатеричный редактор, который исходит из того, что вы, возможно, смотрите на файл, которому пока не до конца доверяете, по умолчанию его не трогает и рассказывает больше о распространённых форматах без всякой настройки. Ни тот, ни другой не ошибка. Они построены на разных предположениях о том, кто ими пользуется и зачем.

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