USB-накопитель невозможно отформатировать после записи на него ISO-образа (ISO 9660)

file сообщает, что тип mime для исполняемых файлов ELF (и только исполняемых файлов ELF, по крайней мере, с версией 5.22, которую я смотрю на ).

Таким образом, все, что вам нужно, это достаточно заголовка файла ELF, чтобы найти исполняемый файл ELF. Например:

printf '\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0' > file

Главное здесь:

  • \177ELF, который идентифицирует его как файл ELF
  • \2\0означает исполняемый файл(в отличие от разделяемой библиотеки или другого типа файла ELF ).
  • первый \1, который говорит, что это прямой порядок байтов (, если вы измените это на \2, то \2\0нужно изменить на\0\2).

Все остальное вы можете изменить. Например, вы можете сократить его до printf '\177ELF.\1%10s\2\0'.

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

(file --mime-type fileдля отображения MIME-типа ).

Или просто возьмите эти байты из любого исполняемого файла ELF в вашей системе:

head -c18 < /bin/ls > file

Само собой разумеется, что это не делает эти файлы действительными исполняемыми файлами ELF. Заголовка файла ELF достаточно для file, чтобы распознать их как исполняемые файлы ELF, но недостаточно, чтобы ваша система могла их выполнять.

Чтобы сделать небольшой исполняемый файл ELF, который все еще может выполняться, см. попытку этого парня создать самый маленький исполняемый файл «Hi World» (для Linux на x86/amd64):

uudecode << EOF
begin-base64 755 file
f0VMRgEBAUhpIFdvcmxkCgIAAwABAAAAgIAECDQAAAAAuAQAAADNgOtYIAAC
ACgABQAEAAEAAAAAAAAAAIAECACABAiiAAAAogAAAAUAAAAAEAAAAQAAAKQA
AACkkAQIpJAECAkAAAAJAAAAugkAAAC5B5AECLsBAAAA66QAAADr6rsAAAAA
uAEAAADNgA==
====
EOF

Или изhttp://www.muppetlabs.com/~breadbox/software/tiny/teensy.html(45 байт! ), который ничего не делает, кроме выхода с кодом 42:

uudecode << EOF
begin-base64 755 file
f0VMRgEAAAAAAAAAAAABAAIAAwAgAAEAIAABAAQAAACzKjHAQM2AADQAIAAB
====
EOF

Интересно, что Linux разрешает выполнять его как исполняемый файл ELF, даже если он недействителен (он даже короче, чем заголовок ELF ), и fileне сообщает application/x-executableоб этом (потому что поле endianness равно 0 вместо 1/2)

1
19.07.2020, 05:44
1 ответ

Я помню этот вопрос об обмене стеками как самый подробный.

Среди этого сообщения я думаю, что ответ по мнемонике сделает свою работу. Вы можете публиковать дальнейшие обновления, если вы застряли.

0
18.03.2021, 23:19

Теги

Похожие вопросы