Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 如何在pyshark中打印协议名而不是相应的数字? 导入pyshark pkt=pyshark.FileCapture('mypacket.pcap') pkt[1].ip.proto_Python_Wireshark_Scapy_Pyshark - Fatal编程技术网

Python 如何在pyshark中打印协议名而不是相应的数字? 导入pyshark pkt=pyshark.FileCapture('mypacket.pcap') pkt[1].ip.proto

Python 如何在pyshark中打印协议名而不是相应的数字? 导入pyshark pkt=pyshark.FileCapture('mypacket.pcap') pkt[1].ip.proto,python,wireshark,scapy,pyshark,Python,Wireshark,Scapy,Pyshark,输出: 十七, 我想打印“UDP”而不是“17”可以在这里找到协议编号列表: 转化 本质上,我们希望使用python的内置socket库将协议号转换为名称 导入套接字 进口皮沙克 def proto_name_by_num(proto_num): 对于名称,变量(套接字)中的num。items() 如果name.startswith(“IPPROTO”)和proto_num==num: 返回名称[8:] 返回“未找到协议” def数据包_lvl4_协议(文件路径,数据包编号): packet\u

输出: 十七,


我想打印“UDP”而不是“17”

可以在这里找到协议编号列表:

转化 本质上,我们希望使用python的内置
socket
库将协议号转换为名称

导入套接字
进口皮沙克
def proto_name_by_num(proto_num):
对于名称,变量(套接字)中的num。items()
如果name.startswith(“IPPROTO”)和proto_num==num:
返回名称[8:]
返回“未找到协议”
def数据包_lvl4_协议(文件路径,数据包编号):
packet\u capture=pyshark.FileCapture(filepath)
pkt=数据包捕获[数据包数量]
proto_num=int(pkt.ip.proto)
proto_name=proto_name_by_num(proto_num)
返回proto_名称
层名称=数据包层4协议(“mypacket.pcap”,1)
打印(图层名称)
如果指定的数据包具有UDP层,则应生成UDP

验证此解决方案 范围(257)内的i的
:
proto_name=proto_name_by_num(i)
如果原型名称!=“未找到协议”:
打印(i,num)
通过以上代码片段的输出,我们可以看到,这些是截至撰写此答案时,
socket
已知的协议编号:

0 IP
1 ICMP
2 IGMP
3 GGP
4 IPV4
6 TCP
8 EGP
12 PUP
17 UDP
22 IDP
29 TP
36 XTP
41 IPV6
43 ROUTING
44 FRAGMENT
46 RSVP
47 GRE
50 ESP
51 AH
58 ICMPV6
59 NONE
60 DSTOPTS
63 HELLO
77 ND
80 EON
103 PIM
108 IPCOMP
132 SCTP
255 RAW
256 MAX

协议编号列表可在此处找到:

转化 本质上,我们希望使用python的内置
socket
库将协议号转换为名称

导入套接字
进口皮沙克
def proto_name_by_num(proto_num):
对于名称,变量(套接字)中的num。items()
如果name.startswith(“IPPROTO”)和proto_num==num:
返回名称[8:]
返回“未找到协议”
def数据包_lvl4_协议(文件路径,数据包编号):
packet\u capture=pyshark.FileCapture(filepath)
pkt=数据包捕获[数据包数量]
proto_num=int(pkt.ip.proto)
proto_name=proto_name_by_num(proto_num)
返回proto_名称
层名称=数据包层4协议(“mypacket.pcap”,1)
打印(图层名称)
如果指定的数据包具有UDP层,则应生成UDP

验证此解决方案 范围(257)内的i的
:
proto_name=proto_name_by_num(i)
如果原型名称!=“未找到协议”:
打印(i,num)
通过以上代码片段的输出,我们可以看到,这些是截至撰写此答案时,
socket
已知的协议编号:

0 IP
1 ICMP
2 IGMP
3 GGP
4 IPV4
6 TCP
8 EGP
12 PUP
17 UDP
22 IDP
29 TP
36 XTP
41 IPV6
43 ROUTING
44 FRAGMENT
46 RSVP
47 GRE
50 ESP
51 AH
58 ICMPV6
59 NONE
60 DSTOPTS
63 HELLO
77 ND
80 EON
103 PIM
108 IPCOMP
132 SCTP
255 RAW
256 MAX

成功了。谢谢你,罗斯Jacobs@Pankaj如果这回答了你的问题,请把它记下来。它成功了。谢谢你,罗斯Jacobs@Pankaj如果这回答了您的问题,请按此标记。