我目前正在开发一个扫描我的网络并发现网络上的计算机和设备的程序。我使用各种操作在我发现的设备上查找数据,但想将网络设备与计算机区分开来。我想知道是否有人知道我该怎么做?
我看了看 SNMP,并尝试连接到我的网络打印机、路由器和调制解调器。但我似乎只能连接到打印机,路由器或调制解调器都没有响应。
是否有另一种方法来识别 IP 地址属于哪种设备?
我目前正在开发一个扫描我的网络并发现网络上的计算机和设备的程序。我使用各种操作在我发现的设备上查找数据,但想将网络设备与计算机区分开来。我想知道是否有人知道我该怎么做?
我看了看 SNMP,并尝试连接到我的网络打印机、路由器和调制解调器。但我似乎只能连接到打印机,路由器或调制解调器都没有响应。
是否有另一种方法来识别 IP 地址属于哪种设备?
使用诸如nmap之类的命令行工具,您可以对设备进行指纹识别,从而为您提供各种信息。
也许您可以通过 c# 调用 nmap 并读回响应。
另一种选择是查找给定 MAC 地址的网络芯片供应商。但我不确定这会给你多少细节。
# nmap -O -v scanme.nmap.org
Starting Nmap ( http://nmap.org )
Nmap scan report for scanme.nmap.org (64.13.134.52)
Not shown: 994 filtered ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp closed smtp
53/tcp open domain
70/tcp closed gopher
80/tcp open http
113/tcp closed auth
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.20-1 (Fedora Core 5)
Uptime guess: 11.433 days (since Thu Sep 18 13:13:01 2008)
TCP Sequence Prediction: Difficulty=204 (Good luck!)
IP ID Sequence Generation: All zeros
Nmap done: 1 IP address (1 host up) scanned in 6.21 seconds
Raw packets sent: 2021 (90.526KB) | Rcvd: 23 (1326B)
首先,这个答案偏向于以太网。这些想法也可以作为其他场景的提示。
有很多方法可以做到这一点,例如:
扫描
例如,可以使用 nmap。
亲:
缺点:
有针对性的发现
如果您的目标是映射您的网络、官方服务,您可以考虑他们的官方发现功能。例如 CDP、SSDP、srvloc、snmp get broadcast 等……你必须知道你正在探测什么服务。
临:
缺点:
被动流量监控
曾几何时,您会发现以太网主机通过铜线 (CAT3 / CAT5) 连接到集线器。您可以在任何这些主机上运行一个程序来捕获所有流量,将以太网卡置于混杂模式,以便 NIC 将所有数据包传递给操作系统,以及 MAC 目标与 MAC 地址不同的数据包网卡。
您的程序可以分析这些原始数据,并解析其中的协议和数据包。
现在你使用以太网交换机,而不是集线器。您的 pc 网卡在混杂模式下不会接收网络上的所有流量,因为交换机只会将您的主机或所有人的数据包转发给您(广播和 - 如果已注册 - 多播)。
您必须使用管理型交换机,并将一个端口配置为转发器或监控端口,以链接监控主机。
临:
缺点:
这是傻瓜介绍的简单发现。发现工具可以混合两种方式在网络上查找设备和服务。
例如,HP JetAdmin 发现使用不同的方法仅查找 HP 网络打印机和扫描仪,而不是您 LAN 上的所有设备。
我的话可能看起来很简单。但是大多数实现 SNMP 的设备都实现了 MIB-II。正如您在此处所见,“系统”中存在一个名为“sysDescr”的条目,您大部分时间都可以使用它来识别设备。
一般来说,您无法从设备的 IP 中找到太多关于设备的信息。使用主机的 MAC 地址,您可以确定网络适配器的制造商。MAC 地址的前半部分由制造商分配。
您可以尝试使用nmap。
Nmap(“Network Mapper”)是用于网络探索或安全审计的免费开源实用程序。它旨在快速扫描大型网络,尽管它对单个主机运行良好。Nmap 以新颖的方式使用原始 IP 数据包来确定网络上可用的主机、这些主机提供的服务(应用程序名称和版本)、它们运行的操作系统(和操作系统版本)、数据包过滤器/防火墙的类型正在使用中,以及其他数十种特性。Nmap 在大多数类型的计算机上运行,并且提供控制台和图形版本。Nmap 是免费软件,根据 GNU GPL 条款提供完整的源代码。