簡體   English   中英

帶有 scapy 的 ARP 數據包無應答

[英]ARP packets with scapy are unanswered

我正在使用 Scapy 構建一個帶有 Python 的網絡掃描儀。 我一直在嘗試發送 ARP 數據包,但由於某種原因它們沒有得到響應。

#!/usr/bin/env python3

from scapy.all import *

def scan(ip):
    arp_request = ARP(pdst=ip)
    broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_request_broadcast = arp_request/broadcast
    answered_list = srp(arp_request_broadcast, timeout=2)[0]
    
    for element in answered_list:
        print(element[1].show())
    
scan("192.168.1.0/24")

運行它會產生以下結果:

[void@Void Network Scanner]$ sudo python3 tutorial_netscanner.py 
[sudo] password for void: 
Begin emission:
Finished sending 256 packets.
............................................................
Received 60 packets, got 0 answers, remaining 256 packets

奇怪的是,如果我從 scapy 交互式 shell 運行它,它可以工作,並且 arp 數據包確實得到了回答。

arping("192.168.1.0/24")

超級困惑為什么這不起作用,代碼對我來說似乎非常好,如果有人可以幫助我,那就太好了。 謝謝你。

arp_request/broadcast不正確。 最外層的協議 go 在左側。 如果您使用 Wireshark 查看發生了什么(發生這種情況時您應該做的第一件事),您會發現它不是您所期望的:

Wireshark 行

它本質上是一個格式錯誤的數據包。 你需要broadcast / arp_request 盡管指定Ether層是可選的。 您可以簡單地使用ARP (和sr )。

使用 Wireshark。 這是一個非常寶貴的工具。 你應該只在你可以控制/允許窺探的網絡上運行它,但它確實是必不可少的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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