[英]Python Scapy Arp Scanning Subnet Script From a Book
我正在閱讀一本Python書,其中有一個腳本可以使用scapy(Python工具/模塊)來掃描子網中是否存在任何主機,並報告其IP和MAC地址。 該腳本是對先前調用/usr/bin/arping
腳本的增強。 先前的腳本一次只允許一個IP地址,並且取決於所使用的arping
工具的平台。 顯然,此腳本(不適用於我)與平台無關!
如果有人可以查看腳本並對其進行調試,那就太好了。 這是腳本:
#! /usr/bin/env python
from scapy.all import srp
from scapy.all import Ether, ARP, conf
import sys
def arping(iprange="10.0.1.0/24"):
"""Arping function takes IP Address or Network, returns nested mac/ip list"""
#conf, verb = 0
ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange), timeout=2)
collection = []
for snd, rcv in ans:
result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split()
collection.append(result)
return collection
if __name__ == "__main__":
if len(sys.argv) > 1:
for ip in sys.argv[1:]:
print "arping", ip
print arping(ip)
else:
print arping()
該腳本不起作用。 它只是打印它正在掃描東西,但是什么也沒發現。
我瀏覽了這個網站,發現一個教程也不起作用。 帶有相關內容的網站位於: http : //www.secdev.org/projects/scapy/doc/usage.html#arp-ping
請參閱下面的示例,以獲取運行此腳本時獲得的輸出示例:
loser@loser:~/Desktop/pyFun2$ gedit arp_scanz.py
loser@loser:~/Desktop/pyFun2$ sudo python arp_scanz.py
WARNING: No route found for IPv6 destination :: (no default route?)
Begin emission:
Finished to send 256 packets.
Received 0 packets, got 0 answers, remaining 256 packets
[]
外面有人知道我在想什么嗎?
更新-解決方案更改srp函數或方法調用以指定要掃描的確切接口,如下所示:
ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange),iface="en1", timeout=2)
可以是任何數目的東西。 我似乎可以使用有效的IP起點在網絡上正常運行腳本。
您是否設置了適當的IP范圍?
例如,我使用:
def arping(iprange="192.168.1.*"):
這會產生正確的結果,並且結果與scapy的arping()函數內置的結果相同。
因此,我認為這可能不完全是代碼,而是您嘗試的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.