что такое бинарный формат электронных документов
Файл формата BIN: чем открыть, описание, особенности
Для чего предназначен универсальный формат BIN с двоичными данными, и чем его открыть на компьютере
Основная задача BIN формата — сохранять двоичные данные цифровых образов CD и DVD на ПК. Чаще всего файл является цифровой эмуляцией физического носителя со свойствами, идентичными формату ISO, но может быть предназначен и для других целей. Благодаря этой статье вы поймете, чем открыть файл BIN на компьютере и зачем он нужен.
Содержание
Как открыть BIN
Расширение BIN представляет собой метаданные, описывающие содержимое диска, находящегося в дисководе (порядок расположения информации, тип образа, занимаемый объем памяти и т.д.). Такой формат можно назвать универсальным, т.к. файлы бинарного типа используются всеми операционными системами, включая Android и iOS.
Одним из недостатков BIN-файлов является путаница в назначении и множестве методов просмотра документа в зависимости от сферы использования. Столкнуться с данным форматом можно при работе с образами CD- и DVD-дисков, архивами на macOS, образами игр для эмуляторов, а также при прошивке маршрутизатора. Чтобы представлять, с каким BIN-файлом имеете дело, стоит взглянуть на размер и сопроводительные файлы в папке.
Помимо описанных назначений BIN встречается в смартфонах Nokia и Blackberry (RIM).
CD и DVD-образы
Формат BIN — файл образа, т.е. полная цифровая копия физического диска (эмуляция). Также под расширением скрывается инфо-файл о дорожках воспроизведения (количество фильмов и эпизодов сериала, видеоклипы и иная цифровая информация, считываемая мультимедийным плеером при воспроизведении). Следственно, для открытия файлов используется соответствующее ПО.
Программы для монтирования CD/DVD образа можно скачать на нашем сайте:
Для открытия двоичных видеофайлов, скачайте видеоплееры:
Архивы MacBinary
На Macintosh распространены архивы MacBinary, в которых BIN-файл хранит в себе следующий набор нулей и единиц:
В качество ПО рекомендуем использовать The Unarchiver или стандартный архиватор — Apple Archive Utility.
Также BIN-формат применялся для отправки файлов по интернету из-под macOS, однако сегодня вытеснен архивами нового типа с разрешением DMG.
Открыть BIN в редакторе
BIN-файлы хранят информацию в двоичном виде. Такие документы создаются программами и приложениями для хранения и структуризации данных в режиме «только для чтения». Переписать содержимое документа классическим текстовым редактором не получится.
Образы для эмуляторов
Если выросли в 90-е годы, то наверняка застали игровую приставку Sega Genesis, которую в СНГ назвали Mega Drive. Причем тут BIN? Образы видеоигр для картриджей Сеги кодируются бинарно, поэтому понадобятся программы-эмуляторы.
Эмуляторы Sega для работы с BIN:
В случае с Nintendo DS картина схожая. BIN-файлы нужны для хранения исполняемых данных, которые при желании корректируются для запуска проекта на эмуляторе. Библиотеки BIN хранятся в одной папке с файлами типа NDS.
Эмуляторы Nentendo DS для работы с BIN:
Для консоли Sony Playstation первого поколения разработаны эмуляторы, среди которых стоит выделить PCSX, использующий BIN-формат для сохранения BIOS оригинальной приставки. Такой подход необходим, чтобы пользователь ПК чувствовал полное погружение в игру с аутентичными ощущениями (плавность картинки, динамика, тайминги).
Эмуляторы PlayStation для работы с BIN:
Прошивка маршрутизатора
Производители сетевого оборудования (Belkin, Linksys) регулярно обновляют выпускаемые маршрутизаторы программно, меняя низкоуровневые данные, управляющие модемом. BIN-файлы, содержащие свежее обновление для сетевого оборудования, инсталлируются благодаря интерфейсу самого роутера. Например, чтобы прошить оборудование от Linksys, в интерфейсе разработана вкладка «Администрирование». Попасть в настройки можно, введя в поисковой строке любого браузера «192.168.1.1».
Частые проблемы BIN-файлов
Главный недостаток формата — «любовь» со стороны злоумышленников и хакеров, которые модифицируют BIN-файлы, делая из них вирусы. В результате видны следующие ошибки на ПК:
Что такое bin файл и как его открыть в 2021 году
Бинарный формат
Программисты изначально не предполагали, что пользователи будут открывать либо вносить изменения в bin-файлы. Разобраться в содержимом контейнера может только разработчик утилиты, которая использует такой тип документов. Наиболее часто такими литерами кодируют:
Перед тем как пытаться открыть нужный документ, следует сделать его резервную копию. В случае если файл испортится, его всегда можно будет восстановить.
Программы для открытия
В операционных системах не установлены приложения для редактирования bin-файлов. Кроме того, онлайн-ресурсы также не смогут помочь пользователю взглянуть на содержимое контейнера. Открыть документ способен обычный текстовый редактор Notepad. Вшитая утилита способна представить любой цифровой код в виде текстовых символов. Однако часто на экран выводится беспорядочный набор числовых знаков и букв. Порядок открытия:
Кроме «Блокнота», бинарные файлы можно открыть оригинальным софтом (программой, для которой создан документ) либо утилитами, позволяющими записывать и эмулировать CD-диски. В первом случае понадобится установочный исходник с драйверами или программы, поставляемые производителями вместе с цифровой техникой. Из утилит для записи CD-дисков наиболее часто используют:
Многие пользователи пасуют при столкновении с неизвестным форматом, но некоторые наиболее любопытные пытаются открыть странный документ, и впоследствии делают это без проблем. Однако содержимое может оказаться интересным только для программистов, а простым обывателям будет бесполезно.
Как открыть файл с расширением BIN
Формат файлов BIN – особенный. В отличие от других, он способен содержать в себе самые разнообразные данные. Давайте разберемся, что может находиться в БИН-файлах, и рассмотрим способы их открытия.
Что представляет собой формат BIN
Программы для открытия BIN файлов
Предположить, что перед вами бинарный файл образа диска, можно по его размеру. Например, образы дистрибутивов операционных систем «весят» 1-2 Gb и больше, образы CD/DVD/Blu-ray дисков – от десятков Mb до нескольких Gb и т. д.
Образы дисков – это объекты, которые содержат в себе копию содержимого и структуры файловой системы носителя. По своей сути они являются архивами с разнообразными данными.
Открыть файл Bin с образом диска можно при помощи различных онлайн-сервисов и приложений. Первых не так уж и много, они далеко не всегда корректно считывают данные, да и загружать на веб-сайт файл большого размера неудобно. Поэтому остановимся на рассмотрении программ, которые умеют работать с объектами этого типа. Большинство таких приложений платные, но чаще всего имеют бесплатный пробный период с некоторыми ограничениями. Рассмотрим в подробностях несколько программ для Windows.
UltraISO
UltraISO — одна из самых популярных программ для работы с образами дисков. Она поддерживает множество форматов и, в том числе, способна разархивировать бинарные файлы.
Программа UltraISO способна производить следующие действия с бинарными образами:
Для установки UltraISO, как и остальных описанные ниже приложений, запустите скачанный с сайта разработчика инсталлятор с именем программы. В некоторых случаях установочный файл называется setup или install.
Чтобы открыть БИН при помощи UltraISO, сделайте следующее:
Daemon Tools Lite
Daemon Tools — еще одна популярная программа, которая умеет работать с образами дисков. Ее интерфейс достаточно прост, и разобраться в нем несложно без инструкции.
Если хотите, чтобы Daemon Tools открывал образы BIN по умолчанию, при установке приложения отметьте этот формат, как на скриншоте ниже:
С помощью Daemon Tools вы сможете:
Чтобы открыть БИН при помощи Daemon Tools, запустите программу и сделайте следующее:
В отличие от UltraISO, программа Daemon Tools Lite не загружает образ в себя, а монтирует его в виртуальный привод. Содержимое последнего открывается в проводнике Windows 7 или Windows 10 как обычная папка или диск.
Power ISO
Приложение PowerISO также умеет работать с различными типами образов дисков, в том числе распаковать архивы BIN. По интерфейсу и функционалу оно похоже на UltraISO, но, как и Daemon Tools, имеет бесплатную и платные версии.
Power ISO позволяет производить с БИН файлами следующие действия:
Чтобы открыть БИН с помощью Power ISO, сделайте следующее:
Открыть BIN на компьютере также можно и при помощи других приложений для работы с образами дисков, таких, как Alcohol 120%, MagicISO, Hex to Bin Utility, Roxio Creator, Nero Burning ROM и т. д.
Другие виды бинарных файлов
Помимо образов дисков, файлы бинарного формата могут быть прошивками устройств, данными игр, видео- или аудиозаписями и многим другим. Рассмотрим несколько самых распространенных после образов типов БИН-файлов в подробностях.
Исполняемый двоичный файл
Исполняемый файл — это часть какого-либо приложения в двоичном виде. Он может содержать в себе данные для запуска программы или её настройки.
Чтобы открыть такой файл для просмотра и редактирования, подойдет любой HEX-редактор, но для корректного выполнения им своих задач потребуется программа, которой он принадлежит.
Некоторые из файлов этого типа можно открыть при помощи приложения Apache OpenOffice, которое работает на компьютерах с операционной системой Windows, Mac OS и Linux.
Исполняемый файл Unix
Файлы двоичного формата в операционных системах Unix – это обычные приложения. Они предназначены для использования в дистрибутивах Linux, FreeBSD и т. д.
Файл прошивки маршрутизатора
Фирмы Linksys, D-Link, ZyXEL, TP-Link, Huawei используют в своих роутерах прошивки в формате БИН. Прошивка – это программа, которая управляет работой устройства.
Для работы с файлами прошивок используются собственные приложения производителей роутеров для различных платформ (Windows, Mac, Android и т. д.), а также веб-сервисы.
Архив Macbinary II
Бинарник Macbinary II — это закодированный, сжатый файл с данными, обычно предназначенный для передачи информации через сеть. Открывается при помощи следующих программ:
Файл обновления конфигураций устройств BlackBerry
Программный пакет BlackBerry Enterprise Server содержит в себе приложение IT Policy Manager, одним из компонентов которого является файл policy.bin. Он содержит в себе данные настроек и используется системными администраторами для обновления программного обеспечения BlackBerry.
Policy.bin можно открыть при помощи программы Research In Motion BlackBerry Desktop Manager.
Файл игр приставки Nintendo DS
Открыть файл БИН этого типа можно при помощи следующих программ:
Файл игры Atari
БИН-файл игры Atari содержит в себе образ картриджа для одноименных консолей, которые были популярны в 80-ых годах. Файл используется для загрузки игр в эмулятор приставки, открыть его можно при помощи следующих приложений:
Файл данных Nintendo Wii
Файл данных Nintendo Wii может содержать в себе зашифрованные или обычные текстовые сведения об игре для одноименной игровой консоли. Обычно он хранится на SD-карте устройства и имеет название content.bin. Увидеть, что находится в этом файле, можно при помощи программных инструментов самой приставки.
Образ игры Sega Genesis
Бинарник Sega Genesis – это образ картриджа с игрой для консоли Sega Genesis. На компьютере он открывается при помощи эмуляторов.
BIOSPlayStation
БИН файлы BIOS PlayStation также могут открываться в эмуляторах одноименной консоли на компьютере. Они предназначены для обеспечения работы устройства.
Программы для открытия файлов BIOS PlayStation в Windows, Mac OS и Linux:
Бинарный видео- или аудиофайл
В BINе может находиться и обычная видео- или аудиозапись. Проиграть её смогут такие медиаплееры, как:
Если вы не знаете, чем именно может быть интересующий вас файл BIN, предположить его примерное назначение поможет размер. Объект размером от десятков Mb до нескольких Gb, скорее всего, окажется образом диска, видеозаписью или приложением. Файл небольшого объема, вероятно, будет содержать прошивку устройства или данные для эмуляторов игровых приставок.
Бинарный формат
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary ) цифр.
В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные, однако некорректно так ограничивать это понятие.
Содержание
Визуализация
Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов, принятый на используемой платформе). Зависимость диапазона представляемых чисел от размера куска показана в таблице:
октетов | кол-во бит | шестнадцатеричное | восьмеричное | десятичное беззнаковое | десятичное знаковое |
---|---|---|---|---|---|
1 | 8 | 00 … FF | 000 … 377 | 0 … 255 | -128 … 127 |
2 | 16 | 0000 … FFFF | 000000 … 177777 | 0 … 65535 | -32768 … 32767 |
4 | 32 | 00000000 … FFFFFFFF | 00000000000 … 37777777777 | 0 … 4294967295 | -2147483648 … 2147483647 |
Инструменты
Для визуализации
Для редактирования
Литература
Полезное
Смотреть что такое «Бинарный формат» в других словарях:
Формат X файла — формат файла для хранения 3D объектов, созданный компанией Microsoft. Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам, которые … Википедия
Двоичный формат файлов Microsoft Excel 97—2007 — Microsoft Excel (Windows) Microsoft Excel 2007 Тип Табличный процессор Разработчик ОС Microsoft Windows … Википедия
Двоичный формат файлов Microsoft Excel 97—2000 — Microsoft Excel (Windows) Microsoft Excel 2007 Тип Табличный процессор Разработчик ОС Microsoft Windows … Википедия
Двоичный формат файлов Microsoft Word 97—2000 — Microsoft Word (Windows) Скриншот Microsoft Word 2007 Тип Текстовый процессор Разработчик Майкрософт … Википедия
Двоичный формат файлов Microsoft Word 97—2007 — Microsoft Word (Windows) Скриншот Microsoft Word 2007 Тип Текстовый процессор Разработчик Майкрософт … Википедия
AMF (формат обмена данными) — У этого термина существуют и другие значения, см. AMF. AMF (англ. Action Message Format, формат сообщений о действиях) бинарный формат обмена данными, использующийся в приложениях, написанных на Action Script. Построен на основе… … Википедия
X (DirectX) — Формат X файла формат файла для хранения 3D объектов, созданный компанией Этот формат хранит информацию о геометрии 3D объекта (координаты вершин и координаты нормалей), текстурные координаты, описание материалов, пути и названия к текстурам,… … Википедия
Если вас не пугает картинка выше, если вы знаете чем отличается big-endian от little-endian, если вам всегда было интересно как «устроены» бинарные файлы, значит эта статья для ВАС!
Введение
Еще через несколько лет мне потребовалось декомпилировать Java библиотеку. JD GUI в те времена еще не было, как и идеевского декомпайлера, но был JAD. Для моей библиотеки JAD выдавал смесь Java опкодов с сообщениями об ошибах. К тому же JAD не поддерживал аннотации, а в появившейся тогда Java 6 они использовались по полной. Вооружившись спецификацией на виртуальную машину Java, я начал работу.
Мне был нужен универсальный механизм для описания бинарных структур и универсальный загрузчик. Загрузчик, используя описание, будет читать бинарные данные в память. Обычно приходиться иметь дело с числами, строками, массивами данных и составными структурами. С числами все просто — они имеют фиксированную длину — 1, 2, 4 или 8 байт и могут быть сразу отображены в типы данных, имеющиеся в языке. Например: byte, short, int, long для Java. Для числовых типов длиной более одного байта нужно предусмотреть маркер порядка байт (так называемое BigEndian/LittleEndiang представление).
Со строками сложнее — они могут быть в различных кодировках (ASCII, UNICODE), иметь фиксированную или переменную длину. Строку фиксированной длинны, можно считать как массив байт. Для строк с переменной длиной можно использовать два варианта записи — указывать в начале строки ее длину (Pascal или Length-prefixed strings) либо в конце строки ставить специальный знак, обозначающий конец строки. В качестве такого знака используют байт со значением ноль (так называемые null-terminated srings). Оба варианта имеют преимущества и недостатки, обсуждение которых выходит за рамки этой статьи. Если размер задается в начале, то при разработке формата нужно определиться с максимальной длиной строки: от этого зависит сколько байт мы должны выделить на маркер длины: 2 8 — 1 для одного байта, 2 16 — 1 для двух байт и т.д.
Составные структуры данных будем выделять в отдельные классы, продолжая декомпозицию до чисел и строк.
Берем спецификациею виртуальной машины Java,
JVM Specification, Java SE 12 Edition.
Нас будет интересовать секция 4 «The class File Format».
Для того, чтобы определить какие поля в каком порядке загружать, введем аннотацию @FieldOrder(index=. ). Нам необходимо явно указывать порядок полей для загрузчика, поскольку спецификация не даем нам гарантии на то, в каком порядке они будут сохранены в бинарном файле.
Чтобы учесть такие коррекции, введем дополнительный аттрибут corrector в @ContainerSize аннотации.
Теперь мы можем добавить описание пула констант:
Constant Pool
Каждый элемент в пуле констант представляет из себя либо описание соответствующей константы типа int, long, float, double, String, либо описание одной из составных частей Java класса — поля класса (fields), методы, сигнатуры методов и т.д. Под термином «контстанта» здесь подразумевается неименованое значение, используемое в коде:
Значение 100500 будет представленно в пуле констант как экземпляр CONSTANT_Integer. JVM спецификация для Java 12 определяет 17 типов, которые могут быть в пуле констант.
Constant type | Tag |
---|---|
CONSTANT_Class | 7 |
CONSTANT_Fieldref | 9 |
CONSTANT_Methodref | 10 |
CONSTANT_InterfaceMethodref | 11 |
CONSTANT_String | 8 |
CONSTANT_Integer | 3 |
CONSTANT_Float | 4 |
CONSTANT_Long | 5 |
CONSTANT_Double | 6 |
CONSTANT_NameAndType | 12 |
CONSTANT_Utf8 | 1 |
CONSTANT_MethodHandle | 15 |
CONSTANT_MethodType | 16 |
CONSTANT_Dynamic | 17 |
CONSTANT_InvokeDynamic | 18 |
CONSTANT_Module | 19 |
CONSTANT_Package | 20 |
В нашей реализации создадим класс ConstantPoolItem в котором будет однобайтовое поле tag, определяющее какую именно структуру мы читаем в данный момент. На каждый элемент в таблице выше создадим Java класс, наследник ConstantPoolItem. Универсальный загрузчик бинарных файлов должен уметь определять какой именно класс-наследник должен быть использован на основании уже прочитанного тега
(в общем случае тег может быть переменной любого типа). Для этой цели определим интерфейс HasInheritor и реализуем этот интерфейс в классе ConstantPoolItem:
Универсальный загрузчик сам инстанцирует необходимый класс и продложит считывание. Единственное условие: индексы в классах-наследниках должны иметь сквозную нумерацию с родительским классом. Это означает что во всех классах-наследниках ConstantPoolItem, FieldOrder аннатация должна иметь индекс больше единицы, поскольку в родительском классе мы уже прочитали поле tag с номером «1».
В языке Java у любого класса может быть только один суперкласс, но количество
интерфейсов, которые реализует данный класс может быть несколько:
Каждый элемент в interfaceIndexList представляет ссылку на элемент в пуле констант (по указанному
инедксу должен находится элемент с типом ClassInfo).
Переменные класса (properties, fields) и методы представленны соответсвующими списками:
Java bytecode оперирует числовыми данными в big-endian представлении, будем это представление использовать по умолчанию. Для двоичных форматов с little-endian числами будем использовать LittleEndian аннотацию. Для строк, которые не имеют предопределенной длины, а
считываются до терминального символа (как C-like null-terminated строки) будем использовать
аннотацию @StringTerminator:
Иногда в нижележащие классы нужно пробросить информацию с более высокого уровня. Объект Method в methodList не имеет информации об имени класса, в котором он находится, более того объект-метод не содержит своего названия и списка параметров. Вся эта информация представленна в виде индексов на элементы в пуле констант. Для виртуальной машины этого достаточно, но нам хотелось бы реализовать методы toString(), чтобы они отображали информацию о методе в удобном для человека виде, а не в виде индексов на элементы в пуле констант. Для этого класс Method должен получить ссылку на ConstantPoolList и на переменную со значением thisClassIndex. Чтобы иметь возможность передавать ссылки на нижележащие уровни вложенности, будем использовать аннотацию Inject:
В текущем классе (ClassFile) будут вызываться getter методы для constantPoolList и thisClassIndex переменных, а в принимающем классе (в данном случае Method), будут вызваны setter методы (если они присутствуют).
Универсальный загрузчик
Итак, у нас есть один интерфейс HasInheritor и пять аннотаций @FieldOrder, @ContainerSize, LittleEndian, Inject и @StringTerminator, которые позволяют описывать бинарные структуры на высоком уровне абстракции. Имея формальное описание, мы можем передать его универсальному загрузчику, который сможет инстанцировать описанную структуру, осуществить разбор бинарного файла и зачитать его в память.
В результате мы должны иметь возможность использовать такой код:
К сожалению, разработчики Java платформы немного перемудрили и для восьмибайтных значений в пуле
констант предусмотрели две ячейки, причем первая ячейка должна содержать значение, а вторая остается
пустой. Это касается long и double констант.
All 8-byte constants take up two entries in the constant_pool table of the class
file. If a CONSTANT_Long_info or CONSTANT_Double_info structure is the entry
at index n in the constant_pool table, then the next usable entry in the table is
located at index n+2. The constant_pool index n+1 must be valid but is considered
unusable.
In retrospect, making 8-byte constants take two constant pool entries was a poor choice.
Чтобы обработать эти специфичные случаи, добавим аннотацию @EntrySize, которую будем использовать,
чтобы пометить восьмибайтные константы:
Аттрибут value указывает на количество ячеек, которые будет занимать элемент, index — индекс элемета,
который содержит значение. классы LongInfo и DoubleInfo будут расширять класс EightByteNumberInfo.
Универсальный загрузчик нужно будет расширить фукционалом, поддерживающим аннотацию @EntrySize.
После загрузки класса ClassFileLoader’ом можно остановить отладчик и исследовать загруженный класс в инспекторе переменных в IDE.
Class file будет выглядеть вот так:
А Constant Pool так:
Заключение
Тот кто смог дочитать до конца, возможно захочет поковырять Java байткод своими руками. Смело идите на гитхаб и качайте описание Java class файла в виде набора Java классов: https://github.com/esavin/annotate4j-classfile. Универсальный загрузчик и аннотации лежат здесь: https://github.com/esavin/annotate4j-core.
Для загрузки скомпилированного class файла воспользуйтесь загрузчиком annotate4j.classfile.loader.ClassFileLoader.
Большая часть кода была написана для Java 6, к современным версиям я адоптировал только constant pool. Сил и желания полностью реализовать загрузчик Java opcode’ов у меня не хватило, поэтому там только небольшие наработки в этой части.
Используя эту библиотеку (core часть) мне удалось зареверсить бинарный файл с данными Холтер мониторинга (ЭКГ исследование суточной активности сердца). С другой стороны, я не смог расшифровать бинарный протокол одной учетной системы, написанной на Delphi. Я не разобрался как передаются даты и иногда возникала ситуация, когда фактичиские данные не соответствовали структуре, построенной по предыдущим значениям.
Я пытался построить аналогично Java class файлу модель для ELF формата (запускаемый формат в Unix/Linux), но я не смог полностью понять спецификацию — она оказалась для меня слишком расплывчатой. Та же участь постигла JPEG и BMP форматы — все время натыкался на какие-то сложности с пониманием спецификации.