成功的图
Mac自然就可以通过brew安装
brew install pwntoolsbrew install binutils
这样安装就可以
如果这样安装很顺利,那就可以遇到下一个问题了。
当你兴高采烈的没有看到报错信息,那肯定是想要试试pwn中的hello world。
于是,你会发现:
>>> import pwnTraceback (most recent call last): File "", line 1, in <module>ImportError: No module named pwn
没有pwn这个模块。
一些教程也许是对的,但那也只是建立在教程所在的环境下,可能也不会告诉你为什么。
如:《mac安装pwntools(python3.8)解决多数问题》
这个答案就是为了解决上面没有找到pwn模块的问题。
按照他的步骤,在相对应目录下,创建pth文件,将模块目录放到该文件内。然后就可以了。但是为什么这样做,pth文件又是什么文件,为啥放在这个目录下。
为什么我会产生这么多问题,是因为我安装失败了。
于是,我看到了这篇文章《python已安装了一个包,但是导入包中的模块时报错没有这个包》
这里引用原文章几句话:
python的搜索路径其实是一个列表,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败
当安装第三方模块的时候,如果不是按照标准方式安装,则为了能够引用(import)这些模块,必须将这些模块的安装路径添加到sys.path中,有以下几种方法:
最简单的方法:是在sys.path的某个目录下添加路径配置文件,最常见的就是在…/site-package/目录下。路径配置文件的扩展名是”.pth”,其中的每一行包含一个单独的路径,该路径会添加到sys.path列表中(已验证)。”.pth”中的路径既可以是绝对路径,也可以是相对路径,如果是相对路径,则是相对于包含”.pth”文件的路径而言的。
这就很易懂。
>>> import sys>>> sys.path['', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/opt/homebrew/lib/python3.9/site-packages']>>>
通过brew查看pwntools安装信息。
➜ site-packages brew info pwntoolspwntools: stable 4.3.1 (bottled), HEADCTF framework used by Gallopsled in every CTFhttps://github.com/Gallopsled/pwntoolsConflicts with: moreutils (because both install an `errno` executable)/opt/homebrew/Cellar/pwntools/4.3.1 (8,649 files, 73.9MB) * Poured from bottle on 2021-01-10 at 13:06:24
得到
/opt/homebrew/Cellar/pwntools/4.3.1/libexec/lib/python3.9/site-packages
然后创建.pth文件
(sys.path中的某一路径:/opt/homebrew/lib/python3.9/site-packages/),将上述内容写入。
再次的通过sys.path查看。
>>> import sys>>> sys.path['',... '/opt/homebrew/Cellar/pwntools/4.3.1/libexec/lib/python3.9/site-packages']
再次尝试引入pwn