"installing" 更改结构 Python
"installing" Kaitai Struct Python
我需要有关在笔记本电脑上安装 Kaitai Struct 的帮助。
我安装了 python-kaitaistruct 并编译了网络文件。
但是我收到一个导入错误:
Traceback (most recent call last):
File "test2.py", line 1, in <module>
from ethernet_frame import *
File "/home/bene/python/ethernet_frame.py", line 15, in <module>
from ipv6_packet import Ipv6Packet
File "/home/bene/python/ipv6_packet.py", line 17, in <module>
from ipv4_packet import Ipv4Packet
File "/home/bene/python/ipv4_packet.py", line 17, in <module>
from ipv6_packet import Ipv6Packet
ImportError: cannot import name 'Ipv6Packet
我的文件夹如下所示:
insgesamt 76K
drwxr-xr-x 3 bene bene 330 19. Jan 16:03 .
drwx------ 24 bene bene 4,0K 19. Jan 16:06 ..
-rw-r--r-- 1 bene bene 42 5. Jan 12:38 country.py
-rw-r--r-- 1 bene bene 8,0K 5. Jan 12:09 dns_packet.py
-rw-r--r-- 1 bene bene 1,6K 5. Jan 12:09 ethernet_frame.py
-rw-r--r-- 1 bene bene 3,0K 5. Jan 12:09 icmp_packet.py
-rw-r--r-- 1 bene bene 7,7K 5. Jan 12:09 ipv4_packet.py
-rw-r--r-- 1 bene bene 2,7K 5. Jan 12:09 ipv6_packet.py
-rw-r--r-- 1 bene bene 6,4K 5. Jan 12:09 microsoft_network_monitor_v2.py
-rw-r--r-- 1 bene bene 7,0K 5. Jan 12:09 pcap.py
drwxr-xr-x 2 bene bene 180 5. Jan 12:12 __pycache__
-rw-r--r-- 1 bene bene 1,1K 5. Jan 12:09 tcp_segment.py
-rw-r--r-- 1 bene bene 518 5. Jan 12:32 test1.py
-rw-r--r-- 1 bene bene 596 19. Jan 15:56 test2.py
-rw-r--r-- 1 bene bene 667 5. Jan 12:38 test.py
-rw-r--r-- 1 bene bene 880 5. Jan 12:09 udp_datagram.py
-rw-r--r-- 1 bene bene 986 5. Jan 12:09 windows_systemtime.py
和我执行的文件:
from ethernet_frame import *
import socket
s = socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.ntohs(3))
def network(buf):
io = BytesIO(buf)
ksio = KaitaiStream(io)
pkt = EthernetFrame(ksio)
dummy = pkt.ipv4_body.src_ip_addr
print(dummy)
while True:
p = s.recvfrom(65565)
network(p)
谁能帮帮我,也许我安装错了?
或者如何安装和使用它的完整指南会很酷:DD
谢谢 <3
我认为您应该将 Kaitai Struct 为您生成的文件放在 Python 可以找到的地方。到目前为止,最简单的解决方案可能是将其保存在当前目录中并使用类似以下内容启动 test2.py
:
PYTHONPATH=. python ./test2.py
或者,如果您想将所有内容都保存在同一个目录中,较新的编译器允许您指定 --python-package .
以生成在当前目录中查找内容的包导入。
我有一个类似的问题,在检查编译器创建的 .py 文件后,我发现编辑导入序列解决了这个问题。示例:
import ipv4_packet
导致了与您相同的错误。
我检查了 ipv4_packet.py
,它有一个导入语句 from ipv6_packet import Ipv6Packet
。
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
from pkg_resources import parse_version
from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
if parse_version(ks_version) < parse_version('0.7'):
raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
from udp_datagram import UdpDatagram
from tcp_segment import TcpSegment
from ipv6_packet import Ipv6Packet
from icmp_packet import IcmpPacket
class Ipv4Packet(KaitaiStruct):
class ProtocolEnum(Enum):
ipv6_packet
反过来尝试从 ipv4_packet: from ipv4_packet import Ipv4Packet
导入 class,并导致导入错误。如果行 (ipv4_packet .py
):
from udp_datagram import UdpDatagram
from tcp_segment import TcpSegment
from ipv6_packet import Ipv6Packet
from icmp_packet import IcmpPacket
被移到class定义之后没有错误。
今天早上第一次玩 Kaitai Struct,我相信这不需要手动完成,编译中有一个问题 I/we 正在做,但如果你这样做的话,这是可行的只想快点玩
我需要有关在笔记本电脑上安装 Kaitai Struct 的帮助。
我安装了 python-kaitaistruct 并编译了网络文件。
但是我收到一个导入错误:
Traceback (most recent call last):
File "test2.py", line 1, in <module>
from ethernet_frame import *
File "/home/bene/python/ethernet_frame.py", line 15, in <module>
from ipv6_packet import Ipv6Packet
File "/home/bene/python/ipv6_packet.py", line 17, in <module>
from ipv4_packet import Ipv4Packet
File "/home/bene/python/ipv4_packet.py", line 17, in <module>
from ipv6_packet import Ipv6Packet
ImportError: cannot import name 'Ipv6Packet
我的文件夹如下所示:
insgesamt 76K
drwxr-xr-x 3 bene bene 330 19. Jan 16:03 .
drwx------ 24 bene bene 4,0K 19. Jan 16:06 ..
-rw-r--r-- 1 bene bene 42 5. Jan 12:38 country.py
-rw-r--r-- 1 bene bene 8,0K 5. Jan 12:09 dns_packet.py
-rw-r--r-- 1 bene bene 1,6K 5. Jan 12:09 ethernet_frame.py
-rw-r--r-- 1 bene bene 3,0K 5. Jan 12:09 icmp_packet.py
-rw-r--r-- 1 bene bene 7,7K 5. Jan 12:09 ipv4_packet.py
-rw-r--r-- 1 bene bene 2,7K 5. Jan 12:09 ipv6_packet.py
-rw-r--r-- 1 bene bene 6,4K 5. Jan 12:09 microsoft_network_monitor_v2.py
-rw-r--r-- 1 bene bene 7,0K 5. Jan 12:09 pcap.py
drwxr-xr-x 2 bene bene 180 5. Jan 12:12 __pycache__
-rw-r--r-- 1 bene bene 1,1K 5. Jan 12:09 tcp_segment.py
-rw-r--r-- 1 bene bene 518 5. Jan 12:32 test1.py
-rw-r--r-- 1 bene bene 596 19. Jan 15:56 test2.py
-rw-r--r-- 1 bene bene 667 5. Jan 12:38 test.py
-rw-r--r-- 1 bene bene 880 5. Jan 12:09 udp_datagram.py
-rw-r--r-- 1 bene bene 986 5. Jan 12:09 windows_systemtime.py
和我执行的文件:
from ethernet_frame import *
import socket
s = socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.ntohs(3))
def network(buf):
io = BytesIO(buf)
ksio = KaitaiStream(io)
pkt = EthernetFrame(ksio)
dummy = pkt.ipv4_body.src_ip_addr
print(dummy)
while True:
p = s.recvfrom(65565)
network(p)
谁能帮帮我,也许我安装错了? 或者如何安装和使用它的完整指南会很酷:DD
谢谢 <3
我认为您应该将 Kaitai Struct 为您生成的文件放在 Python 可以找到的地方。到目前为止,最简单的解决方案可能是将其保存在当前目录中并使用类似以下内容启动 test2.py
:
PYTHONPATH=. python ./test2.py
或者,如果您想将所有内容都保存在同一个目录中,较新的编译器允许您指定 --python-package .
以生成在当前目录中查找内容的包导入。
我有一个类似的问题,在检查编译器创建的 .py 文件后,我发现编辑导入序列解决了这个问题。示例:
import ipv4_packet
导致了与您相同的错误。
我检查了 ipv4_packet.py
,它有一个导入语句 from ipv6_packet import Ipv6Packet
。
# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
from pkg_resources import parse_version
from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
from enum import Enum
if parse_version(ks_version) < parse_version('0.7'):
raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
from udp_datagram import UdpDatagram
from tcp_segment import TcpSegment
from ipv6_packet import Ipv6Packet
from icmp_packet import IcmpPacket
class Ipv4Packet(KaitaiStruct):
class ProtocolEnum(Enum):
ipv6_packet
反过来尝试从 ipv4_packet: from ipv4_packet import Ipv4Packet
导入 class,并导致导入错误。如果行 (ipv4_packet .py
):
from udp_datagram import UdpDatagram
from tcp_segment import TcpSegment
from ipv6_packet import Ipv6Packet
from icmp_packet import IcmpPacket
被移到class定义之后没有错误。
今天早上第一次玩 Kaitai Struct,我相信这不需要手动完成,编译中有一个问题 I/we 正在做,但如果你这样做的话,这是可行的只想快点玩