在Scapy的

在Scapy的

问题描述:

我最近发现Scapy的&它看起来美妙在Scapy的

我想看看简单的流量在我的网卡物理环回模块/存根发送过物理环回的数据包。

但Scapy的嗅不给任何

我在做什么,以发送一个数据包是:

payload = 'data'*10 
snf = sniff(filter="icmp", iface="eth0") 
for x in xrange(1, 10): 
    sendp(Ether(dst=src_mac, src=spoof_src_mac)/IP(dst=dst_ip, src=spoof_src_ip)/ICMP()/payload, iface=ifname) 

f.open('scapylog.log', 'w') 
f.write(str(snf)) 

与src_mac =我的MAC地址& dsp_ip我的IP地址。 “欺骗”字段只是随机(有效)ip值。

生成的sniff/logfile为空。没有报告

我可以看到,流量在网络中通过每个我把这个脚本时间递增接口的使用ifconfig统计去 - 所以交通流...

如果有人有一个想法,为什么我没有看到我的交通,我很乐意听到:)

谢谢!

+0

您是否试图记录数据包捕获? – Noob123

我自己也在寻找类似的解决方案时偶然发现了你的问题。我发现这在Scapy Troubleshooting页面上:

loopback接口是一个非常特殊的接口。经过它的包不是真正的组装和拆卸。内核将数据包路由到它的目的地,同时仍然存储内部结构。你用tcpdump -i lo看到的只是一个假的让你认为一切都是正常的。内核没有意识到Scapy在他背后做了什么,所以你在loopback接口上看到的东西也是假的。除了这个不是来自当地的结构。因此内核永远不会收到它。

为了说话的本地应用程序,你需要建立你的数据包一层上,用PF_INET/SOCK_RAW插座,而不是PF_PACKET/SOCK_RAW(或等值的其它系统比Linux):

>>> conf.L3socket 
<class __main__.L3PacketSocket at 0xb7bdf5fc> 
>>> conf.L3socket=L3RawSocket 
>>> sr1(IP(dst="127.0.0.1")/ICMP()) 
<IP version=4L ihl=5L tos=0x0 len=28 id=40953 flags= frag=0L ttl=64 proto=ICMP chksum=0xdce5 src=127.0.0.1 dst=127.0.0.1 options='' |<ICMP type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |>>