有没有方法在实时流量中使用scapy检查数据包?

1 投票
1 回答
3046 浏览
提问于 2025-04-19 22:49

我想查看通过我的网络接口进来的数据包。

所以我需要做的是:

我正在运行一台转发机器。简单来说,我就像是局域网中计算机的路由器。所以我需要把数据包转发到合适的目的地,这部分我已经搞定了。

接下来的部分是:

  1. 检查流经我电脑的数据包
  2. 根据这些数据包的内容做出合适的转发决策

我该如何使用scapy来完成第1步和第2步呢?

1 个回答

4

这很简单,你可以遍历接收到的数据包,然后查看它们的各个字段,按照你的需要发送出去。

这个例子会捕获在接口 eth1 上的所有数据包,如果数据包的源 IP 地址以 5 结尾,就会把所有的 IP 数据包发送到 1.1.1.1:

from scapy.all import *
for pkt in sniff(iface='eth1'):
    if IP in pkt and pkt[IP].src.endswith('5'):
        pkt[IP].dst = '1.1.1.1'
        sendp(pkt, iface='eth2')

撰写回答