Для исследовательского проекта мне нужно хэшировать «исполняемый след» приложения. У меня нет обширной базы знаний по этой конкретной области. Я пробовал, например, cat bash
, и stdout печатает gobbledygook. Как я могу читать исполняемый файл как обычные и нулевые?Как извлечь биты из бинарного исполняемого файла
ответ
Если вы хотите, чтобы получить двоичное представление в виде битов из файла, который вы можете использовать следующий питон скрипт, назвав его помощью 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")
Я пробовал свой код, и, похоже, он работает правильно, хотя я не уверен, конечно. Был бы я прав, предполагая, что этот скрипт будет возвращать одну и ту же двоичную последовательность каждый раз, когда он будет запущен в том же файле и что каждый исполняемый файл вернет другой? – Dolphiniac
Да, код генерирует поток бит для файла. Для разных файлов создается другой поток. – joamag
Спасибо. Идеально. – Dolphiniac
выполняемый файл не содержит «нормальные единицы и нули» (который называется 'binary', BTW). Вы должны прочитать отдельные байты (8 бит в современных ОС) и преобразовать их в двоичное представление для глаз человека. Исполняемый файл не является «читаемым», как книга или текстовый файл. –
Посмотрите на 'uuencode', который может дать вам более управляемое представление (т. Е. Простой текст) ваших двоичных файлов. Конечно, полезно ли это, зависит от того, что вы подразумеваете под «исполняемым размером». –