簡體   English   中英

一本書中的Python Scapy Arp掃描子網腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM