struct.error:解压缩需要20个字节的缓冲区

时间:2019-06-25 09:23:02

标签: python networking packet-sniffers

我目前正在python 3.6中进行数据包嗅探器项目,但运行时出现错误。解压效果很好,但是经过两到三个操作后,出现了错误,并且出现了标题中提到的错误。 我是python的新手,这个项目是一种紧急项目。我见过类似的问题,但并没有太大帮助。你能帮我解决这个问题吗?先感谢您 :) 以下是代码:

connec = socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.ntohs(3))
while True:
    raw_data, addr = connec.recvfrom(65535)
    dest_mac, src_mac, eth_proto,data = ethernet_frame(raw_data)
    print("\n Ethernet Frame:")
    print("Destination:{} Source:{} Protocol:{} ".format(dest_mac, src_mac, eth_proto,data))


        if eth_proto == 8:
        (version,header_lenght,ttl, proto,src,target,data) = ipv4_packet(data)
        print(" IPV4 Packet:")
        print("     Version:{}, Header Lenght:{}, TTL:{}".format(version,header_lenght,ttl))
        print("     Protocol:{}, Source:{}, Target:{}".format(proto,src,target))


def ipv4_packet(data):
version_header_lenght = data[0]
version = version_header_lenght >> 4
header_lenght = (version_header_lenght & 15) * 4
ttl, proto, src, target = struct.unpack('! 8x B B 2x 4s 4s',data[:20])
return version,header_lenght,ttl, proto, ipv4(src),ipv4(target),data[header_lenght:]

我很抱歉,如果这么长:)

0 个答案:

没有答案