2015-07-11 116 views
1

我有一个反复出现的问题,我用scapy发送的数据包没有到达。我试图用scapy和wireshark来嗅他们,但他们没有被嗅到。就好像它们没有被发送,但发送它们的脚本显示“发送1包”消息。scapy发送的数据包没有到达,也不能被嗅探

我查了一下,发现this similar question问题可能是数据包被发送到错误的接口。这似乎是可能的,因为我scapy的默认iface设置为“eth0”,并且我嗅探了我的wifi连接。如果这真的是问题,我该如何设置scapy来发送&在无线连接上嗅探?

代码示例:

from scapy.all import * 

message = raw_input("enter your message:") 

for c in message: 
    packet = Ether()/IP(dst = "127.0.0.1")/UDP(sport = 4001, dport = ord(c)) 
    send(packet) 

raw_input() 

在此脚本应该通过发送空的UDP数据包的端口标志着信件发送消息到服务器。脚本运行良好,我只是没有在我的“服务器”上获得任何数据包,并且该脚本应该发送的数据包不能被嗅探。

编辑:我的操作系统是Windows 8.1

回答

1

为您包的目的地是127.0.0.1这下网络范围落在你的系统上的环回接口。如果您正在使用同一台计算机(但是是一个单独的进程)进行嗅探,您可以在该接口上收听并发送(使用上述地址)。

您需要将您的数据包发送到您正在嗅探的计算机上的WiFi接口的地址。

您还需要确保防火墙(如果您有一个防火墙正在运行)不会阻止连接。

这只是故障排除过程中可能出错的开始。如果你只是想测试基本Scapy - 我建议在你的机器上使用loopback接口来测试。

1

各种原因都是可能的。其中一些:

1)检查conf.route,哪个接口用于发送到127.0.0.1。在交互式会话中最简单,只尝试一个数据包。

2)FW已经提到。尝试完全禁用FW以查看它是否有效。

3)未能找到/导入数据包发送数据包。你没有注明OS,所以不能详细说明。例如。 MacOS使用libdnet。

4)缺乏制作数据包的权限。尝试以root身份运行。

如果你想在python3(pip install scapy-python3)中使用scapy来尝试它,我可以更详细地帮你。

+0

什么是conf.route?如何检查我要发送数据包的接口?我如何以root身份运行scapy?我试图在网上搜索,但收效甚微。谢谢。 – user1461837

+1

打开交互式会话(例如使用'sudo scapy'),并运行'conf.route'。你会看到你的路由是scapy解释它们和相应的接口。由于scapy对路线做了自己的解释,所以在发生错误的情况下, 127.0.0.1通过不同的接口发送。 –

+0

我试过禁用防火墙并尝试了conf.route中的所有接口。我很确定问题出在libdnet上。我已安装它。我应该怎么做?不管怎么说,还是要谢谢你。 – user1461837