python нет стандартного вывода из подпроцесса - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь передать строку в 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
...