[英]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.