运行 python 在 ELF 程序上暴力破解大量数字的脚本
Run python script that brute forces large numbers on ELF program
我正在尝试编写一个 python 脚本来暴力破解 ELF 程序。我需要在这个 ELF 程序中输入非常大的数字才能让它工作。我当前的脚本是:
for x in range(10000000000000,100000000000000000):
print(x)
然后在命令行上:
python script.py | ./program
我发现了 2 个错误,第一个是由于数字的大小,它给我一个内存错误。二是程序在输入后保留运行。我需要它输入到程序中,然后结束程序并输入下一个值。
数字的大小必须保持不变,输入小数字不会破解程序。
您首先生成所有这些数字,将它们连接成一个大字符串(由 print
隐式添加的换行符分隔)并最终将这个 单个 大字符串传输到您的程序。
您 运行 内存不足,因为您生成的字符串不适合内存。
我猜您想分别测试这些数字中的每一个,一个一个地测试。
您可以使用 python(使用 subprocess 模块)执行此操作。
但是使用 bash:
要简单得多
for ((a=10000000000000; a <= 100000000000000000 ; a++)); do
echo $a | ./program
done
我会在 Python 3 中执行此操作,并会使用 subprocess
子模块:
import subprocess
for x in range(10000000000000, 100000000000000000):
subprocess.run(f'echo {x} | ./program', shell=True)
或者,减少对 shell 的依赖:
import os
import subprocess
cmd = os.path.join(os.path.realpath('.'), 'program')
for x in range(10000000000000, 100000000000000000):
subprocess.run(cmd, input=f'{x}'.encode())
简单地运行为:
python3 script.py
我正在尝试编写一个 python 脚本来暴力破解 ELF 程序。我需要在这个 ELF 程序中输入非常大的数字才能让它工作。我当前的脚本是:
for x in range(10000000000000,100000000000000000):
print(x)
然后在命令行上:
python script.py | ./program
我发现了 2 个错误,第一个是由于数字的大小,它给我一个内存错误。二是程序在输入后保留运行。我需要它输入到程序中,然后结束程序并输入下一个值。
数字的大小必须保持不变,输入小数字不会破解程序。
您首先生成所有这些数字,将它们连接成一个大字符串(由 print
隐式添加的换行符分隔)并最终将这个 单个 大字符串传输到您的程序。
您 运行 内存不足,因为您生成的字符串不适合内存。
我猜您想分别测试这些数字中的每一个,一个一个地测试。 您可以使用 python(使用 subprocess 模块)执行此操作。 但是使用 bash:
要简单得多for ((a=10000000000000; a <= 100000000000000000 ; a++)); do
echo $a | ./program
done
我会在 Python 3 中执行此操作,并会使用 subprocess
子模块:
import subprocess
for x in range(10000000000000, 100000000000000000):
subprocess.run(f'echo {x} | ./program', shell=True)
或者,减少对 shell 的依赖:
import os
import subprocess
cmd = os.path.join(os.path.realpath('.'), 'program')
for x in range(10000000000000, 100000000000000000):
subprocess.run(cmd, input=f'{x}'.encode())
简单地运行为:
python3 script.py