使用python将输入发送到可执行文件

2024-05-20 07:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个可执行的C代码二进制,它要求2个输入。我想写一个python代码,自动给出输入。我的意思是当我运行python code.py | ./ones-and-zeroes时。它为可执行文件提供输入。我尝试使用print(INPUT),但它只在下一行请求输入时有效,而不是在同一行。这里是image

正如你们在图中所看到的,我想把-1作为第一个输入,在第二个输入中给出一些东西

我试过:

print(-1)
print(something)

更简短一点的是——我写道:
打印(1)
打印(2)
印刷品(3)

因为在新行中请求输入,所以它工作了here 但它不适用于其他可执行文件,因为input在同一行中请求输入

对不起,我可能不太清楚。我只想在第一个问题中输入:-1(你的秘密有多长:),在第二个问题中输入:test或一些字符串(输入你的秘密:)。然而,我想使用python代码来实现它。不是人工的

编辑:我没有确切的C代码,但是我设法对它进行了反向工程,下面是一些可能会有所帮助的东西

void getFlag(void)
{
    ushort secret_len;
    char your_secret[1936];

    printf("\nHow long is your secret: ");
    __isoc99_scanf(&DAT_0804a0dc,&secret_len);

    if(1927 < (short)secret_len) {
        puts("\nYour Secret is too long");
         exit(0);
    }

    printf("\nEnter your secret: ");
    getchar();
    fgets(your_secret, (uint)secret_len, stdin);
    puts("\nThe Enclave will shield your secrets!\n");
    return;
}

谢谢大家的帮助:)


Tags: 代码py可执行文件yoursecretlenis二进制
2条回答

我不太理解您的问题,但是如果您打算使用输入并在同一行中获取一个值,则可以使用此代码

x=int(input("How long is your secret:")
y=input("Enter your secret:")

如果您知道要在一行上打印的所有信息,有多种方法可以在一行输出上格式化多个值。获取-1,然后在单行上获取something变量的内容的一个选项是使用“f-strings”

print(f'-1 {something}')

基本上,您可以将任何python代码放在大括号中,它的字符串表示形式将被替换到字符串中,然后整个字符串将在末尾以换行符打印

如果由于不知道一次输出的所有内容而要对同一行进行多次打印,则需要使用sys.stdout.write,然后在确实需要写入换行符时包含一个显式“\n”

相关问题 更多 >