You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scapy无法捕获客户端发往5555端口服务器的数据包求助

排查步骤与解决方法

1. 确认抓包接口是否正确

如果客户端和服务器在同一台机器,本地TCP流量默认走回环接口(Linux/macOS是lo,Windows是Loopback Pseudo-Interface 1),Scapy默认可能不会监听这个接口。修改sniff()函数指定接口:

sniff(iface="lo", filter="tcp port 5555", prn=packet_callback)

跨机器通信的话,要指定对应物理网卡的名称(比如eth0、en0)。

2. 检查抓包权限

Scapy需要管理员/root权限才能捕获数据包,普通用户运行会导致无输出。执行脚本时加上权限:

sudo python3 between.py

3. 验证BPF过滤规则是否准确

确保过滤规则没有错误,比如要捕获客户端发往服务器的5555端口流量,规则可以写:

# 同一机器场景
filter_rule = "tcp port 5555 and src host 127.0.0.1 and dst host 127.0.0.1"
# 跨机器场景,替换为实际IP
filter_rule = "tcp port 5555 and src host 192.168.1.100 and dst host 192.168.1.200"
sniff(filter=filter_rule, prn=packet_callback)

避免过滤规则过于严格或写错端口、IP。

4. 检查回调函数逻辑

确认回调函数能正确识别并输出数据包,比如:

def packet_callback(pkt):
    # 检查是否包含TCP层,且目标端口是5555
    if pkt.haslayer(TCP) and pkt[TCP].dport == 5555:
        print(f"捕获到数据包: {pkt.summary()}")
        # 打印详细内容可以用pkt.show()

如果回调里没有正确判断数据包特征,即使抓到包也不会输出。

5. 排除系统层面干扰

  • 关闭其他抓包工具(如Wireshark),避免接口被占用。
  • 检查防火墙规则,确保没有阻止抓包行为(比如Linux下临时关闭ufw:sudo ufw disable测试)。

6. 升级Scapy版本

旧版本Scapy可能存在兼容性问题,升级到最新版:

pip install --upgrade scapy

7. 确认抓包位置是否在流量路径上

如果客户端、服务器、抓包机器是三台不同设备,抓包机器必须处于客户端到服务器的流量路径中(比如作为网关、开启端口镜像),否则无法捕获跨机器的数据包。

内容的提问来源于stack exchange,提问作者Patrick Phan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:47:27