我想抓取並打印ping請求的源地址。 我有以下腳本:Python scapy顯示ping(回顯)請求的IP
pkt = sniff(filter="icmp", timeout =15, count = 15)
if pkt[ICMP].type == '8':
print pkt[IP].src
當數據包到達腳本崩潰,並
AttributeError:'list' object has no attribute 'type'
然而Scapy的控制檯上,我可以清楚地看到,這存在!
>>>packet=IP()/ICMP()/"AAAAAA"
>>>packet[ICMP].type
8
>>>
任何想法??
我改變了測試的目的我的腳本如下(!):
ping localhost -c 3
產生以下尷尬的結果:
packet arrived
127.0.0.1
packet arrived
127.0.0.1
packet arrived
packet arrived
packet arrived
127.0.0.1
packet arrived
127.0.0.1
packet arrived
packet arrived
packet arrived
127.0.0.1
packet arrived
127.0.0.1
packet arrived
pkts=sniff(filter="icmp", timeout=120,count=15)
for packet in pkts:
if packet.haslayer(IP) and str(packet.getlayer(IP).src)=="127.0.0.1"
print "packet arrived"
if packet.haslayer(ICMP) and str(packet.getlayer(ICMP).type)=="8":
print(packet[IP].src)
上面做了平之後
我們可以多次忽略「數據包到達」,因爲其他數據包到達我的主機湖但是當我發送3個迴應請求時,爲什麼我看到127.0.0.1的6倍?即使我刪除了for循環,也發生了相同的結果。
這裏我沒有使用[0]雖然..和同樣的事情正在發生http://www.picpaste.com/pics/icmp_problem-g3q981FT.1429788898.png – user3124171
添加一個'print(pkts.summary() )'在循環之前,然後告訴我什麼不匹配 –
LOL。這很有趣...這裏有一個明顯的問題... 這是一個scapy中的錯誤? http://www.picpaste.com/pics/scapy_hmmm_-IKNMgx5i.1429789818.png http://www.picpaste.com/pics/ICMP_LOL-VC2psSk5.1429789532.png 它看起來像它重複的條目莫名其妙...你可以從我的tcpdump中看到(這肯定不是騙人的),我發送了3個請求,並且有3個響應回來了...... scapy在哪裏顯示它們2次...你認爲怎麼樣? – user3124171