Cap*_*ack 82 networking security wireless-networking
我是一名网络开发人员,正在努力更好地处理安全问题。我试图找出一种方法(在基于 Linux/Debian 的发行版上)列出我的上网本所在的同一 LAN 上的所有计算机。我试过“arp -n”,但我觉得这不是一个完整的列表,因为我的 iPhone 和上网本在同一个 Wi-Fi 路由器上,但没有出现。有没有更好的方法来获取共享同一网关的机器的完整列表?
小智 57
这就是我使用的,nmap 和使用 CIDR 块符号表示要扫描的网络的地址。首先你需要安装 nmap,因为它可能没有预装在你的发行版中。在 Ubuntu 上:
sudo apt-get install nmap
Run Code Online (Sandbox Code Playgroud)
接下来使用 ifconfig 找出您的网络地址:
ifconfig
Run Code Online (Sandbox Code Playgroud)
我要扫描的接口的 ifconfig 输出:
wlan1 Link encap:Ethernet HWaddr 00:1f:3b:03:d2:bf
inet addr:192.168.1.104 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21f:3bff:fe03:d2bf/64 Scope:Link
...
Run Code Online (Sandbox Code Playgroud)
使用 inet addr 和 Mask 来计算 CIDR 表示法中的网络地址,更多关于 CIDR在这里。地址是:
192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
使用 -sP 参数运行 nmap,它只会扫描检查主机是否在线:
sudo nmap -sP 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
nmap 输出将如下所示:
Starting Nmap 5.21 ( http://nmap.org ) at 2014-12-09 10:52 EST
Nmap scan report for 192.168.1.1
Host is up (0.013s latency).
MAC Address: -MAC ADDRESS- (Cameo Communications)
...
Nmap done: 256 IP addresses (5 hosts up) scanned in 3.26 seconds
Run Code Online (Sandbox Code Playgroud)
就是这样,如果您需要更多关于 nmap 的帮助,请参阅nmap 官方文档,或者运行:
nmap --help
Run Code Online (Sandbox Code Playgroud)
Spi*_*iff 19
arp -n只显示您的机器已经与之通信的 LAN 上的机器。您可以通过 ping 广播和所有主机多播地址来更好地填充该列表:
“全一”(二进制)广播地址。请注意,大多数 IP 堆栈会将其转换为您所连接的所有子网的子网广播地址:
ping 255.255.255.255
Run Code Online (Sandbox Code Playgroud)
当前子网的子网广播地址。所以假设你在 192.168.1.0/24 上:
ping 192.168.1.255
Run Code Online (Sandbox Code Playgroud)
“所有主机”多播地址。我非常喜欢这个,因为它更有可能找到为其他 IP 子网配置的主机,这些主机碰巧与您连接到同一个以太网 LAN:
ping 224.0.0.1
Run Code Online (Sandbox Code Playgroud)
请注意,此方法以及我目前在其他答案中看到的其他方法仅查找当前网络上可访问 IP 的主机。这可能就是您需要关心的全部内容,但是攻击者有可能在不通过 IP 可见的情况下窥探网络或对网络做坏事。
Mar*_*oma 14
ip neigh和hosts。不需要nmap/不需要sudo。
在此基础上,您可以构建一个 Python 脚本:
#!/usr/bin/env python
"""List all hosts with their IP adress of the current network."""
import os
out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
ip = line.split(' ')[0]
h = os.popen('host {}'.format(ip)).read()
hostname = h.split(' ')[-1]
print("{:>3}: {} ({})".format(i, hostname.strip(), ip))
Run Code Online (Sandbox Code Playgroud)
下载方式
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
Run Code Online (Sandbox Code Playgroud)
(或者干脆arp……我之前没看到)
要扫描一系列 IP 地址的状态,这很简单:
sudo nmap -sn 192.168.1.2-20
Run Code Online (Sandbox Code Playgroud)
在哪里:
-sn: Ping Scan - disable port scan
Run Code Online (Sandbox Code Playgroud)
笔记:
-sn被称为-sP我在 Mac OS X(基于 BSD)上做了这个。我不确定 Linux 版本是否有任何差异。
小智 6
您可以使用fping sudo apt-get install fping(在类似 debian 的操作系统中)。
fping类似于 ping,但在 ping 多个主机时性能要好得多。该-r 1个标志告诉fping只进行一轮。的2> 1 部分允许grep来过滤输出。
$ fping -g -r 1 192.168.1.0/24 2>1 | grep "alive"
Run Code Online (Sandbox Code Playgroud)
会显示如下内容:
192.168.1.1 is alive
192.168.1.10 is alive
192.168.1.15 is alive
192.168.1.27 is alive
Run Code Online (Sandbox Code Playgroud)
nmap还有一个有趣的标志,可以让您看到 MAC 供应商——如果知道的话。与sudo一起使用以查看 MAC 地址。
$ sudo nmap -sP 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
你会得到例如:
Starting Nmap 7.40 ( https://nmap.org ) at 2019-05-23 18:49 CEST
Nmap scan report for 192.168.1.14
Host is up (-0.036s latency).
MAC Address: 20:F4:1B:E5:8F:7B (Shenzhen Bilian electronic)
Nmap scan report for 192.168.1.15
Host is up (-0.084s latency).
MAC Address: A4:31:35:E8:58:9E (Apple)
Nmap scan report for 192.168.1.27
Host is up (-0.15s latency).
MAC Address: 34:8A:7B:38:E3:14 (Samsung Electronics)
Nmap scan report for 192.168.1.29
Host is up (0.010s latency).
MAC Address: 80:2B:F9:75:F8:FF (Unknown)
Nmap scan report for 192.168.1.10
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 25.52 seconds
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291996 次 |
| 最近记录: |