C++ 如何使用C+获取局域网上IP摄像头的所有MAC地址和端口号+;?

C++ 如何使用C+获取局域网上IP摄像头的所有MAC地址和端口号+;?,c++,ip-camera,C++,Ip Camera,我在同一个局域网上有许多IP摄像机。我想得到每个摄像头的MAC地址和端口号,虽然我不知道它们的ip地址。此外,如果摄像头的ip和端口发生变化,如何检测 我也在网上搜索过这个问题。大多数人使用一些窗口函数(如SendARP()或命令行“arp-a”)进行响应。但如果这样做了,那么就可以获得局域网的所有MAC地址,而不管摄像机或计算机的MAC地址如何 请帮帮我 您的IP摄像机是否广播任何识别信息,例如使用mDNS数据包?也许你可以收听这些广播。谷歌搜索“MDN”或“Zeroconf”。您的IP摄像头

我在同一个局域网上有许多IP摄像机。我想得到每个摄像头的MAC地址和端口号,虽然我不知道它们的ip地址。此外,如果摄像头的ip和端口发生变化,如何检测

我也在网上搜索过这个问题。大多数人使用一些窗口函数(如SendARP()或命令行“arp-a”)进行响应。但如果这样做了,那么就可以获得局域网的所有MAC地址,而不管摄像机或计算机的MAC地址如何


请帮帮我

您的IP摄像机是否广播任何识别信息,例如使用mDNS数据包?也许你可以收听这些广播。谷歌搜索“MDN”或“Zeroconf”。

您的IP摄像头是否播放任何识别信息,例如使用MDN数据包?也许你可以收听这些广播。用谷歌搜索“MDN”或“Zeroconf”。

我会从端口扫描程序(如nmap)开始,寻找能够识别IP摄像头的信息

nmap -A -T4 192.168.0.0/24
如果您的所有摄像头都相同,则可以通过返回的操作系统信息来检测它们

您还可以通过抓取横幅来确定端口:

nmap -sV --script=banner 192.168.0.0/24

使用C++解析NMAP输出。更改网络地址范围以适应您的网络。

我将从端口扫描仪(如nmap)开始,查找可以识别您的IP摄像头的信息

nmap -A -T4 192.168.0.0/24
如果您的所有摄像头都相同,则可以通过返回的操作系统信息来检测它们

您还可以通过抓取横幅来确定端口:

nmap -sV --script=banner 192.168.0.0/24

使用C++解析NMAP输出。更改网络地址范围以适应您的网络。

您正在寻找的所有摄像头都是同一家公司生产的吗?如果是这样,MAC地址可能都共享一个分配给该公司的通用前缀,或者它们是否支持HTTP或其他可以用来探测摄像头以识别其身份的协议

如果它们不共享类似的MAC地址,您仍然可以使用其他方法查找所有摄像头

我可以用一种方法来解决这个问题:

For each IP address in your network range {
    Send ARP request for IP address

    If ARP response received {
       Check MAC address of ARP response

       If MAC address matches camera MFR {
           // Add to list
       } else {
           // Probe IP address for device specific webpage or service
           If probe matches { 
               // Add to list
           }
       }
    }
}

您可能会发现摄像头支持一些
SNMP
命令,您可以将这些命令用作识别因素。在最坏的情况下,您可以向IP地址发送一个
HTTP
数据包,并查看主机是否响应摄像头的网页(假设每个主机都有嵌入式web服务器)。很可能,您至少可以使用一种协议来识别所有网络设备中的摄像头。

您正在寻找的所有摄像头都是同一家公司生产的吗?如果是这样,MAC地址可能都共享一个分配给该公司的通用前缀,或者它们是否支持HTTP或其他可以用来探测摄像头以识别其身份的协议

如果它们不共享类似的MAC地址,您仍然可以使用其他方法查找所有摄像头

我可以用一种方法来解决这个问题:

For each IP address in your network range {
    Send ARP request for IP address

    If ARP response received {
       Check MAC address of ARP response

       If MAC address matches camera MFR {
           // Add to list
       } else {
           // Probe IP address for device specific webpage or service
           If probe matches { 
               // Add to list
           }
       }
    }
}

您可能会发现摄像头支持一些
SNMP
命令,您可以将这些命令用作识别因素。在最坏的情况下,您可以向IP地址发送一个
HTTP
数据包,并查看主机是否响应摄像头的网页(假设每个主机都有嵌入式web服务器)。很有可能,至少有一种协议可以用来识别所有网络设备中的摄像头。

我认为,它不需要真正的编程来解决问题,属于serverfault。有许多免费软件/共享软件应用程序专门编写来帮助解决这一问题,包括&我认为,它不需要真正的编程来解决您的问题,属于serverfault。有许多免费软件/共享软件应用程序是专门为此编写的,包括&谢谢,但我假设有一个ip摄像头,其ip与我的电脑的子网掩码不同,那么我如何处理循环“对于您网络范围内的每个IP地址”?在您上面的代码中,您提到了“如果MAC地址与摄像头MFR匹配”。我不知道什么是MFR,您能给我解释一下吗。非常感谢!所以您的电脑与摄像头位于不同的网络上?在这种情况下,“您的IP范围”“这只是一个手动输入的范围,实际上是摄像机所在的网络范围。我指的是制造商。公司必须获得分配的MAC地址范围,因此使用像您这样的工具可以检查谁控制MAC地址。如果相机都是由同一家制造商生产的,那么它们的MAC地址的开头都是一样的。这有帮助吗?谢谢,但我假设有一个ip摄像头,其ip与我的电脑的子网掩码不同,那么如何处理“针对网络范围内的每个ip地址”的循环?在上面的代码中,您提到了“如果MAC地址与摄像头制造商匹配”。我不知道MFR是什么,你能给我解释一下吗。非常感谢!那么你的电脑和摄像机在不同的网络上?在这种情况下,“您的ip范围”将只是您手动输入的范围,这实际上是摄像头所在的网络范围。我指的是制造商。公司必须获得分配的MAC地址范围,因此使用像您这样的工具可以检查谁控制MAC地址。如果相机都是由同一家制造商生产的,那么它们的MAC地址的开头都是一样的。这有用吗?