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 активно разрабатывается. Если режим «только для чтения по умолчанию», встроенный разбор структур и современный нативный интерфейс звучат как то, чего вы хотите от шестнадцатеричного редактора, то за этим приложением стоит следить.