使用Firmadyne模拟固件时,如何解决‘ImportError: No module named magic’
解决Firmadyne extractor.py的ImportError: No module named magic问题
可能原因及对应解决步骤
Python版本不匹配
Firmadyne的extractor.py默认可能调用Python2执行,而你安装的是Python3版本的magic模块,导致脚本找不到对应依赖。- 查看脚本第一行的shebang:如果是
#!/usr/bin/env python,说明默认使用Python2。 - 安装Python2版本的
python-magic:# Debian/Ubuntu系统 sudo apt-get install python-magic # 或用pip2安装 sudo pip2 install python-magic
- 查看脚本第一行的shebang:如果是
缺少系统级依赖库
magic模块依赖系统底层的libmagic库,仅安装Python模块但缺少底层库仍会报错。- 安装系统依赖:
# Debian/Ubuntu系统 sudo apt-get install libmagic1 # CentOS/RHEL系统 sudo yum install file-libs
- 安装系统依赖:
强制指定Python版本运行脚本
若确认要使用Python3运行,先确保脚本兼容Python3,再通过以下方式执行:python3 ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "WNAP320 Firmware Version 2.0.3.zip" images也可以修改脚本第一行的shebang为
#!/usr/bin/env python3,后续直接执行脚本即可。验证模块安装有效性
打开对应版本的Python终端测试模块是否安装成功:# 测试Python2 python2 -c "import magic; print('Success')" # 测试Python3 python3 -c "import magic; print('Success')"若输出
Success则说明模块安装正常,否则重新安装对应版本的模块。
内容的提问来源于stack exchange,提问作者Thrain
相关产品推荐
相关产品推荐

