I'm trying to use pwntools's process
and to write a string to stdin
and stderr
I want to learn what is the correct way to achieve this behavior instead of trying to find weirds ways to do this myself (running a differnet process that writes to the pipe or something like that) Thanks!
In the documentation there is a parameter to process
of stdin and stdout but I do not understand how to use it correctly,
I tried using open("<named pipe">) since I saw in the documentation that a file object is a valid argument, but then rememeberd that it will not work since writing is blocked until someone starts reading.
Just so there’s no magic: you can only write data into a process’s STDIN; STDERR is always an output FD you can only read or redirect. If you want to feed your program on fd 2 (e.g. it actually does an os.read(2,…)
), you must dup your stdin‐pipe onto fd 2 in the child before exec
. Otherwise just use send
/sendline
to write to STDIN and stderr=PIPE
(or a file) to capture its error‐output.