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

TCP服务器未响应Scapy生成的SYN数据包问题排查

问题原因分析

核心问题出在以太网帧的目标地址上:

  • Scapy生成的数据包以太网目标地址为ff:ff:ff:ff:ff:ff(广播地址)
  • nmap生成的数据包以太网目标地址为00:00:00:00:00:00(环回接口的单播地址)

环回接口的内核网络栈会过滤广播类型的数据包,导致Scapy发送的SYN包无法传递到用户态的TCP监听程序,自然不会返回SYN-ACK。

解决方法

修改Scapy代码,手动指定以太网层的单播目标地址,并明确指定环回接口发送:

from scapy.all import *
import random

# 手动指定以太网层的单播地址
eth = Ether(dst="00:00:00:00:00:00", src="00:00:00:00:00:00")
ip = IP(src="127.0.0.1", dst="127.0.0.1")

src_port = random.randint(49152, 65535)
tcp = TCP(
    sport=src_port,
    dport=7878,
    flags="S",
    seq=random.randint(0, 3_925_315),
    options=[('MSS', 1460)]
)

syn_packet = eth/ip/tcp

print(f"Using source port: {src_port}")
print(syn_packet.show())

# 指定环回接口发送
send(syn_packet, iface="lo")

验证要点

  • 抓包确认修改后的数据包以太网目标地址为00:00:00:00:00:00
  • 确保发送时明确指定iface="lo",避免Scapy自动选择错误的网络接口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:17:02