首页 > 解决方案 > Python ARP 扫描器

问题描述

此代码是一个 arp 扫描器,它扫描网络上除电话之外的所有主机。
程序只打印电脑的ip和mac地址,不打印手机

没有人知道为什么会这样?谢谢

import scapy.all as scapy

class scan:
    def Arp(self, ip):
        self.ip = ip
        print(ip)
        arp_r = scapy.ARP(pdst=ip)
        br = scapy.Ether(dst='ff:ff:ff:ff:ff:ff')
        request = br/arp_r
        answered, unanswered = scapy.srp(request, timeout=1)
        print('\tIP\t\t\t\t\tMAC')
        print('_' * 37)
        for i in answered:
            ip, mac = i[1].psrc, i[1].hwsrc
            print(ip, '\t\t' + mac)
            print('-' * 37)

arp = scan() # create an instance of the class
arp.Arp('192.168.0.1/24') # call the method

标签: pythonpython-3.xnetworkingnetwork-programmingscapy

解决方案


看看https://stackoverflow.com/a/57017630/5459467 有些手机根本不响应 ARP ping,主要是 iPhone。

这不一定在任何地方都有解释,可能有多种解释,例如: - 安全问题 - 电池管理

他们也会倾向于忽略免费的 ARP。您实际上可以执行的唯一操作是在路由器执行实际 ARP 请求时比路由器更快地响应,或者只是被动地嗅探所有 ARP 请求。


推荐阅读