Разбор двоичных файлов с помощью Python

В качестве побочного проекта я хотел бы попытаться проанализировать двоичные файлы (особенно файлы Mach-O). Я знаю, что для этого уже существуют инструменты (otool), так что считайте это упражнением для обучения.

Проблема, с которой я столкнулся, заключается в том, что я не понимаю, как преобразовать найденные двоичные элементы в представление Python. Например, формат файла Mach-O начинается с заголовка, который определяется структурой C. Первый элемент - это поле uint_32 'magic number'. Когда я делаю

magic = f.read(4)

, я получаю

b'\xcf\xfa\xed\xfe'

Это начинает иметь для меня смысл. Это буквально байтовый массив из 4 байтов. Однако я хочу рассматривать это как 4-байтовое int, которое представляет исходное магическое число. Другой пример - поле numberOfSections. Я просто хочу, чтобы число было представлено 4-байтовым полем, а не массивом буквальных байтов.

Возможно, я ошибаюсь в этом. Кто-нибудь работал над чем-нибудь подобным? Нужно ли мне писать функции для просмотра этих 4-байтовых массивов, сдвига и объединения их значений для получения нужного мне числа? Неужели энтузиазм меня здесь обманет? Любые указатели были бы наиболее полезны.

11
задан D.C. 21 August 2011 в 20:51
поделиться