簡體   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