繁体   English   中英

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

[英]Send input to executable using python

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

正如您在图像中看到的,我想将 -1 作为第一个输入,在第二个输入中给出一些内容。

我试过:

print(-1)
print(something)

更简短的是-我写道:
打印(1)
打印(2)
打印(3)

它在这里工作是因为输入在新行中询问
但它不适用于其他可执行文件,因为输入要求在同一行输入。

我在这里可能不清楚,抱歉。 我只想在第一个问题中输入:-1(你的秘密有多长:)并在第二个问题中输入:测试或一些字符串(输入你的秘密:)。 但是我想使用 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;
}

谢谢大家的帮助:)

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

print(f'-1 {something}')

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

如果你想对同一行进行多次打印,因为你不知道你所有的 output 一次,你需要使用 sys.stdout.write 然后在你确实需要写的时候包含一个明确的'\n'新队。

我不太明白你的问题,但如果你的意思是在同一行中使用输入和取值,你可以使用这段代码

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM