Pycharm-在WSL上将pwntools与远程解释器一起使用

时间:2018-07-07 17:53:16

标签: python pycharm stdout windows-subsystem-for-linux pwntools

我正在WSL上的pycharm上使用远程解释器(已通过本教程进行配置:https://www.jetbrains.com/help/pycharm/using-wsl-as-a-remote-interpreter.html

我能够成功运行所需的一切,但是当我尝试使用pwntools(https://github.com/Gallopsled/pwntools)时,我能够在WSL bash python解释器上成功导入了它,但是在Pycharm上却没有成功。

这是我跑的:

from pwn import *

在Pycharm上卡住了,我打断了它,这是Exception(卡住的地方)的痕迹:

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

在我的WSL重击中,它运行得很好:

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 *
>>>

当我查看代码卡住的地方时(从Exception的痕迹中):

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

在脚本的开头作为全局变量:

fd = sys.stdout

我从互联网上了解到,此功能(此循环是其一部分)与接管终端有关。可能与我不是从终端运行有关吗? 有人以前见过这种问题吗?有一些有用的提示吗?

非常感谢您!

3 个答案:

答案 0 :(得分:0)

没有有效的方法,我对其进行调试,问题是术语初始化。它也可能与TERM和TERMINFO的环境变量有关。我的解决方法是修改/usr/local/lib/python2.7/dist-packages/pwnlib/args.py的最后一行,删除term.init(),将其替换为其他内容以绕过pwnlib的初始化。

替换此行:

调试pwntools:

答案 1 :(得分:0)

我也有潜在的解决方法,它正在为环境添加PWNLIB_NOTERM。

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

答案 2 :(得分:0)

还有另一种解决方法。

如果您使用 Pycharm ,您可以在运行配置中勾选 Run with Python console 框。

它可以在 Pycharm 2020.3IPython 中工作。(我认为它也可以在没有 IPython 的情况下工作) screenshot