Linux中yenc安装失败及Python2.7运行脚本报错求助
问题与解决方案
问题详情
1. Python3环境安装yenc失败
- 在Linux系统执行
pip install yenc或pip3 install yenc均失败,报错Error: Failed building wheel for yenc - 已尝试更新pip(当前版本23.2.1)、安装依赖库等方案,无效
- 当前Python版本为3.10.4
2. Python2.7环境安装后运行脚本报错
- 用pip2.7成功安装yenc-0.4.0,但运行脚本出现两个错误:
- scapy导入错误:
ImportError: cannot import name certificate_transparency - yenc属性错误:
yenc.decode不存在(确认官方文档中decode是有效属性)
- scapy导入错误:
- 将脚本从
yenc.py重命名后,yenc属性错误消失,但scapy导入问题仍存在
相关脚本
# Using Python #!/usr/bin/python from scapy.all import * import yenc pkts = rdpcap("./merge.pcap") file = open("./data","w") for i in range(0,len(pkts)): file.write(pkts[i].load) deco = yenc.decode("./data","./result")
解决方案
一、Python3安装yenc失败的解决办法
yenc官方0.4.0版本不支持Python3.6+,这是构建wheel失败的核心原因,可选两种方案:
- 安装Python3兼容的分支版本
克隆社区维护的Python3适配分支,源码安装:git clone https://github.com/waywardgeek/yenc.git cd yenc git checkout python3 python3 setup.py install - 改用Python3兼容的替代库
使用puyenc(专为Python3开发的yenc实现):pip3 install puyenc
二、Python2.7环境scapy导入错误的解决办法
这个错误是因为新版scapy在Python2.7中存在兼容性问题,可通过以下方式解决:
- 安装适配Python2.7的scapy旧版本
pip2.7 install scapy==2.4.5 - 精准导入所需模块
脚本只用到了rdpcap,无需导入全部模块,替换导入语句:
避免触发from scapy.utils import rdpcapcertificate_transparency的导入冲突
三、yenc.decode的正确用法
在Python2.7的yenc-0.4.0中,yenc.decode接受的是文件对象而非文件路径,脚本写法有误,修正示例:
#!/usr/bin/python from scapy.utils import rdpcap import yenc pkts = rdpcap("./merge.pcap") # 先把pcap中的load写入文件 with open("./data", "wb") as f: for pkt in pkts: f.write(pkt.load) # 调用yenc.decode处理文件 with open("./data", "rb") as in_file, open("./result", "wb") as out_file: yenc.decode(in_file, out_file)
另外注意:脚本文件名不要和库名重名(比如yenc.py),否则会优先导入本地脚本而非系统库,导致属性找不到的问题
内容的提问来源于stack exchange,提问作者known user
相关产品推荐
相关产品推荐

