Что означает \x5b\x4d\x6f и т. д. в Python?

это мой первый пост здесь, поэтому, пожалуйста, извините меня, если я сделал какие-то ошибки.

Итак, я просматривал страницу Metasploit и нашел эти странные типы кодов. Я пытался найти его в Google и здесь, но не смог найти никаких других вопросов и ответов, как я. Я также заметил, что Эллиот использовал этот метод в «Мистере Роботе» при программировании на Python. Я вижу, что этот код обычно используется в вирусах, но мне нужно знать, почему. Это код, который я нашел с помощью этого метода:

buf += "\x5b\x4d\x6f\x76\x69\x65\x50\x6c\x61\x79\x5d\x0d\x0a\x46\x69\x6c\x65\x4e\x61\x6d\x65\x30\x3d \x43\x3a\x5c"


person Märten Reinaas    schedule 31.01.2018    source источник
comment
Возможный дубликат Что означает ведущий `\ x ` означает в строке Python `\xaa`   -  person ikkuh    schedule 31.01.2018
comment
Также может быть что-то вроде запутывания.   -  person Patrick Artner    schedule 31.01.2018


Ответы (3)


Это строка, как и любая другая строка, например "Hello World!". Однако написано по-другому. В компьютерах каждому символу соответствует число, называемое кодовой точкой, в соответствии с кодировкой. Одна из таких кодировок, о которой вы, возможно, слышали, — это ASCII, другая — UTF-8. Чтобы привести пример, в обеих кодировках буква H соответствует числу 72. В Python обычно указывается строка с помощью совпадающих букв, например "Hello World!". Однако также возможно использовать кодовые точки. В python это можно обозначить как \xab, где ab заменяется шестнадцатеричной формой кодовой точки. Таким образом, H станет '\x48', потому что 48 — это шестнадцатеричная запись для 72, кодовой точки для буквы H. В этом обозначении "Hello World!" становится "\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21".

Указанная вами строка состоит из шестнадцатеричной кодовой точки 5b (десятичное число 91, кодовая точка символа [), за которой следует кодовая точка 4d (M) и т. д., что приводит к полной строке [MoviePlay]\r\nFileName0=C:\\. Здесь \r и \n являются специальными символами, вместе представляющими разрыв строки, поэтому их также можно прочитать как:

[MoviePlay]
FileName0=C:\\

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

person Lennaert Bel    schedule 31.01.2018

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

print('\x5b\x4d\x6f\x76\x69\x65\x50\x6c\x61\x79\x5d\x0d\x0a\x46\x69\x6c\x65\x4e\x61\x6d\x65\x30\x3d\x43\x3a\x5c')

Результат:

[MoviePlay]
FileName0=C:\
person Aaron    schedule 31.01.2018
comment
Я понятия не имею, является ли этот фрагмент кода вредоносным. Кинематографисты обычно используют кодирование, чтобы сделать свои фильмы загадочными (для широкой публики). - person Aaron; 31.01.2018
comment
Я просто взял этот фрагмент кода из Google в качестве примера, но я думаю, что это был этот: эксплойт-db.com/exploits/16153 - person Märten Reinaas; 31.01.2018
comment
Такая обфускация кода может защитить его от обнаружения антивирусом. Однако я думаю, что антивирус может обнаружить проблему при ее декодировании. - person Aaron; 31.01.2018

Они используют Metasploit, а точнее msfvenom, для создания или генерации шелл-кодов специально для созданных или эксплуатируемых файлов, таких как документы (docs, ppt, xls и т. д.) с различной кодировкой.

person Llallum    schedule 31.01.2018