gpt4 book ai didi

python - 如何在 pox Controller 中检查数据包类型是 tcp syn 还是 rst

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:46 24 4
gpt4 key购买 nike

这是代码

import pox.lib.packet as pkt
from pox.lib.packet import *
def _handle_PacketIn(self,event):
packet=event.parsed
if packet.type == pkt.IP_TYPE:
ip_packet = packet.payload
if ip_packet.protocol == pkt.TCP_PROTOCOL:
tcp_packet = ip_packet.payload
if <condition to check packet is TCP SYN or ACK or RST>:
  1. if 中应该使用什么表达式来检查 TCP 数据包是否为 SYN/ACK/RST?

最佳答案

为了找到 SYN 、 ACK 等,你必须使用 packet.find 方法。以下只是对POX(鲤鱼)的forwarding.l2_pairs 库存组件的一个小修改

假设我们已经启动并运行了 mininet

sudo mn --controller remote

在库存组件 forwarding.l2_pairs 添加几行代码在 packet = event.parsed 之后的第 41 行,我们将像这样修改

packet = event.parsed
tcp_found = packet.find('tcp')
if tcp_found:
if tcp_found.SYN:
print "SYN found"

在与 mininet 不同的终端中运行 pox 组件,如下所示

python pox.py forwarding.l2_pairs host_tracker openflow.discovery

现在,为了获取一些 SYN 标志,让我们进入 mininet 终端并设置默认的 python http 服务器

h1 python -m SimpleHTTPServer 80 &

并从主机2获取虚拟服务器的内容

h2 wget -O - h1

在运行 pox l2_pairs 组件的终端,我们检查输出

INFO:forwarding.l2_pairs:Pair-Learning switch running.
INFO:host_tracker:host_tracker ready
INFO:core:POX 0.2.0 (carp) is up.
INFO:openflow.of_01:[00-00-00-00-00-01 1] connected
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93
INFO:host_tracker:Learned 1 2 6e:6e:ca:c9:2b:93 got IP 10.0.0.2
SYN found
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7
INFO:host_tracker:Learned 1 1 52:3b:b2:ff:ff:b7 got IP 10.0.0.1
SYN found

这里的问题是,正如 POX 文档中所述,SYN、ACK 等是 tcp 属性

TCP (tcp) Attributes: ...... FIN (bool) - True when FIN flag set SYN (bool) - True when SYN flag set ......

为了获取这些属性,我们使用 find 方法将数据包的 tcp 部分分配给一个变量,然后使用点 (.) ex 访问这些属性。

variable.attribute

我们就可以出发了(如果找到的话)。

关于python - 如何在 pox Controller 中检查数据包类型是 tcp syn 还是 rst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37140542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com