Python Scapy - 有意义的接口名称

Python Scapy - Meaningful Interfaces Name

我正在用 python 2.6 和 windows 7 上的 Scapy 构建一个嗅探器。当用户想要开始嗅探时,我让他可以选择他想要嗅探的界面,这给了我接口 -

def get_interfaces():
    """returns a list of available network interfaces"""
    interfaces = []
    for iface_name in sorted(ifaces.data.keys()):
        dev = ifaces.data[iface_name]
        mac = str(dev.mac)
        mac = conf.manufdb._resolve_MAC(mac)

        i = Interface(
            name=str(dev.name).ljust(4),
            ip=dev.ip.ljust(15),
            mac=mac.upper()
        )
        interfaces.append(i)
    return interfaces

接口是我构建的 class 以轻松传递有关接口的数据。 我的问题是为什么名字总是'ethX',这是什么意思?我怎样才能把它转换成更有意义的东西,比如 'Wireless Network Connection''VirtualBox Host-Only Network' 就像 Wireshark 那样?

ethX 是在 Linux 上列出 ETHernet 设备的传统方式。我推荐你阅读这个 explanation on stackexchange

至于获取界面的人名,这是 Python 的一个主要技巧。 小米第一个推荐是看Scapy repository中ifaces的实现。在那里您将能够确定您可以访问的每个数据。

完成它的艰难而好的方法是通过 python 的解析器访问 WinAPI。更简单(和肮脏)的方法是通过无头 powershell 获取名称并将其映射到您的地址。

无论如何,你选择了一个挑衅的项目。 :)