使用python从MAC获取IP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python从MAC获取IP地址相关的知识,希望对你有一定的参考价值。

我的本地网络中有一台设备,并且知道它的MAC地址。它通过DHCP自动获取IP地址。我想获得这个IP。

我不想使用nmap但是scapy会很好,因为我是从一个kivy应用程序导入的。

我发现:

from scapy.all import srp, Ether, ARP
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"),timeout=2)

ans.summary()

我得到以下输出:

Ether / ARP who has 192.168.43.1 says 192.168.43.92 ==> Ether / ARP is at 3e:f8:d9:45:1b:3d says 192.168.43.1

我的两个问题是:

1:我必须用sudo python运行脚本,我不确定kivy中的权限。

2:有没有一种简单的方法可以从.summary()中获取IP / MAC的变量?

答案

是的,你可以用scapy做到这一点。以下是ARP is-at数据包的示例:

###[ Ethernet ]###
  dst= 08:00:27:fa:25:8e
  src= 08:00:27:b1:af:68
  type= 0x806
    ###[ ARP ]###
     hwtype= 0x1
     ptype= 0x800
     hwlen= 6
     plen= 4
     op= is-at
     hwsrc= 08:00:27:b1:af:68
     psrc= 192.168.56.102
     hwdst= 08:00:27:fa:25:8e
     pdst= 192.168.56.101
        ###[ Padding ]###
            load= 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00 x00x00x00x00'

您可以将hwsrc和psrc值分配给这样的变量

srcMAC = pkt[ARP].hwsrc
srcIP = pkt[ARP].psrc

或者像这样打印它们

print pkt[ARP].hwsrc
print pkt[ARP].psrc

希望有所帮助。

另一答案

如果摘要的结构总是相同的(我假设),那么你可以qazxsw poi并使用正则表达式来提取IP地址。

应该是这样的:

import re

这对我行得通:

re.sub(r'.* says (.*) ==> Ether / ARP is.*', r'1', ans.summary())

以上是关于使用python从MAC获取IP地址的主要内容,如果未能解决你的问题,请参考以下文章

Python根据IP地址获取MAC地址

??如何从 mac 和 iPhone 获取路由器 IP 地址? [关闭]

python 实现获取电脑IP主机名Mac地址

如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?

从Android应用程序获取设备的MAC地址和IP地址[重复]

Python通过snmp获取交换机VLAN号VLAN默认网关VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据