主要是由于shellcode中的十六进制是缩写形式。不满足标准写法,所以不被Python支持,可通过以下程序将十六进制的shellcode转换为标准形式
2.7版本
# coding=utf-8
import re
# 获取用户输入的 shellcode
shellcode = raw_input("shellcode:")
# 处理 shellcode
processed_shellcode = re.sub(r'\\x([0-9a-fA-F])(?![0-9a-fA-F])', r'\\x0\g<1>', shellcode)
print "处理后的 shellcode:", repr(processed_shellcode)[2:-1].replace("\\\\", "\\")
3.9版本
# coding=utf-8
#Python3.9
import re
# 获取用户输入的 shellcode
shellcode = input("shellcode:")
# 处理 shellcode
processed_shellcode = re.sub(r'\\x([0-9a-fA-F])(?![0-9a-fA-F])', r'\\x0\g<1>', shellcode)
print("处理后的 shellcode:", repr(processed_shellcode)[2:-1].replace("\\\\", "\\"))