2016-12-15 85 views
2

我最近發現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

回答

2

我自己也在尋找類似的解決方案時偶然發現了你的問題。我發現這在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 |>>