Scapy SYN 在我们自己的 IP 地址上发送
Posted
技术标签:
【中文标题】Scapy SYN 在我们自己的 IP 地址上发送【英文标题】:Scapy SYN send on our own IP addres***y SYN 在我们自己的 IP 地址上发送 【发布时间】:2011-03-14 03:33:06 【问题描述】:我尝试在我的本地网络上发送 SYN 数据包并使用 Wireshark 监控它们,一切正常,除了当我尝试向我自己的 IP 地址发送数据包时,它“似乎”工作,因为它说 Sent 1 packet,但它并没有真正发送,我在 Wireshark 中看不到数据包,也看不到数据包的任何答案。我的设置是一台计算机 A ( 192.168.0.1 ) 和一台计算机 B ( 192.168.0.2 ),其 TCP 套接字服务器侦听端口 40508。
在计算机 B i 上测试:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它工作正常,我在 Wireshark 上看到 SYN 数据包和来自 192.168.0.1 的 SYN/ACK 响应
在电脑 A 我测试:
ip=IP(src="192.168.0.1",dst="192.168.0.2")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它也可以正常工作,我看到了来自 192.168.0.2 的 SYN 数据包和 RST/ACK(没有服务器在 192.168.0.2 上的端口 40508 上侦听,因此它发送 RST/ACK)响应 192.168.0.2
但是当我尝试使用计算机 A 时:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
Wireshark 中什么也没有出现,好像数据包从未发送过,但它像其他测试一样说:发送了 1 个数据包。并且没有返回任何错误。如果我在计算机 B 上运行相同的测试并尝试将数据包发送到它自己的 IP 地址,我会遇到同样的问题。
对于我的程序,我确实需要向我自己的 IP 地址发送一个 SYN 数据包,有没有办法做到这一点,还是不可能?
提前致谢,
诺尔希安
【问题讨论】:
【参考方案1】:您的 Wireshark 安装正在侦听哪些网络设备?我怀疑它正在监听实际的网卡(以太网、wifi 或其他,根据 Wireshark FAQ)——当从计算机发送到自身时,操作系统当然可以绕过设备(为什么要打扰它?)并通过在内核内存中的 TCP/IP 堆栈中复制位来执行“发送”。
换句话说,我怀疑您的数据包正在发送正常,只是 Wireshark 可能看不到它。为了验证这个假设,您可以尝试(例如)使用浏览器访问本地计算机上存在和不存在的端口,并查看 Wireshark 是否看到 那些 数据包。
【讨论】:
也就是说,数据包是在环回接口上发送的。 谢谢你的回答,我检查了,就是这样,数据包在环回接口上,wireshark 在 lo 上看到它。由于我没有从数据包中获得 SYN/ACK 答案,我猜它永远不会到达 192.168.0.1,我还尝试放置另一个没有任何监听的端口,但仍然没有 RST/ACK 答案。所以我尝试让服务器监听 127.0.0.1 而不是 192.168.0.1 但仍然没有,生成的数据包在环回上发送但它没有响应。如果服务器在 127.0.0.1 上并且我编写了一个带有 TCP 套接字连接的 python 客户端,它工作正常...... 我真的迷路了 :( 知道为什么它永远不会在本地响应,但是当另一台计算机发送相同的生成数据包或 TCP 套接字尝试连接(甚至是本地)时它会响应? 非常感谢您的帮助,在那里找到了答案的第二部分:secdev.org/projects/scapy/doc/… 如果路过的人也在搜索解决方案:) @Nolhian,+1 -- 没想到检查 scapy 的文档,只是在这里用通用 TCP/IP 术语进行推理。以上是关于Scapy SYN 在我们自己的 IP 地址上发送的主要内容,如果未能解决你的问题,请参考以下文章