为什么在 scapy packet.payload.proto == 17 中是 UDP 而 packet.payload.proto ==6 TCP? [英] Why in scapy packet.payload.proto == 17 is UDP and packet.payload.proto ==6 TCP?

查看:84
本文介绍了为什么在 scapy packet.payload.proto == 17 中是 UDP 而 packet.payload.proto ==6 TCP?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在github上看到了这段代码.我不明白为什么 packet.payload.proto == 17 是 UDP 而 packet.payload.proto ==6 TCP.

packets = scapy.all.rdpcap('data/dns.cap')

对于包中包:打印(' - - - - - ')打印('src_mac:{0}'.format(packet.src))打印('dst_mac: {0}'.format(packet.dst))

ip = packet.payload打印('src_ip:{0}'.format(ip.src))打印('dst_ip:{0}'.format(ip.dst))如果 ip.proto == 17:udp = ip.payload打印('udp_sport:{0}'.format(udp.sport))打印('udp_dport:{0}'.format(udp.dport))如果 ip.proto == 6:tcp = ip.payload打印('tcp_sport:{0}'.format(tcp.sport))打印('tcp_dport:{0}'.format(tcp.dport))打印('-----------\n')

解决方案

因为 IANA 是这么说的.

<块引用>

<代码> ...6 TCP 传输控制 [RFC793]...17 UDP 用户数据报 [RFC768][Jon_Postel]...

I saw this code in github. I dont uderstand why packet.payload.proto == 17 is UDP and packet.payload.proto ==6 TCP.

packets = scapy.all.rdpcap('data/dns.cap')

for packet in packets: print('----------') print('src_mac: {0}'.format(packet.src)) print('dst_mac: {0}'.format(packet.dst))

ip = packet.payload
print('src_ip: {0}'.format(ip.src))
print('dst_ip: {0}'.format(ip.dst))

if ip.proto == 17:
    udp = ip.payload
    print('udp_sport: {0}'.format(udp.sport))
    print('udp_dport: {0}'.format(udp.dport))

if ip.proto == 6:
    tcp = ip.payload
    print('tcp_sport: {0}'.format(tcp.sport))
    print('tcp_dport: {0}'.format(tcp.dport))

print('----------\n')

解决方案

Because the IANA says so.

 ...
6     TCP     Transmission Control        [RFC793]
 ...
17    UDP     User Datagram               [RFC768][Jon_Postel]
 ...

这篇关于为什么在 scapy packet.payload.proto == 17 中是 UDP 而 packet.payload.proto ==6 TCP?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆