2

我在 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 上它被卡住了,我打断了它,这是异常的痕迹(它卡住的地方):

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 bash 上,它运行得很好:

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

当我查看卡住的代码时(来自异常的跟踪):

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

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

fd = sys.stdout

我从互联网上了解到这个功能(这个循环是它的一部分)与接管终端有关。也许这与我没有从终端运行的事实有关?以前有人见过这种问题吗?有一些有用的提示吗?

非常感谢!

4

3 回答 3

1

我也有一个潜在的修复方法,它正在向环境中添加一个 PWNLIB_NOTERM。

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

显示它运行的屏幕截图,我们得到一个 Encoder 对象实例

于 2019-02-12T00:01:55.720 回答
0

还有另一种解决方法。

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

它可以Pycharm 2020.3IPython.(我认为它在没有 IPython 的情况下也可以) 一起使用

于 2021-02-09T07:05:47.987 回答
0

没有有效的办法,我调试一下,问题是term初始化的问题。也可能和TERM和TERMINFO的环境变量有关。我的解决办法是修改最后一行/usr/local/lib/python2.7/dist-packages/pwnlib/args.py,delete term.init(),换成别的绕过pwnlib的初始化。

替换这一行:

调试 pwntools:

于 2018-12-07T15:57:08.857 回答