1

我正在扫描本地网络上的 IP,当找到 IP 时我希望收到的信息之一是该 IP 是静态的还是动态的。到目前为止,我发现的最接近我的问题只解决了检查您自己的机器的问题。这是我的功能:

    private bool isDynamic()
    {
        NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
        int currentSocketIndex = (new IPPacketInformation()).Interface;

        bool isDynamic = adapters[currentSocketIndex].GetIPProperties().GetIPv4Properties().IsDhcpEnabled;
        return isDynamic;
    }

我想对其进行修改,以便它可以获取 IP 地址,连接到 IP 所属的设备(如果它存在并且不阻止连接),并确定机器的 IP 是静态/动态的。目前,我的功能只检查我的机器。

谁能指出我正确的方向?我找不到做这样的事情的参考资料,但我怀疑这是不可能的。

4

1 回答 1

0

您找不到任何有关它的信息,因为如果您无权访问路由器,那是不可能的。您只能通过询问路由器来找到它,这很可能不会告诉您或需要特定于路由器的请求/协议来告诉您。或者你可以直接询问设备,它不会告诉你它的 IP 是静态的还是动态的,除非你在该机器上安装一个应用程序来回答你的请求。一些操作系统可能已经提供了这种服务(如 Windows 上的 WMI),但您永远无法分辨出每个网络设备。

但:

如果您有很多时间,您可以侦听 DHCP/BootP 流量并找到像这样的动态设备,因为动态设备会经常刷新它们的会话

不同的方法:

新想法,但在重要网络中这样做很危险,我根本不建议这样做:启动您自己的 DHCP 服务器并开始提供地址,看看谁接受它们,然后将它们设置回去。请注意,这可能会对公司网络造成巨大的损害。

于 2019-03-18T14:43:55.823 回答