Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我得到一个错误:';类型';对象没有属性'__获取项目';_Python_Pcap - Fatal编程技术网

Python 我得到一个错误:';类型';对象没有属性'__获取项目';

Python 我得到一个错误:';类型';对象没有属性'__获取项目';,python,pcap,Python,Pcap,我正在从网络捕获一个数据包,并试图将其解析到python程序中,并显示其中每个数据包包含的源MAC、目标MAC和协议 最后一行出现错误:“打印”(“协议:,str[Protocol],“生存时间:,str[timetolive])” 我的代码: #!usr/bin/python import pcapy from struct import* pcap_file=pcapy.open_offline("single.pcap") count=1 while count: pri

我正在从网络捕获一个数据包,并试图将其解析到python程序中,并显示其中每个数据包包含的源MAC、目标MAC和协议

最后一行出现错误:“打印”(“协议:,str[Protocol],“生存时间:,str[timetolive])”

我的代码:

#!usr/bin/python

import pcapy

from struct import*

pcap_file=pcapy.open_offline("single.pcap")

count=1

while count:
    print("Packet #:",count)

    count=count+1
    (header,payload)=pcap_file.next()

    l2hdr=payload[:14]
    l2data=unpack("!6s6sH",l2hdr)

    srcmac="%.2x:%.2x:%.2x:%.2x:%.2x:%.2x:" %(ord(l2hdr[0]),ord(l2hdr[1]),ord(l2hdr[2]),ord(l2hdr[3]),ord(l2hdr[4]),ord(l2hdr[5]))
    dstmac="%.2x:%.2x:%.2x:%.2x:%.2x:%.2x:" %(ord(l2hdr[6]),ord(l2hdr[7]),ord(l2hdr[8]),ord(l2hdr[9]),ord(l2hdr[10]),ord(l2hdr[11]))

    print("source MAC:",srcmac,"Destination MAC:",dstmac)

    ipheader=unpack('!BBHHHBBH4s4s',payload[14:34])
    timetolive=ipheader[5]
    protocol=ipheader[6]

    print("Protocol:",str[protocol],"Time to live:",str[timetolive])

将最后一行更改为:

print("Protocol:",str(protocol),"Time to live:",str(timetolive))

您正在尝试使用方括号访问
str
函数,但该函数不起作用

将最后一行更改为:

print("Protocol:",str(protocol),"Time to live:",str(timetolive))

您正在尝试使用方括号访问
str
函数,但该函数不起作用

似乎您正在使用
[]
而不是
()
来执行
str
函数


使用
str(协议)
str(timetolive)
;检查,将代码修改为
str(protocol.encode())
str(timetolive.encode())
,以确保python3的兼容性。

查看您正在使用
[]
而不是
()
函数


使用
str(协议)
str(timetolive)
;检查,将代码修改为
str(protocol.encode())
str(timetolive.encode())
,以确保python3的兼容性。

请详细说明代码位并将其样式化为代码style@AlexFung我正在从网络捕获一个数据包,并试图将其解析到我的python程序中,并显示源MAC,目的地MAC和协议每个数据包包括。。。。。但是,这是我所写的完整代码:@PrashuPratik请在问题的注释中也包含您所说的内容。此外,请修复代码标记。@PrashuPratik包含回溯,包括行where错误occured@sideffect0是的,我做到了。。。您能告诉我如何纠正错误吗?请详细说明并将代码位转换为代码style@AlexFung我正在从网络捕获一个数据包,并试图将其解析到我的python程序中,并显示其中每个数据包包含的源MAC、目标MAC和协议。。。。。但是,这是我所写的完整代码:@PrashuPratik请在问题的注释中也包含您所说的内容。此外,请修复代码标记。@PrashuPratik包含回溯,包括行where错误occured@sideffect0是的,我做到了。。。您能告诉我如何纠正错误吗?谢谢您指出我在代码中犯的一般错误。但是,我在“l2data=unpack(!6s6sH,l2hdr)”行中得到了另一个struct.error…该错误表示“unpack需要长度为14的字符串参数”…我应该如何将值从6s6sH更改为,以使长度为14@sideffect0@PrashuPratik在问题中包含此内容,以便其他人可以回答或创建另一个问题谢谢您指出我在代码中犯的一般错误。但是,我在“l2data=unpack(!6s6sH,l2hdr)”行中得到了另一个struct.error…该错误表示“unpack需要长度为14的字符串参数”…我应该如何将值从6s6sH更改为,以使长度为14@sideffect0@PrashuPratik将此问题包括在内,以便其他人可以回答或创建另一个问题