說說pwntools安裝完後,import pwn時出現的ImportError:cannot import name ENUM_P_TYPE
閒來無事,裝個kali玩玩,結果,遇到的坑真是一步接一步,今天說說import pwn時,出現苦逼的ImportError:cannot import name ENUM_P_TYPE,*“No picture,you say a j8”*上圖:
類似以上什麼不能匯入name XXX的稀奇古怪的問題,我一個菜雞哪裡知道,於是試遍各大搜索引擎,終於在一篇滿是英文的網站找到了這個問題的描述,好心的我給你們貼上鍊接:https://github.com/Gallopsled/pwntools/issues/1189
github就是強大,我感動的痛哭流涕,不枉費我的一片苦苦查詢。在這裡我瞭解到了一個東西:pyelftools,具體是什麼,恕在下無能,我沒查到。
如果知道的話,歡迎評論留言,感激不盡。
在github裡面關於ImportError問題,給出了答案,如果我沒翻譯錯的話,有兩種改法;
1.找到錯誤的目錄,修改檔案裡的原始碼,將ENUM_P_TYPE改為ENUM_P_TYPE_BASE,我的那個elf.py檔案目錄如下,(每個人大概差不多):/usr/local/lib/python2.7/dist-packages/pwntools-3.14.0.dev0-py2.7.egg/pwnlib/elf/elf.py
在這個py檔案裡,修改55行1749行的ENUM_P_TYPE,改為ENUM_P_TYPE_BASE,(具體的行數可能有出入,相差幾行左右)。
是的,有人用這種方法成功了,但是,不是我。就當我,滿心歡喜的時候,又出現了另一個匯入錯誤。所以我用了第二種方法,
2.reduce your pyelftools version to 0.24
我還不清楚pyelftools是什麼,就讓我把他的版本降到0.24版本,
首先,這個檔案在哪?怎麼降低(當然我採用的是刪了現有版本,下個0.24版本的)
我的pyelftools路徑如下:
/usr/local/lib/python2.7/dist-packages/pyelftools-0.25(沒錯原來是0.25的)
然後我搜索了一波,找到了pyelftools的
那個pip install pyelftools==0.2x,就是linux下的安裝的命令,點選Release history就可以檢視以往的歷史版本。替換之後,我高興的import pwn測試了一下,結果,留下了悲傷的淚水,還是錯誤, 我又緊接著換了0.23的版本, 沒錯,成功了,沒錯,成功了,沒錯,成功了。