使用 pcap 模板时出现 Ipv6Packet 错误
Ipv6Packet error when using pcap template
正在尝试在 python 中使用 Kaitai 结构读取 pcap。
我已经从 pcap.ksy
文件
创建了 python 文件
$ ./bin/kaitai-struct-compiler -t python --outdir xx formats/network/pcap.ksy
$ ls xx
ethernet_frame.py ipv6_packet.py __pycache__
icmp_packet.py packet_ppi.py tcp_segment.py
ipv4_packet.py pcap.py udp_datagram.py
PYTHONPATH 设置为xx 目录。现在,如果我 运行 一个简单的一行脚本来检查我是否可以加载模块
from pcap import Pcap
我收到这个错误
$ python3 try.py
Traceback (most recent call last):
File "try.py", line 1, in <module>
from pcap import Pcap
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/pcap.py", line 11, in <module>
from packet_ppi import PacketPpi
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/packet_ppi.py", line 11, in <module>
from ethernet_frame import EthernetFrame
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ethernet_frame.py", line 11, in <module>
from ipv6_packet import Ipv6Packet
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ipv6_packet.py", line 12, in <module>
from ipv4_packet import Ipv4Packet
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ipv4_packet.py", line 13, in <module>
from ipv6_packet import Ipv6Packet
ImportError: cannot import name 'Ipv6Packet'
我读到的是 python 路径没问题,python 模块正在从 pacp、以太网、ipv6 到 ipv4 的链条中向下工作。然后 ipv4 尝试再次加载 ipv6 并且脚本失败。
我认为代码正在触发导入循环。
有人知道我做错了什么吗?
这是一个循环依赖问题,仅在 Python 和 it is solved with a workaround 较新的 Kaitai Struct 版本(0.9 不稳定)中出现。
请尝试更新到 KS 0.9+。
正在尝试在 python 中使用 Kaitai 结构读取 pcap。
我已经从 pcap.ksy
文件
$ ./bin/kaitai-struct-compiler -t python --outdir xx formats/network/pcap.ksy
$ ls xx
ethernet_frame.py ipv6_packet.py __pycache__
icmp_packet.py packet_ppi.py tcp_segment.py
ipv4_packet.py pcap.py udp_datagram.py
PYTHONPATH 设置为xx 目录。现在,如果我 运行 一个简单的一行脚本来检查我是否可以加载模块
from pcap import Pcap
我收到这个错误
$ python3 try.py
Traceback (most recent call last):
File "try.py", line 1, in <module>
from pcap import Pcap
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/pcap.py", line 11, in <module>
from packet_ppi import PacketPpi
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/packet_ppi.py", line 11, in <module>
from ethernet_frame import EthernetFrame
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ethernet_frame.py", line 11, in <module>
from ipv6_packet import Ipv6Packet
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ipv6_packet.py", line 12, in <module>
from ipv4_packet import Ipv4Packet
File "/spare/tmp/scratch/kaitai-struct-compiler-0.8/xx/ipv4_packet.py", line 13, in <module>
from ipv6_packet import Ipv6Packet
ImportError: cannot import name 'Ipv6Packet'
我读到的是 python 路径没问题,python 模块正在从 pacp、以太网、ipv6 到 ipv4 的链条中向下工作。然后 ipv4 尝试再次加载 ipv6 并且脚本失败。
我认为代码正在触发导入循环。
有人知道我做错了什么吗?
这是一个循环依赖问题,仅在 Python 和 it is solved with a workaround 较新的 Kaitai Struct 版本(0.9 不稳定)中出现。
请尝试更新到 KS 0.9+。