arp-scan - 向目标主机发送 ARP 请求并显示响应
arp-scan [options] [hosts...]
Target hosts must be specified on the command line unless the --file or --localnet option is used.
Targets can be IPv4 addresses or hostnames. You can also use CIDR notation (10.0.0.0/24) (network and broadcast included), ranges (10.0.0.1-10.0.0.10), and network:mask (10.0.0.0:255.255.255.0).
arp-scan 向指定主机发送 ARP 请求数据包并显示收到的任何响应。可以使用--interface选项指定网络接口。如果未指定接口,arp-scan 将选择编号最小的已配置接口(不包括环回)。
arp-scan 使用原始套接字,这需要某些系统上的权限:
arp-scan 具有功能感知能力。它需要在允许的集中CAP_NET_RAW,并且只为所需的功能启用该功能。使用 setcap cap_net_raw+p /path/to/arp-scan 将 CAP_NET_RAW 添加到 arp-scan 可执行文件的允许集。功能支持还使 SUID root 更加安全,因为 arp-scan 将删除除 CAP_NET_RAW 之外的所有功能,并且不会以完全 root 权限运行。
您需要对 /dev/bpf* 进行读/写访问
以 root 或 SUID root 身份运行可以在任何操作系统上运行,但如果可能,其他方法更好。
ARP仅作用于本地网络,不能路由。虽然 ARP 协议使用 IPv4 地址,但它不是 IP 协议,arp-scan 可以在没有 IPv4 地址的接口上使用。
为每个目标发送一个 ARP 请求。如果主机没有响应,请求将被重新发送一次。可以使用--retry选项更改重试次数。减少重试次数将减少扫描时间,但存在因数据包丢失而丢失某些结果的风险。
您可以通过--bandwidth选项指定arp-scan将使用的带宽。默认值为每秒 256000 位。增加带宽会减少扫描时间,但设置太高可能会导致广播包速率过高。指定数据包速率的另一种方法是使用 --interval 选项。
单遍扫描(即使用 --retry=1)的时间为:
时间=n 乘以 i + t + o
其中n是主机数量,i是间隔(用--interval给出或根据--bandwidth计算)),t 是超时(用 --timeout 指定),o 是加载目标列表和读取所需的开销时间MAC/供应商映射文件。开销通常可以忽略不计(通常约为 100 毫秒),但可以通过 --quiet 选项进一步减少。对于小型主机列表,超时值将占主导地位,但对于大型列表,数据包间隔是最重要的值。
ARP 请求的任何部分都可以通过使用 --arpXXX 选项进行修改,如下表所示:
桌子
最常见的选项是--arpspa,它在 ARP 请求中设置源 IPv4 地址,允许 ARP 请求使用与接口地址不同的源地址。这允许在没有 IPv4 地址的接口上使用arp-scan。注意:将 ar$spa 设置为目标的 IP 地址会导致某些操作系统在收到对其自身地址的 ARP 请求时报告地址冲突。
您还可以更改以太网帧标头中的值,如下所示:
桌子
设置目标以太网地址的--destaddr选项是唯一常用的选项。
默认情况下,ARP 响应按以下格式显示:
| <IPv4 Address> | <MAC Address> | <Vendor Details> |
其中IPv4地址是响应目标的IP地址,MAC地址是其链路层地址,供应商详细信息是从其中解码的供应商详细信息硬件地址。输出字段由单个制表符分隔。您可以使用--format选项更改输出格式。
响应按接收顺序显示,这可能与发送请求的顺序不同,因为某些主机可能比其他主机响应更快。
供应商解码使用文件 ieee-oui.txt 和 mac-vendor.txt。 ieee-oui.txt 由 IEEE MA-L (OUI)、MA-M、MA-S 生成em> (OUI36) 和 IAB 注册表。 mac-vendor.txt 包含其他 MAC 到供应商的映射,可用于添加自定义映射。 get-oui 可用于使用 IEEE 注册表中的最新数据更新 ieee-oui.txt。
所有 IPv4 主机都应响应 ARP 请求数据包,包括具有数据包过滤功能(例如防火墙)的主机。这使得 arp-scan 成为发现本地网络上所有活动 IPv4 主机的有用工具。
如果选项采用一个值,则该值被指定为尖括号中的字母。该字母表示预期的数据类型:
字符串。
十进制整数,如果前面有 0x,则为十六进制,例如2048 或 0x800。
浮点十进制数。
MAC 地址,例如01:23:45:67:89:ab 或 01-23-45-67-89-ab(不区分大小写)
IPv4 地址,例如10.0.0.1
十六进制编码的二进制数据。没有前导 0x。 (不区分大小写)。
其他 - 请参阅选项说明。
显示此使用信息并退出。
显示详细的进度消息。可以使用多次以增加详细程度。最大值=3。
显示程序版本并退出。显示版本、许可证详细信息、libpcap 版本以及是否包含 POSIX.1e 功能支持。
使用网络接口<s>。如果未指定此选项,arp-scan 将在系统接口列表中搜索编号最小、已配置的接口(不包括环回)。
从指定文件中读取主机名或地址。每行一个名称或地址模式。使用“-”作为标准输入。
从接口配置生成地址。从接口地址和网络掩码(包括网络和广播)生成列表。您不能使用--file选项或在命令行上指定目标。使用--interface指定接口。
使用 IEEE 注册表供应商映射文件<s>。默认为当前目录中的 ieee-oui.txt。如果没有找到,则使用/usr/share/arp-scan/ieee-oui.txt。
使用自定义供应商映射文件<s>。默认为当前目录中的mac-vendor.txt。如果没有找到,则使用/etc/arp-scan/mac-vendor.txt。
显示每个响应主机的最小输出。仅显示 IP 地址和 MAC 地址。由于未使用供应商映射文件,因此内存使用量减少了约 5MB。如果 -,则只有 $ {ip} 和 $ {mac} 字段可用于 --format 选项指定 -quiet。
抑制页眉和页脚文本。仅显示响应主机的详细信息。如果输出将由脚本解析,则很有用。
不显示重复的数据包。默认情况下,重复的数据包用 (DUP: n) 标记,其中 n 是该主机响应的次数。
计算并显示数据包往返时间。时间以毫秒和小数微秒显示。使$ {rtt}字段可用于--format。
指定输出格式字符串。格式是将为每个响应主机输出的字符串。可以通过使用语法“$ {field[;width]}”插入对字段的引用来包含主机详细信息。字段显示为右对齐,除非宽度为负,在这种情况下将使用左对齐。可以识别以下不区分大小写的字段名称:
| IP | Host IPv4 address in dotted quad format |
| Name | Host name if --resolve option given |
| MAC | Host MAC address xx:xx:xx:xx:xx:xx |
| HdrMAC | Ethernet source addr if different |
| Vendor | Vendor details string |
| Padding | Padding after ARP packet in hex if nonzero |
| Framing | Framing type if not Ethernet_II |
| VLAN | 802.1Q VLAN ID if present |
| Proto | ARP protocol if not 0x0800 |
| DUP | Packet number for duplicate packets (>1) |
| RTT | Round trip time if --rtt option given |
如果指定了 --quiet 选项,则只有 $ {ip} 和 $ {mac} 字段可用。
任何不是字段的字符都会逐字输出。 “\”引入转义:
| \n | newline |
| \r | carriage return |
| \t | tab |
| \ | suppress special meaning for following character |
您应该将 --format 参数括在“单引号”中,以保护 shell 中的特殊字符。
示例:--format='$ {ip}\t$ {mac}\t$ {供应商}'
随机化目标主机列表。
为伪随机数生成器播种。如果您想要可重复的--随机顺序,则很有用。
将每个主机的总尝试次数设置为<i>,默认=2。
将退避系数设置为 <f>,默认=1.50。每次传递将超时乘以 <f>。
将每个主机的初始超时设置为 <i> 毫秒,默认值=500。此超时适用于发送到每个主机的第一个数据包。随后的超时将乘以用--backoff设置的退避系数。
将最小数据包间隔设置为 <x>。这通过限制数据包速率来控制传出带宽的使用。如果您想使用给定的带宽,那么使用 --bandwidth 选项会更容易。间隔以毫秒为单位,如果附加“u”则以微秒为单位。
将出站带宽设置为<x>,默认=256000。该值以每秒位数为单位。附加 K 表示千位,附加 M 表示兆位(十进制倍数)。您不能同时指定--interval 和--bandwidth。
目标必须是 IP 地址,而不是主机名。可以减少大型目标列表的启动时间。
将响应地址解析为主机名。默认输出格式将显示主机名而不是 IPv4 地址。此选项使$ {name}字段可用于--format选项。
设置ARP源以太网地址。设置 48 位 ar$sha 字段,但不更改帧头中的硬件地址,请参阅 --srcaddr 了解如何更改该地址。默认为出接口的以太网地址。
设置ARP目标以太网地址。设置 48 位 ar$tha 字段。默认值为零,因为该字段不用于 ARP 请求数据包。
设置 ARP 硬件类型,默认=1。设置 16 位 ar$hrd 字段。默认值为 1 (ARPHRD_ETHER)。许多操作系统也响应6 (ARPHRD_IEEE802)。
设置ARP协议类型,默认=0x0800。设置 16 位 ar$pro 字段。大多数操作系统仅响应0x0800 (IPv4)。
设置硬件地址长度,默认=6。设置 8 位 ar$hln 字段。此选项不会更改 ar$sha 和 ar$tha 字段的长度;它仅更改 ar$hln 字段。
设置协议地址长度,默认=4。设置 8 位 ar$pln 字段。此选项不会更改 ar$spa 和 ar$tpa 字段的长度;它仅更改 ar$pln 字段。
指定 ARP 操作,默认=1。设置 16 位 ar$op 字段。大多数操作系统仅响应值 1 (ARPOP_REQUEST)。
设置源 IPv4 地址。地址应采用点分四元格式,或字符串“dest”,它将源地址设置为目标主机地址。默认为出接口地址。设置 32 位 ar$spa 字段。某些操作系统仅当源地址位于接收接口的网络内时才响应。将 ar$spa 设置为目标 IP 地址可能会导致某些操作系统报告地址冲突。
设置源以太网MAC地址。默认为接口 MAC 地址。这将设置以太网标头中的地址。它不会更改 ARP 数据包中的地址:使用 --arpsha 更改该地址。
设置目的MAC地址。设置以太网标头中的目标地址。默认值为ff:ff:ff:ff:ff:ff(广播)如果请求发送到主机的单播地址或多播地址,主机也会做出响应。
设置以太网协议类型,默认=0x0806。这设置以太网标头中的协议类型字段。
对 802.2 网络使用 RFC 1042 LLC/SNAP 封装。无论此选项如何,arp-scan 都会解码并显示以太网 II 和 IEEE 802.2 格式的 ARP 响应。
使用带有 VLAN ID 的 802.1Q 标记<i>。 id 应在 0 到 4095 范围内。无论此选项如何,arp-scan 都将以 802.1Q 格式解码并显示 ARP 响应。
指定数量的主机响应后退出。如果响应主机的数量小于限制,arp-scan 将以状态 1 退出。可在脚本中使用来检查响应的主机是否较少,而无需解析输出。
将收到的数据包写入 pcap 保存文件<s>。 ARP 响应将被写入指定的文件并被解码和显示。
将 pcap 捕捉长度设置为 <i>。默认值=64。指定帧捕获长度,包括以太网标头。默认值通常就足够了。
设置发送尝试次数,默认=20。
设置发送尝试之间的间隔。如果附加“u”,则间隔以毫秒或微秒为单位。默认=5。
指定数据包数据后的填充。将 ARP 请求后的填充设置为十六进制值
如果成功完成,arp-scan 将退出并返回 0;如果遇到错误,则返回 >0。
如果指定了--limit选项,并且响应主机的数量小于指定的限制,arp-scan也会以非零退出代码退出。
IEEE OUI(组织唯一标识符)到供应商映射的列表。
其他以太网 MAC 到供应商映射的列表,包括本地添加。
使用接口 IPv4 配置扫描默认网络以生成要扫描的主机列表。
$ arp-scan --localnet
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
10.0.0.14 a4:1f:72:7f:25:bb Dell Inc.
10.0.0.22 10:60:4b:73:43:de Hewlett Packard
10.0.0.74 00:0c:29:90:07:e9 VMware, Inc.
10.0.0.75 00:0c:29:66:9e:c2 VMware, Inc.
10.0.0.76 00:0c:29:d0:e1:ea VMware, Inc.
10.0.0.82 9c:b6:54:bb:f3:ec Hewlett Packard
10.0.0.84 00:21:9b:fd:b9:b3 Dell Inc.
10.0.0.85 00:02:b3:eb:5a:f8 Intel Corporation
10.0.0.91 00:9c:02:a5:7b:29 Hewlett Packard
10.0.0.92 d4:ae:52:d0:07:6f Dell Inc.
10.0.0.93 d4:ae:52:d0:04:9b Dell Inc.
10.0.0.96 9c:b6:54:bb:f5:35 Hewlett Packard
10.0.0.97 00:0c:29:0e:95:20 VMware, Inc.
10.0.0.104 50:65:f3:f0:70:a4 Hewlett Packard
15 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 1.532 seconds (167.10 hosts/sec). 14 responded使用接口 eth0 扫描 10.0.0.0/24 中的所有主机。计算往返时间并使用自定义格式显示在对齐的列中。
$ arp-scan -I eth0 --rtt --format='|${ip;-15}|${mac}|${rtt;8}|' 10.0.0.0/24
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
|10.0.0.14 |a4:1f:72:7f:25:bb| 0.280|
|10.0.0.22 |10:60:4b:73:43:de| 0.293|
|10.0.0.74 |00:0c:29:90:07:e9| 0.380|
|10.0.0.75 |00:0c:29:66:9e:c2| 0.311|
|10.0.0.76 |00:0c:29:d0:e1:ea| 0.326|
|10.0.0.82 |9c:b6:54:bb:f3:ec| 0.216|
|10.0.0.84 |00:21:9b:fd:b9:b3| 0.244|
|10.0.0.85 |00:02:b3:eb:5a:f8| 0.244|
|10.0.0.91 |00:9c:02:a5:7b:29| 0.209|
|10.0.0.92 |d4:ae:52:d0:07:6f| 0.289|
|10.0.0.93 |d4:ae:52:d0:04:9b| 0.278|
|10.0.0.96 |9c:b6:54:bb:f5:35| 0.255|
|10.0.0.97 |00:0c:29:0e:95:20| 0.288|
|10.0.0.104 |50:65:f3:f0:70:a4| 0.263|
14 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 2.032 seconds (125.98 hosts/sec). 14 responded--plain 删除无关的输出。
$ arp-scan -I eth0 --plain --format='${ip},${mac},"${vendor}"' 10.0.0.0/24
10.0.0.14,a4:1f:72:7f:25:bb,"Dell Inc."
10.0.0.22,10:60:4b:73:43:de,"Hewlett Packard"
10.0.0.74,00:0c:29:90:07:e9,"VMware, Inc."
10.0.0.75,00:0c:29:66:9e:c2,"VMware, Inc."
10.0.0.76,00:0c:29:d0:e1:ea,"VMware, Inc."
10.0.0.82,9c:b6:54:bb:f3:ec,"Hewlett Packard"
10.0.0.84,00:21:9b:fd:b9:b3,"Dell Inc."
10.0.0.85,00:02:b3:eb:5a:f8,"Intel Corporation"
10.0.0.91,00:9c:02:a5:7b:29,"Hewlett Packard"
10.0.0.92,d4:ae:52:d0:07:6f,"Dell Inc."
10.0.0.93,d4:ae:52:d0:04:9b,"Dell Inc."
10.0.0.96,9c:b6:54:bb:f5:35,"Hewlett Packard"
10.0.0.97,00:0c:29:0e:95:20,"VMware, Inc."
10.0.0.104,50:65:f3:f0:70:a4,"Hewlett Packard"get-oui(1)
arp-fingerprint(1)
http://www.royhills.co.uk/wiki/ The arp-scan wiki page.
https://github.com/royhills/arp-scan The arp-scan homepage.