如何解决对于 udp 封装的 esp 数据包,udp 标头不占用负载长度
在 Scapy 中,当我使用 SA 关联生成 UDP 封装的数据包时,我可以看到 UDP 长度为 8。即使我在 UDP nat 标头之后有 esp 数据包。
以太> IP > UDP(srcport=4500,dstport=4500) > ESP
在上面的头结构中,我的期望是 nat 头 UDP 应该计算数据包长度并将其添加为它的 len 字段的一部分。但我只能看到 8,这是 UDP 标头长度。
>>> p = IP(src='1.1.1.1',dst='2.2.2.2')
>>> p /= UDP(sport=2512,dport=2512)
>>> p /= Raw('testdata')
>>> p
<IP frag=0 proto=udp src=1.1.1.1 dst=2.2.2.2 |<UDP sport=2512 dport=2512 |<Raw load='testdata' |>>>
>>> sa = SecurityAssociation(ESP,spi=0x222,... crypt_algo='NULL',crypt_key=None,... auth_algo='NULL',auth_key=None,tunnel_header=IP(proto=1,src="3.3.3.3",dst="4.4.4.4"),... nat_t_header=UDP(sport=4500,dport=4500))
>>> e = sa.encrypt(p)
>>> e
<IP version=4 ihl=5 tos=0x0 len=76 id=1 flags= frag=0 ttl=64 proto=udp chksum=0x6c93 src=3.3.3.3 dst=4.4.4.4 |<UDP sport=ipsec_nat_t dport=ipsec_nat_t len=8 chksum=0x0 |<ESP spi=0x222 seq=1 data=4500002400010000401174c3010101010202020209d009d00010258c746573746461746101020204 |>>>
>>> sa.decrypt(e)
<IP version=4 ihl=5 tos=0x0 len=36 id=1 flags= frag=0 ttl=64 proto=udp chksum=0x74c3 src=1.1.1.1 dst=2.2.2.2 |<UDP sport=2512 dport=2512 len=16 chksum=0x258c |<Raw load='testdata' |>>>
在上面的快照中,请找到 e 的转储。它显示 udp len 为 8。您可以在此之后找到 ESP 标头。 如果我遗漏了一些动作,请告诉我。或者这是预期的。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。