scapy中是否有用于TCP和UDP的常量?
我的意思是
TCP=6, UDP=17
ETC...
a)查找实现,因为IP
我们看到这IP.proto
是一个ByteEnumField("proto", 0, IP_PROTOS),
。这意味着,它将从IP_PROTOS
仅加载os的列表中获取值/etc/protocols/
。因此,您可以/etc/protocols
自己解析,或者已经加载了scapy,则可以IP_PROTOS
直接访问该对象:
>>> IP_PROTOS
</etc/protocols/ pim ip ax_25 esp tcp ah mpls_in_ip rohc ipv6_opts xtp st mobility_header dccp igmp ipv6_route igp ddp etherip wesp xns_idp ipv6_frag vrrp gre ipcomp encap ipv6 iso_tp4 sctp ipencap rsvp hip udp ggp hmp idpr_cmtp hopopt fc skip icmp pup manet isis rdp l2tp ipv6_icmp udplite egp ipip ipv6_nonxt eigrp idrp shim6 rspf ospf vmtp>
>>> IP_PROTOS.tcp
6
>>> IP_PROTOS.udp
17
>>> IP_PROTOS.ip
0
b)一种替代方法是直接读取鱼骨层绑定信息。这是您(或scapy core本身)调用时添加到图层上的信息bind_layers(lower,upper[,overload_fields])
。您可以轻松阅读以下信息:
>>> TCP.overload_fields
{<class 'scapy.layers.inet6.IPv6'>: {'nh': 6}, <class 'scapy.layers.inet.IP'>: {'frag': 0, 'proto': 6}}
意味着,如果TCP是IPv4(scapy.layers.inet.IP
)的有效负载,它将被覆盖IP.proto=6
。这是关于UDP的相同信息
>>> UDP.overload_fields
{<class 'scapy.layers.inet6.IPv6'>: {'nh': 17}, <class 'scapy.layers.inet.IP'>: {'frag': 0, 'proto': 17}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句