aka*_*nom 6 networking mac-address nmap
根据此评论,我将听取建议并将其作为一个单独的问题提出。我正在尝试更多地了解网络和安全,并希望使用工具来帮助增加我的理解。
Fing 似乎是一个非常酷的工具 - 查找网络上的设备及其关联的 MAC 地址。人们可以轻松实施任何提供检测和警报的解决方案,但我想知道这些工具是如何实施的?这是低级 linux 实用程序的组合,还是正在进行一些自定义编程?
如果是第二个 - 该算法会是什么样子?
我只是在我的无线网络上运行 Fing。使用tcpdump
,看起来 Fing 生成地址解析协议(ARP) 请求数据包。ARP 是一个非常简单的协议,运行在以太网协议级别(数据链路,OSI 级别 2)。一个ARP请求包以广播地址(ff:ff:ff:ff:ff:ff)作为“to”地址,Android手机的MAC和IP地址作为“from”信息,还有一个Fing想要的IP地址知道关于。看起来 Fing 只是通过它所在的任何子网,在我的例子中是 172.31.0.0/24,所以有 255 个 IP 地址,从 172.31.0.1 到 172.31.0.254。游行之后,它似乎再次尝试未响应的 IP 地址。在我看来,这就像 Fing 分批尝试 IP 地址,并依赖底层 Linux 内核来缓冲 ARP 回复,以便 Fing 线程尽可能快地处理。如果 Fing 确定存在超时,则重新发送。它'
臭名昭著的nmap,用-sn
“ping scan”标志调用,做同样的事情。我做了一个strace
上nmap -sn 172.31.0.0/24
看看它是如何得到内核发送ARP请求。它看起来像是nmap
创建了一个普通的 TCP/IP 套接字,并connect()
使用 IP 地址调用该套接字到 TCP 端口 80。nmap
必须在非阻塞模式下执行此操作,因为它connect()
按顺序执行大量调用,比connect()
在没有具有 IP 地址的主机时Linux 决定超时所需的速度更快。
所以这就是你的答案:创建一个 TCP/IP 套接字,connect()
使用特定的端口和 IP 地址进行调用,然后查看错误是什么。如果错误是 ECONNREFUSED,则它是一个实时 IP 地址,但没有在该端口上侦听任何内容。如果您获得 TCP 连接,则该 IP 地址具有主机。connect()
呼叫超时的IP 地址没有关联的机器。您需要批量connect()
调用以提高速度,并且需要等待connect()
调用超时才能确定 IP 地址没有与其关联的机器。
归档时间: |
|
查看次数: |
5514 次 |
最近记录: |