Я пытаюсь передать строку в exe и получить ее вывод. Exe просто просит пароль, а затем говорит вам, если он правильный или нет. Просто верно? Я использовал подпроцесс много раз прежде, поэтому я довольно смущен тем, почему он не дает мне стандартный вывод.
key="ABCDEFG\n"
process=subprocess.Popen(".\crackme1.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
outerr=process.communicate(key.encode())
print(outerr)
возвращает пустой кортеж stdout / stderr (b'', b'')
. Есть идеи, что я делаю не так? Я чувствую, что должен забыть какую-то простую вещь, но я балуюсь ею в течение часа solid без какого-либо прогресса. в случае, если по какой-то причине это имеет значение , этот является exe, и его использование выглядит как
Enter password: WYVf3z8MF2
Password is correct! ;)
, а точная сборка, используемая для чтения / записи, равна
push 0 ; lpReserved
push 0 ; lpNumberOfCharsWritten
push 11h ; nNumberOfCharsToWrite
push offset aEnterPassword ; "Enter password: "
push hConsoleOutput ; hConsoleOutput
call ds:WriteConsoleA
push 0 ; pInputControl
push offset NumberOfCharsRead ; lpNumberOfCharsRead
push 64h ; 'd' ; nNumberOfCharsToRead
push offset unk_402010 ; lpBuffer
push hConsoleInput ; hConsoleInput
call ds:ReadConsoleA