这是用户在 2024-12-23 15:25 为 https://linux.die.net/man/1/arp-scan 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

arp-scan(1) - Linux man page

  名称


arp-scan - ARP 扫描仪

  简介


ARP-scan [选项] [主机...]


目标主机必须在命令行中指定,除非给出 --file 选项(在这种情况下,目标主机将从指定文件中读取),或使用 --localnet 选项(在这种情况下,目标主机将从网络接口 IP 地址和掩码中生成)。


运行 arp-scan 时,您必须是 root 用户,或者 arp-scan 必须是 SUID root 用户,因为它用来读写数据包的函数需要 root 权限。


目标主机可以指定为 IP 地址或主机名。您也可以指定目标为 IPnetwork/bits (如 192.168.1.0/24),以指定给定网络中的所有主机(包括网络地址和广播地址);IPstart-IPend (如 192.168.1.3-192.168.1.27),以指定包含范围内的所有主机;或 IPstart-IPend (如 192.168.1.3-192.168.1.27)。例如 192.168.1.3-192.168.1.27)指定包含范围内的所有主机,或 IPnetwork:NetMask (例如 192.168.1.0:255.255.255.0)指定指定网络和掩码中的所有主机。

  说明


arp-scan向本地网络上的主机发送 ARP 数据包,并显示收到的任何响应。可以使用 --interface 选项指定要使用的网络接口。如果没有该选项,arp-scan 将在系统接口列表中搜索编号最低、配置为向上的接口(不包括环回接口)。默认情况下,ARP 数据包会发送到以太网广播地址 ff:ff:fff:fff:fff:fff:fff,但可以使用 --destaddr 选项进行更改。


扫描的目标主机有三种指定方式:在命令行中指定目标主机;使用 --file 选项指定包含目标主机的文件;或使用 --localnet 选项指定目标主机。对于在命令行中指定的主机,或使用 --file 对于在命令行中指定的主机,或使用 --file 选项,可以使用 IP 地址或主机名。也可以使用网络规范 IPnetwork/bitsIPstart-IPend,或 IPnetwork:NetMask


目标主机列表存储在内存中。该列表中的每台主机占用 28 字节内存,因此扫描一个 B 类网络(65,536 台主机)需要约 1.75MB 内存,扫描一个 A 类网络(16,777,216 台主机)需要约 448MB 内存。


arp-scan支持以太网和 802.11 无线网络。它还可以支持令牌环和 FDDI,但尚未进行测试。它不支持 PPP 或 SLIP 等串行链接,因为它们不支持 ARP。


ARP 协议是一种第 2 层(数据链路层)协议,用于根据主机的第 3 层(网络层)地址确定其第 2 层地址。ARP 设计用于任何第 2 层和第 3 层地址格式,但最常用的是将 IP 地址映射到以太网硬件地址,而这正是 ARP-scan 所支持的。ARP 只在本地网络上运行,不能路由。虽然 ARP 协议使用 IP 地址,但它不是基于 IP 的协议,arp-scan 可以在未配置 IP 的接口上使用。


ARP 仅用于 IPv4 主机。IPv6 使用 NDP(邻居发现协议),这是一种不同的协议,arp-scan不支持它。


每个目标主机发送一个 ARP 数据包,目标协议地址(ar$tpa 字段)设置为该主机的 IP 地址。如果主机没有响应,则将再次发送 ARP 数据包。重试的最大次数可以通过 --retry 选项来更改。减少重试次数将缩短扫描时间,但可能会因数据包丢失而错过某些结果。


您可以使用 --bandwidth 选项指定 arp-scan 发送 ARP 数据包时使用的带宽。默认情况下,它使用每秒 256000 比特的带宽。增加带宽会缩短扫描时间,但带宽设置过高可能会导致 ARP 风暴,从而干扰网络运行。此外,带宽设置过高会导致数据包的发送速度超过网络接口的传输速度,最终填满内核的发送缓冲区,从而导致错误信息:无可用缓冲空间。另一种指定发送 ARP 数据包速率的方法是使用 --interval 选项,这也是修改同一基本参数的另一种方法。


执行一次单程扫描(即 --retry=1 时)所需的时间由以下公式得出:

time = n*i + t + o

其中,n 是列表中的主机数量,i 是数据包之间的时间间隔(用 --interval 指定,或根据以下公式计算得出 --带宽),t是超时值(用 --超时指定),o是将目标加载到列表中所需的开销时间。 并读取 MAC/Vendor 映射文件。对于小的主机列表,超时值将占主导地位,但对于大的主机列表,数据包间隔是最重要的。 价值。


在 65,536 台主机、默认带宽 256,000 比特/秒(导致数据包间隔为 2 毫秒)、默认超时 100 毫秒、单次通过(--重试=1)并假设开销为 1 秒的情况下,扫描时间为 65536*0.002 + 0.1 + 1 = 132.172 秒,即大约 2 分 12 秒。


可以通过使用各种 --arpXXX 选项来修改传出 ARP 数据包的任何部分。使用其中一些选项可能会使发出的 ARP 数据包不符合 RFC 标准。不同的操作系统以不同的方式处理各种非标准 ARP 数据包,这可能会被用来识别这些系统。请参阅arp-fingerprint(1),了解有关使用这些选项对目标操作系统进行指纹识别的脚本的信息。


下表总结了更改传出 ARP 数据包的选项。在该表中,字段列给出了 RFC 826 中的 ARP 数据包字段名,比特指定了字段中的比特数,选项显示了修改该字段的 ARP-scan 选项,注释给出了默认值和其他注释。


传出 ARP 数据包选项
  字段位 选项 注释

ar$hrd 16 --arphrd 默认为 1 (ARPHRD_ETHER)

ar$pro 16 --arppro 默认为 0x0800

ar$hln 8 --arphln 默认为 6 (ETH_ALEN)

ar$pln 8 --arppln 默认为 4(IPv4)

ar$op 16 --arpop 默认为 1 (ARPOP_REQUEST)

ar$sha 48 --arpsha 默认为接口 h/w 地址

ar$spa 32 --arpspa 默认为接口 IP 地址

ar$tha 48 --arptha 默认为零 (00:00:00:00:00:00:00)

ar$tpa 32 无 设置为目标主机 IP 地址


最常用的传出 ARP 数据包选项是 --arpspa,它在 ARP 数据包中设置源 IP 地址。该选项允许传出 ARP 数据包使用与传出接口地址不同的源 IP 地址。有了这个选项,就可以在没有配置 IP 地址的接口上使用 arp-scan ,如果要确保测试主机不与被测网络交互,这个选项就非常有用。


此外,还可以更改以太网帧头中的值,这些值将在传出数据包中生成 ARP 数据包。下表总结了更改以太网帧头中值的选项。


传出以太网帧选项
  字段位 选项 注释

目标地址 48 --destaddr 默认为 ff:ff:ff:ff:ff:ff:ff

源地址 48 --srcaddr 默认为接口地址

协议类型 16 --prototype 默认为 0x0806


最常用的传出以太网帧选项是 --destaddr,它为 ARP 数据包设置目标以太网地址。 --prototype 不常用,因为它会导致数据包被解释为不同的以太网协议。


收到的任何 ARP 响应都会以以下格式显示:

  3CIP 地址>  3硬件地址>  <供应商详细信息>


其中,IP 地址是响应目标的 IP 地址,硬件地址是其以太网硬件地址(也称为 MAC 地址),供应商详细信息是根据硬件地址解码的供应商详细信息。输出字段之间用一个制表符分隔。


响应的显示顺序与收到请求的顺序不同,因为有些主机的响应速度可能比其他主机快。


供应商解码使用 ieee-oui.txt, ieee-iab.txtmac-vendor.txt 文件,这些文件随 arp-scan 一起提供。该文件与arp-scan一起提供。 ieee-oui.txtieee-iab.txt 文件由 IEEE 网站上的 OUI 和 IAB 数据生成,网址为 http://standards.ieee.org/regauth/oui/ieee-oui.txthttp://standards.ieee.org/regauth/oui/iab.txt 。Perl 脚本 get-ouiget-iab 包含在 arp-scan 软件包中,可用于使用 IEEE 网站上的最新数据更新这些文件。文件 mac-vendor.txt文件包含 IEEE OUI 和 IAB 文件未涵盖的其他 MAC 到供应商映射。


如果收到目标协议地址 (ar$tpa) 设置为其 IP 地址的 ARP 数据包,几乎所有支持 IP 的主机都会响应 arp-scan 。这包括具有 IP 过滤功能的防火墙和其他主机,它们会丢弃来自测试系统的所有 IP 流量。因此,ARP-scan 是快速确定给定以太网网段上所有活动 IP 主机的有用工具。

  选项

  --help或-h

显示此使用信息并退出。

--file=<fn>或--f <fn>

从指定文件而不是命令行读取主机名或地址。每行一个名称或 IP 地址。使用"-"表示标准输入。
  --本地网或--l

从网络接口配置生成地址 使用网络接口 IP 地址和网络掩码生成目标主机地址列表。该列表将包括网络地址和广播地址,因此 10.0.0.1 和网络掩码 255.255.255.0 的接口地址将生成 256 个目标主机,范围从 10.0.0.0 到 10.0.0.255(包括 10.0.0.0.0)。使用该选项时,不能指定 --file 选项,也不能在命令行中指定任何目标主机。接口规格取自 arp-scan 将使用的接口,可以使用 --interface 选项更改。

--retry=<n>或-r <n>

将每台主机的总尝试次数设为 <n>,默认值=3。

--timeout=<n> 或 -t <n>

将每台主机的初始超时设置为 <n> ms,默认值=500。该超时是针对发送到每台主机的第一个数据包,随后的超时将乘以用 --backoff 设置的延迟因子。

--时间间隔=<n> 或 -i <n>

将最小数据包间隔设为 <n> ms。这将通过限制数据包的发送速率来控制外发带宽的使用。数据包间隔不会小于这个数字。如果想使用指定的带宽,使用 --bandwidth 选项会更方便。默认情况下,指定的间隔以毫秒为单位,如果在值后附加 "u",则以微秒为单位。

--bandwidth=<n> 或 -B <n>

将所需的出站带宽设置为 <n>,默认值=256000。默认值单位为比特/秒。如果在值后附加 "K",则单位为千比特/秒;如果在值后附加 "M",则单位为兆比特/秒。后缀 "K "和 "M "表示十进制倍数,而不是二进制倍数。因此 64K 是 64000,而不是 65536。不能同时指定 --interval 和 --bandwidth,因为它们只是更改同一参数的不同方法。

--backoff=<b> 或 -b <b>

将超时后退因子设为 <b>,默认值=1.50。每次超时后,每个主机的超时时间都会乘以该系数。因此,如果重试次数为 3,每个主机的初始超时时间为 500 毫秒,超时后退因子为 1.5,那么第一次超时时间为 500 毫秒,第二次超时时间为 750 毫秒,第三次超时时间为 1125 毫秒。
  --verbose或-v

显示冗长的进度信息。多次使用效果更佳:1 - 显示主机何时从列表中删除以及其他有用信息;2 - 显示发送和接收的每个数据包;3 - 在扫描开始前显示主机列表。
  --版本或--V

显示程序版本并退出。
  --随机或--R

随机化主机列表。该选项会随机调整主机列表中主机的顺序,因此 ARP 数据包会以随机顺序发送给主机。它使用 Knuth shuffle 算法。
  --数字或--N

仅 IP 地址,无主机名。使用该选项时,所有主机必须指定为 IP 地址。不允许使用主机名。

--snap=<s> 或 -n <s>

将 pcap snap 长度设置为 <s>。默认值=64。这指定了帧捕获长度。该长度包括数据链头。默认值通常足够。

--接口=<i> 或 -I <i>

使用网络接口 <i>。如果未指定此选项,arp-scan 将在系统接口列表中搜索编号最低的已配置运行接口(不包括环回接口)。指定的接口必须支持 ARP。
  --安静或--q

只显示最小输出。如果指定了该选项,则只显示最低限度的信息。使用该选项时,将不使用 OUI 文件。
  --忽略的备份或--g

不显示重复数据包。默认情况下,会显示重复数据包,并标记为"(DUP: n)"。

--ouifile=<o> 或 -O <o>

使用 OUI 文件 <o>,默认=/usr/local/share/arp-scan/ieee-oui.txt 该文件提供以太网 OUI 与供应商字符串的映射。

--iabfile=<i> 或 -F <i>

使用 IAB 文件 <i>,默认=/usr/local/share/arp-scan/ieee-iab.txt 该文件提供 IEEE 以太网 IAB 与供应商字符串的映射。

--macfile=<m> 或 -m <m>

使用 MAC/供应商文件 <m>,默认=/usr/local/share/arp-scan/mac-vendor.txt 该文件提供自定义以太网 MAC 与供应商字符串映射。

--srcaddr=<m> 或 -S <m>

将源以太网 MAC 地址设置为 <m>。这将为外发 ARP 数据包设置以太网帧头中的 48 位硬件地址。它不会更改 ARP 数据包中的硬件地址,有关如何更改该地址的详细信息,请参阅 --arpsha 。默认值是传出接口的以太网地址。

--destaddr=<m>或--T <m>

将数据包发送到以太网 MAC 地址 <m> 设置以太网帧头中的 48 位目标地址。默认为广播地址 ff:ff:ff:ff:ff:ff:ff。如果 ARP 请求发送到它们的 MAC 地址或它们正在监听的组播地址,大多数操作系统也会响应。地址可以按格式 01:23:45:67:89:ab 或 01-23-45-67-89-ab 指定。字母十六进制字符可以是大写或小写。

--arpsha=<m>或-u <m>

使用 <m> 作为 ARP 源以太网地址 这将设置 ARP 数据包中的 48 位 ar$sha 字段,但不会更改帧头中的硬件地址,有关如何更改该地址的详细信息,请参阅 --srcaddr。默认情况下是输出接口的以太网地址。

--arptha=<m>或-w <m>

使用 <m> 作为 ARP 目标以太网地址 设置 ARP 数据包中的 48 位 ar$tha 字段,默认值为 0,因为 ARP 请求数据包不使用该字段。

--prototype=<p>或-y <p>

将以太网协议类型设置为 <p>,默认=0x0806。这将设置以太网帧头中的 16 位协议类型字段。将其设置为非默认值将导致数据包被目标忽略或发送到错误的协议栈。该选项可能并无用处,仅为完整起见而设置。

--arphrd=<o> 或 -H <o>

使用 <o> 表示 ARP 硬件类型,默认为 1。这将设置 ARP 数据包中的 16 位 ar$hrd 字段。正常值为 1(ARPHRD_ETHER)。大多数(但不是所有)操作系统也会响应 6 (ARPHRD_IEEE802)。少数系统响应任何值。

--arppro=<o>或--p <o>

使用 <o> 表示 ARP 协议类型,默认=0x0800。这将设置 ARP 数据包中的 16 位 ar$pro 字段。大多数操作系统只响应 0x0800(IPv4),但有些操作系统也会响应其他值。

--arphln=<l>或-a <l>

将硬件地址长度设置为 <l>,默认为 6。这将设置 ARP 数据包中的 8 位 ar$hln 字段。它设置了 ARP 数据包中硬件地址的声明长度。将其设置为默认值以外的任何值都将使数据包不符合 RFC 标准。不过,某些操作系统可能仍会对此作出响应。请注意,该选项不会改变 ARP 数据包中 ar$sha 和 ar$tha 字段的实际长度;它只会改变 ar$hln 字段。

--arppln=<l>或--P <l>

将协议地址长度设置为 <l>,默认为 4。这将设置 ARP 数据包中的 8 位 ar$pln 字段。它设置了 ARP 数据包中协议地址的声明长度。将其设置为默认值以外的任何值都将使数据包不符合 RFC 标准。不过,某些操作系统可能仍会对此作出响应。请注意,该选项不会改变 ARP 数据包中 ar$spa 和 ar$tpa 字段的实际长度;它只会改变 ar$pln 字段。

--arpop=<o>或-o <o>

使用 <o> 进行 ARP 操作,默认值=1。这将设置 ARP 数据包中的 16 位 ar$op 字段。大多数操作系统只响应值 1(ARPOP_REQUEST)。不过,有些系统也会响应其他值。

--arpspa=<s>或-s <s>

使用 <s> 作为源 IP 地址。地址应以点四格式指定;或使用字符串 "dest",将源地址设置为与目标主机地址相同。这将设置 ARP 数据包中的 32 位 ar$spa 字段。有些操作系统会检查这一点,只有当源地址在接收接口的网络内时才会响应。而其他操作系统则不管这些,会对任何源地址做出响应。默认情况下,使用传出接口地址。

--padding=<p>或--A <p>

指定数据包数据后的填充。将填充数据设置为十六进制值 <p>。该数据将附加到 ARP 数据包的末尾,位于数据之后。大多数(如果不是全部)操作系统都会忽略任何填充。默认情况下没有填充,但发送系统上的以太网驱动程序可能会将数据包填充到最小以太网帧长度。
  --llc或--L

使用 RFC 1042 LLC 帧和 SNAP。该选项可使发出的 ARP 数据包使用带有 SNAP 头的 IEEE 802.2 帧,如 RFC 1042 所述。arp-scan 将以 Ethernet-II 或 IEEE 802.2 格式解码和显示接收到的 ARP 数据包,与此选项无关。

-vlan=<v>或-Q <v>

使用 VLAN ID <v> 的 802.1Q 标记。此选项会使发出的 ARP 数据包使用 802.1Q VLAN 标记,VLAN ID 为 <v>,范围应在 0 至 4095 之间(包括 4095)。无论是否使用此选项,arp-scan 都会以 802.1Q 格式解码和显示接收到的 ARP 数据包。

--pcapsavefile=<p> 或 -W <p>

将收到的数据包写入 pcap 保存文件 <p>。该选项会将收到的 ARP 响应写入指定名称的 pcap 保存文件。可以使用能理解 pcap 文件格式的程序(如 "tcpdump "和 "wireshark")分析该保存文件。

  文件

/usr/local/share/arp-scan/ieee-oui.txt

IEEE OUI(组织唯一标识符)与供应商的映射列表。
/usr/local/share/arp-scan/ieee-iab.txt

IEEE IAB(独立地址块)与供应商映射列表。
/usr/local/share/arp-scan/mac-vendor.txt

其他以太网 MAC 到供应商映射列表。

  实例


下面的示例显示 arp-scan 用于使用网络接口 192.168.0.0/24 扫描网络。 下一个示例显示了在使用 pump 通过 DHCP 配置网络接口后,使用 arp-scan 扫描本地网络的情况。
# pump
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:D0:B7:0B:DD:C7
          inet addr:10.0.84.178  Bcast:10.0.84.183  Mask:255.255.255.248
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46335 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1542776 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1644 txqueuelen:1000
          RX bytes:6184146 (5.8 MiB)  TX bytes:348887835 (332.7 MiB)
# arp-scan --localnet
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.4 with 8 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.0.84.179     00:02:b3:63:c7:57       Intel Corporation
10.0.84.177     00:d0:41:08:be:e8       AMIGO TECHNOLOGY CO., LTD.
10.0.84.180     00:02:b3:bd:82:9b       Intel Corporation
10.0.84.181     00:02:b3:1f:73:da       Intel Corporation
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.4: 8 hosts scanned in 0.820 seconds (9.76 hosts/sec).  4 responded

  作者

Roy Hills <Roy.Hills@nta-monitor.com>

  另请参见

get-oui(1)

get-iab(1)

arp-fingerprint(1)


RFC826--以太网地址解析协议


http://www.nta-monitor.com/wiki/ arp-scan wiki 页面。


http://www.nta-monitor.com/tools/arp-scan/ arp-scan 主页。

  参考文献

mac-vendor(5)