2013-03-29 5 views
-1

Для исследовательского проекта мне нужно хэшировать «исполняемый след» приложения. У меня нет обширной базы знаний по этой конкретной области. Я пробовал, например, cat bash, и stdout печатает gobbledygook. Как я могу читать исполняемый файл как обычные и нулевые?Как извлечь биты из бинарного исполняемого файла

+0

выполняемый файл не содержит «нормальные единицы и нули» (который называется 'binary', BTW). Вы должны прочитать отдельные байты (8 бит в современных ОС) и преобразовать их в двоичное представление для глаз человека. Исполняемый файл не является «читаемым», как книга или текстовый файл. –

+0

Посмотрите на 'uuencode', который может дать вам более управляемое представление (т. Е. Простой текст) ваших двоичных файлов. Конечно, полезно ли это, зависит от того, что вы подразумеваете под «исполняемым размером». –

ответ

1

Если вы хотите, чтобы получить двоичное представление в виде битов из файла, который вы можете использовать следующий питон скрипт, назвав его помощью python to_binary.py name_of_file

import sys 

def bin(x): 
    return "".join(x & (1 << i) and "1" or "0" for i in range(7,-1,-1)) 

file = open(sys.argv[1], "rb") 
contents = file.read() 
file.close() 

for byte in contents: 
    sys.stdout.write(bin(ord(byte))) 
sys.stdout.write("\n") 
+0

Я пробовал свой код, и, похоже, он работает правильно, хотя я не уверен, конечно. Был бы я прав, предполагая, что этот скрипт будет возвращать одну и ту же двоичную последовательность каждый раз, когда он будет запущен в том же файле и что каждый исполняемый файл вернет другой? – Dolphiniac

+0

Да, код генерирует поток бит для файла. Для разных файлов создается другой поток. – joamag

+0

Спасибо. Идеально. – Dolphiniac