“\x5b\x4d\x6f etc..”在 Python 中是什么意思?
What does the "\x5b\x4d\x6f etc.." mean in Python?
这是我第一次post在这里,所以如果我有任何错误,请原谅。
所以,我在 Metasploit 页面上四处浏览,发现了这些奇怪的代码类型。我尝试在 google 和此处搜索它,但找不到像我一样的任何其他问题和答案。我还注意到 Elliot 在 Python 中编程时使用了 "Mr. Robot" 中的方法。我可以看到该代码通常用于病毒,但我需要知道为什么。这是我使用此方法找到的代码:
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"
该代码是以十六进制编码的 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:\
他们使用 Metasploit,更具体地说是 msfvenom,专门为精心制作或利用不同编码的文档(docs、ppt、xls 等)等文件创建或生成 shellcode。
它是一个字符串,就像任何其他字符串一样 "Hello World!"
。但是,它是以不同的方式编写的。在计算机中,根据编码,每个字符对应一个数字,称为代码点。您可能听说过的一种编码是 ASCII, another is 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:\
原则上,这种表示法不一定在病毒中找到,但这种编程通常需要对内存中的数字进行非常具体的操作,而无需过多考虑所表示的实际字符通过这些数字,这样就可以解释为什么你会看到它出现在那里。
这是我第一次post在这里,所以如果我有任何错误,请原谅。
所以,我在 Metasploit 页面上四处浏览,发现了这些奇怪的代码类型。我尝试在 google 和此处搜索它,但找不到像我一样的任何其他问题和答案。我还注意到 Elliot 在 Python 中编程时使用了 "Mr. Robot" 中的方法。我可以看到该代码通常用于病毒,但我需要知道为什么。这是我使用此方法找到的代码:
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"
该代码是以十六进制编码的 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:\
他们使用 Metasploit,更具体地说是 msfvenom,专门为精心制作或利用不同编码的文档(docs、ppt、xls 等)等文件创建或生成 shellcode。
它是一个字符串,就像任何其他字符串一样 "Hello World!"
。但是,它是以不同的方式编写的。在计算机中,根据编码,每个字符对应一个数字,称为代码点。您可能听说过的一种编码是 ASCII, another is 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:\
原则上,这种表示法不一定在病毒中找到,但这种编程通常需要对内存中的数字进行非常具体的操作,而无需过多考虑所表示的实际字符通过这些数字,这样就可以解释为什么你会看到它出现在那里。