Shahar Zelig
Shahar Zelig

Reputation: 31

Pycharm - using pwntools with remote interpreter on WSL

I am using remote interpreter on pycharm on WSL (configured it with this tutorial: https://www.jetbrains.com/help/pycharm/using-wsl-as-a-remote-interpreter.html)

I was able to run everything I needed successfully, but when I tried to use pwntools (https://github.com/Gallopsled/pwntools) I was able to import it successfully on the WSL bash python interpreter, but not on Pycharm.

This is what I ran:

from pwn import *

On Pycharm it was stucked and I interrupted it, this is the trace of the Exception (where it stucks):

ssh://shahar@localhost:22/usr/bin/python -u /tmp/pycharm_project_271/pwnablekr/fd.py
Traceback (most recent call last):
  File "/tmp/pycharm_project_271/pwnablekr/fd.py", line 1, in <module>
    from pwn import *
  File "/home/shahar/.local/lib/python2.7/site-packages/pwn/__init__.py", line 6, in <module>
    pwnlib.args.initialize()
  File "/home/shahar/.local/lib/python2.7/site-packages/pwnlib/args.py", line 208, in initialize
    term.init()
  File "/home/shahar/.local/lib/python2.7/site-packages/pwnlib/term/__init__.py", line 74, in init
    term.init()
  File "/home/shahar/.local/lib/python2.7/site-packages/pwnlib/term/term.py", line 109, in init
    c = os.read(fd.fileno(), 1)
KeyboardInterrupt

Process finished with exit code 1
    enter code here

On my WSL bash it ran just fine:

shahar@MYCOMPUTERNAME:/mnt/c/Users/shahar$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pwn import *
>>>

When I looked at the piece of code where it stuck (from the trace of the Exception):

while True:
    c = os.read(fd.fileno(), 1)
    s += c
    if c == 'R':
        break

at the beginning of the script as a global variable:

fd = sys.stdout

I understood from the internet that this function (which this loop is part of it) is related to take over the terminal. Maybe it is related to the fact I am not running from terminal? Had anyone seen this kind of problem before? has some helpful tips?

Thank you very much!

Upvotes: 3

Views: 2358

Answers (3)

ssh000
ssh000

Reputation: 11

There is another way to solve it.

If you use Pycharm , you can tick the box Run with Python console in Run configurations.

It will work in Pycharm 2020.3 with IPython.(I think it also works without IPython) screenshot

Upvotes: 1

h0w1tzr
h0w1tzr

Reputation: 21

I have a potential fix as well, and it's adding a PWNLIB_NOTERM to the environment.

import os
os.environ['PWNLIB_NOTERM'] = 'True'  # Configuration patch to allow pwntools to be run inside of an IDE
import pwn

Screenshot showing it runs and we get an Encoder object instance

Upvotes: 2

JiangWu
JiangWu

Reputation: 1

There is no effective way, I debug it, the problem is term initialization.it may also be related to the environment variables of the TERM and TERMINFO.My solution is to modify the last line of /usr/local/lib/python2.7/dist-packages/pwnlib/args.py,delete term.init(), replace it with anything else to bypass the initialization of pwnlib.

replace this line:

debug pwntools:

Upvotes: 0

Related Questions