Чтение бинарных файлов linux

How to view files in binary from bash?

I would like to view the contents of a file in the current directory, but in binary from the command line. How can I achieve this?

13 Answers 13

xxd does both binary and hexadecimal.

This has the advantage over «hexdump» that it also shows the ASCII form on the side, making it easier to identify the location I want to look at.

And to dump the output to an ASCII text file for perusing & searching: xxd file > hex_dump_of_file.txt

a supplment: xxd is not only for linux shell. I think it comes with vim. I had vim installed on windows, and I just found I can use xxd in windows too.

unless you want to edit it of course. Most linux distros have hexdump by default (but obviously not all).

I like this idea, but like the other suggestions it only outputs hex. Obviously this is much more compact than binary, but I am dealing with very small files so binary is preferred. Is hex the only way I will be able to view the file?

Well how small is the file? Anything over a couple of bytes and you will start to lose your mind using binary anyway. Hex makes much more sense for most things. If you are uncomfortable with hex just locate the bytes in which you are interested and convert them using a hex calculator.

I need to make sure that my file is compressing correctly and I don’t know what it should look like in hex (the size of each unit is 7 bits), so I would have to crunch the numbers by hand.

do you have any methods to see text from binary file? I can get HEX code, but how should i decode it to normal human text?

Type :%!xxd to view the hex strings, the n :%!xxd -r to return to normal editing.

As a fallback there’s always od -xc filename

sudo apt-get install bless

Читайте также:  Screen split window linux

Bless is GUI tool which can view, edit, seach and a lot more. Its very light weight.

If you want to open binary files (in CentOS 7):

The best answer hands down. This converts the Binary file into a JSON file. Not all heros wear capes,that is true

It doesn’t convert it into JSON file. It only finds the printable strings in an object and show you. It doesn’t convert the binary file into text or any format at all.

$ echo -n 'Hello world!' | hd 00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 |Hello world!| 0000000c 

Hexyl formats nicely: sudo apt install hexyl

enter image description here

You can open emacs (in terminal mode, using emacs -nw for instance), and then use Hexl mode: M-x hexl-mode .

To get the output all in a single line in Hexadecimal:

xxd -p yourfile.bin | tr -d '\n' 

to convert a file to its binary codes(hexadecimal representation) we say:

to see all the contents and codes in a binary file , we could use commands like readelf and objdump , hexdump . .

for example if we want to see all the convert all the contents of a binary file(executable, shared libraries, object files) we say:

but readelf is the best utility for analyzing elf(executable and linking format) files. so if we say:

all the contents in the binary file bash would be shown to us, also we could provide different flags for readelf to see all the sections and headers of an elf file separately, for example if we want to see only the elf header we say:

for reading all the segments of the file:

for reading all the sections of the file:

but again as summary , for reading a normal file like «hello.c» and a binary file like bash in path /bin/bash in linux we say:

xxd hello.c readelf -a /bin/bash 

Источник

Linux: анализируем бинарные файлы. Часть 1. Программы.

Список программ для работы с двоичными файлами в операционной системе Linux .

GDB

GNU Debugger ( GDB ) — отладчик GDB хорош не только для отладки приложений с ошибками . Он также может использоваться для того, чтобы узнать о самом нижнем уровне управления программой, изменить этот нижний уровень управления программой, изменить код, регистры и структуры данных. Эти функции являются крайне полезными в процессе поиска уязвимостей программного обеспечения, изучения структуры и принципов работы вредоносного кода. Отладчик GDB работает с двоичными файлами ELF и процессами Linux .

Читайте также:  Program arguments in linux

Objdump

Objdump из GNU binutils . Дамп объекта ( objdump ) — простое и понятное решение для быстрого дизассемблирования программного кода. Objdump отлично подходит для дизассемблирования простых и неповреждённых двоичных файлов, но все его ограничения сразу выплывут на поверхность при попытке использовать objdump для любого, действительно сложного реверса, особенно в ситуациях, использования данной программы против вредоносного ПО. Основная слабость objdump заключается в том, что он, в своей работе, полностью полагается на заголовки раздела ELF и не выполняет необходимый анализ нижнего уровня управления . Оба эти ограничения значительно снижают надёжность программы , что приводит к невозможности правильно дизассемблировать код внутри двоичного файла, а возможно, что даже к возникновению ошибок при простой попытке открыть двоичный файл, не имеющий в своей структуре заголовков разделов. Однако, для многих простых и обычных задач, он идеально подходит . Например, при дизассемблировании обычных двоичных файлов , которые не расширяются , не удаляются , не используют обфускацию . Он может читать все распространенные типы двоичных ELF файлов. Вот несколько примеров использования программы objdump :

• Просмотрите все данные / код в каждом разделе файла ELF:

• Просмотр только программного кода в файле ELF:

Objcopy

Objcopy из GNU binutils. Копирование объекта ( Objcopy ) — невероятно мощный и миниатюрный инструмент, но при этом весь его функционал крайне тяжело уместить всего в нескольких предложениях. Я настоятельно рекомендую вам прочитать страницы руководства для изучения полного описания данной программы. Objcopy можно использовать для анализа и изменения объектов ELF любого типа , хотя некоторые из его функций специфичны для определенных типов объектов ELF. Objcopy часто используется для изменения или копирования раздела ELF в двоичный файл ELF или обратно, раздела ELF из файла.

Пример использования objcopy :

Для копирования секции .data из объекта ELF в файл , используйте следующую команду:

objcopy –only-section=.data

Strace

Трассировка системного вызова ( strace ) — это инструмент, основанный на системном вызове ptrace (2) , он

использует запрос PTRACE_SYSCALL в цикле для отображения информации о системном вызове в запущенной программе, а также сигналов, которые

Читайте также:  Какие порты работают linux

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

Команда strace , используемая для трассировки базовой программы :

strace / bin / ls -o ls.out

Команда strace , используемая для подключения к существующему процессу , выглядит следующим образом:

Первоначальный вывод команды ( по умолчанию ) покажет вам номер дескриптора файла каждого системного вызова , который принимает в качестве своего аргумента дескриптор файла, например:

SYS_read (2, buf, sizeof (buf));

Если вы хотите увидеть все данные, которые считывались в дескриптор файла 2 , вы можете выполнить следующую команду:

strace -e read = 2 / bin / ls

Вы также можете использовать параметр -e write = fd для просмотра записанных данных . Программа strace — отличный инструмент, и у вас, несомненно, будет целый ряд причин, чтобы его использовать.

ltrace

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

Вы можете увидеть системные вызовы в дополнение к вызовам библиотечных функций при помощи параметра -s .

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

Пример использования ltrace :

ftrace

Функция трассировки ( ftrace ) — это инструмент, очень похожий на ltrace , он

показывает вызовы функций внутри самого двоичного файла .

Программу ftrace можно скачать по следующему адресу: https://github.com/elfmaster/ftrace .

Readelf

Программа readelf — это пожалуй, один из самых полезных инструментов для анализа двоичных файлов формата ELF. Readelf анализирует каждый бит данных, используемый в формате ELF и позволяет получить большое количество информации об объекте ещё до его реверс инжиниринга . Readelf используется для сбора информации о символах , сегментах , разделах , записях релокации , динамическом связывании данных и ещё много другой полезной информации. Команда readelf — это

Швейцарский армейский нож для файлов формата ELF .

Примеры некоторых из наиболее часто используемых функций readelf:

Послесловие

А какие программы для анализа бинарных файлов в операционной системе Linux знаете и используете Вы? Поделитесь своим личным опытом и расскажите об этом в комментариях !

Другие материалы по теме анализа бинарных файлов в Linux

Источник

Оцените статью
Adblock
detector