Provided by: arp-scan_1.10.0-2_amd64 bug

NAME

       arp-scan - Send ARP requests to target hosts and display responses

SYNOPSIS

       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).

DESCRIPTION

       arp-scan sends ARP request packets to the  specified  hosts  and  displays  any  responses
       received.  The  network  interface  can  be  specified  with the --interface option. If no
       interface is specified, arp-scan will pick the lowest numbered,  configured  up  interface
       (excluding loopback).

       arp-scan uses raw sockets, which requires privileges on some systems:

       Linux with POSIX.1e capabilities support using libcap:
              arp-scan  is  capabilities  aware. It requires CAP_NET_RAW in the permitted set and
              only enables that capability for the required functions.  use setcap  cap_net_raw+p
              /path/to/arp-scan  to  add  CAP_NET_RAW  to  the  permitted  set  of  the  arp-scan
              executable.  Capabilities support also makes SUID root much safer because  arp-scan
              will  drop  all  capabilities  except  CAP_NET_RAW  and will not run with full root
              privileges.

       BSD and macOS:
              You need read/write access to /dev/bpf*

       Any operating system:
              Running as root or SUID root will work on any OS but other methods  are  preferable
              where possible.

       ARP  only  operates on the local network, and cannot be routed.  Although the ARP protocol
       uses IPv4 addresses, it is not an IP protocol and  arp-scan  can  be  used  on  interfaces
       without an IPv4 address.

       One  ARP  request is sent for each target. If a host does not respond, the request will be
       re-sent once more. The number of retries can be changed with the --retry option.  Reducing
       the  number  of  retries will reduce the scanning time at the risk of missing some results
       due to packet loss.

       You can specify the bandwidth that arp-scan will use  with  the  --bandwidth  option.  The
       default is 256000 bits per second. Increasing the bandwidth will reduce scanning time, but
       setting the bandwidth too high may cause a high broadcast packet  rate.   Another  way  to
       specify the packet rate is with the --interval option.

       The time for a single-pass scan (i.e. with --retry=1) is:

       time=n×i+t+o

       Where  n  is  the  number of hosts, i is the interval (given with --interval or calculated
       from --bandwidth), t is the timeout (specified with --timeout) and o is the overhead  time
       taken  to  load  the  target  list  and read the MAC/Vendor mapping files. The overhead is
       normally negligible (typically around 100ms) but can be reduced  further  by  the  --quiet
       option.   For  small  lists of hosts, the timeout value will dominate, but for large lists
       the packet interval is the most important value.

       Any part of the ARP request may be modified through the use of  the  --arpXXX  options  as
       shown in the table below:

       ┌────────────────────────────────────────────────────┐
       │            ARP Request Packet Options              │
       ├───────┬──────┬──────────┬──────────────────────────┤
       │FieldBitsOptionDefault                  │
       ├───────┼──────┼──────────┼──────────────────────────┤
       │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 │ interface h/w address    │
       │ar$spa │ 32   │ --arpspa │ interface IPv4 address   │
       │ar$tha │ 48   │ --arptha │ 00:00:00:00:00:00        │
       │ar$tpa │ 32   │ None     │ target host IPv4 address │
       └───────┴──────┴──────────┴──────────────────────────┘
       The most common option is --arpspa, which sets the source IPv4 address in the ARP request,
       allowing the ARP request to use a different source address  from  the  interface  address.
       This  allows the use of arp-scan on interfaces with no IPv4 address.  Note: Setting ar$spa
       to the target's IP address causes some operating systems to report an address  clash  when
       they receive an ARP request for their own address.

       You can also change the values in the Ethernet frame header as shown below:

       ┌────────────────────────────────────────────────────────┐
       │                Ethernet Header Options                 │
       ├───────────────┬──────┬─────────────┬───────────────────┤
       │FieldBitsOptionDefault           │
       ├───────────────┼──────┼─────────────┼───────────────────┤
       │Dest Address   │ 48   │ --destaddr  │ ff:ff:ff:ff:ff:ff │
       │Source Address │ 48   │ --srcaddr   │ interface address │
       │Protocol Type  │ 16   │ --prototype │ 0x0806 (ARP)      │
       └───────────────┴──────┴─────────────┴───────────────────┘
       The  --destaddr option which sets the destination Ethernet address is the only one that is
       commonly used.

       By default, ARP responses are displayed in the following format:

       <IPv4 Address>   <MAC Address>   <Vendor Details>

       Where IPv4 Address is the IP address of the responding target, MAC Address  is  its  link-
       layer address and Vendor Details are the vendor details decoded from the hardware address.
       The output fields are separated by a single tab  character.  You  can  change  the  output
       format with the --format option.

       The  responses  are  displayed in the order they are received, which can be different from
       the order the requests were sent because some hosts may respond quicker than others.

       The vendor decoding uses the  files  ieee-oui.txt  and  mac-vendor.txt.   ieee-oui.txt  is
       generated from the IEEE MA-L (OUI), MA-M, MA-S (OUI36) and IAB registries.  mac-vendor.txt
       contains additional MAC to Vendor mappings, and can be used to add custom  mappings.  get-
       oui can be used to update ieee-oui.txt with the latest data from the IEEE registries.

       All  IPv4  hosts  should  respond  to  ARP  request  packets,  including hosts with packet
       filtering such as firewalls. This makes arp-scan a useful tool to discover all active IPv4
       hosts on the local network.

OPTIONS

       Where  an option takes a value, that value is specified as a letter in angle brackets. The
       letter indicates the type of data that is expected:

       <s>    Character string.

       <i>    Decimal integer, or hex if preceeded by 0x e.g. 2048 or 0x800.

       <f>    Floating point decimal number.

       <m>    MAC address, e.g. 01:23:45:67:89:ab or 01-23-45-67-89-ab (case insensitive)

       <a>    IPv4 address e.g. 10.0.0.1

       <h>    Hex encoded binary data. No leading 0x. (case insensitive).

       <x>    Something else - see option description.

   General Options
       --help or -h
              Display this usage message and exit.

       --verbose or -v
              Display verbose progress messages.  Can be used than once  to  increase  verbosity.
              Max=3.

       --version or -V
              Display  program  version and exit.  Displays the version, license details, libpcap
              version, and whether POSIX.1e capability support is included.

       --interface=<s> or -I <s>
              Use network interface <s>.  If this option is not specified, arp-scan  will  search
              the  system  interface  list  for  the  lowest  numbered,  configured  up interface
              (excluding loopback).

   Host Selection
       --file=<s> or -f <s>
              Read hostnames or addresses from the specified file.  One name or  address  pattern
              per line. Use "-" for stdin.

       --localnet or -l
              Generate  addresses  from  interface  configuration.  Generates list from interface
              address and netmask (network and broadcast included). You  cannot  use  the  --file
              option  or  give  targets  on  the  command  line.   Use --interface to specify the
              interface.

   MAC/Vendor Mapping Files
       --ouifile=<s> or -O <s>
              Use IEEE registry vendor mapping file <s>.  Default is ieee-oui.txt in the  current
              directory.  If that is not found /usr/share/arp-scan/ieee-oui.txt is used.

       --macfile=<s> or -m <s>
              Use  custom  vendor  mapping  file  <s>.   Default is mac-vendor.txt in the current
              directory.  If that is not found /etc/arp-scan/mac-vendor.txt is used.

   Output Format Control
       --quiet or -q
              Display minimal output for each responding host.   Only  the  IP  address  and  MAC
              address  are  displayed.   Reduces  memory  usage  by  about 5MB because the vendor
              mapping files are not used.  Only the ${ip} and ${mac} fields are available for the
              --format option if --quiet is specified.

       --plain or -x
              Supress  header and footer text.  Only display the responding host details.  Useful
              if the output will be parsed by a script.

       --ignoredups or -g
              Don't display duplicate packets.  By default duplicate  packets  are  flagged  with
              (DUP: n) where n is the number of times this host has responded.

       --rtt or -D
              Calculate  and  display  the  packet  round-trip  time.   The  time is displayed in
              milliseconds and fractional microseconds. Makes  the  ${rtt}  field  available  for
              --format.

       --format=<s> or -F <s>
              Specify  the  output format string.  The format is a string that will be output for
              each responding host. Host details can  be  included  by  inserting  references  to
              fields  using  the  syntax  "${field[;width]}". Fields are displayed right- aligned
              unless the width is negative in  which  case  left  alignment  will  be  used.  The
              following case- insensitive field names are recognised:

              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

              Only the ${ip} and ${mac} fields are available if the --quiet option is specified.

              Any characters that are not fields are output verbatim. "\" introduces escapes:

              \n   newline
              \r   carriage return
              \t   tab
              \    suppress special meaning for following character

              You  should  enclose  the  --format  argument in 'single quotes' to protect special
              characters from the shell.

              Example: --format='${ip}\t${mac}\t${vendor}'

   Host List Randomisation
       --random or -R
              Randomise the target host list.

       --randomseed=<i>
              Seed the pseudo random  number  generator.   Useful  if  you  want  a  reproducible
              --random order.

   Output Timing and Retry
       --retry=<i> or -r <i>
              Set total number of attempts per host to <i>, default=2.

       --backoff=<f> or -b <f>
              Set backoff factor to <f>, default=1.50.  Multiplies timeout by <f> for each pass.

       --timeout=<i> or -t <i>
              Set initial per host timeout to <i> ms, default=500.  This timeout is for the first
              packet sent to each host.  subsequent timeouts are multiplied by the backoff factor
              which is set with --backoff.

       --interval=<x> or -i <x>
              Set  minimum packet interval to <x>.  This controls the outgoing bandwidth usage by
              limiting the packet rate. If you want to use up to a given bandwidth it  is  easier
              to  use  the  --bandwidth  option  instead.  The  interval  is  in milliseconds, or
              microseconds if "u" is appended.

       --bandwidth=<x> or -B <x>
              Set outbound bandwidth to <x>, default=256000.  The value is in  bits  per  second.
              Append  K  for  kilobits  or M for megabits (decimal multiples). You cannot specify
              both --interval and --bandwidth.

   DNS Resolution
       --numeric or -N
              Targets must be IP addresses, not hostnames.  Can reduce  startup  time  for  large
              target lists.

       --resolve or -d
              Resolve  responding addresses to hostnames.  The default output format will display
              the hostname instead of the IPv4 address.  This  option  makes  the  ${name}  field
              available for the --format option.

   Output ARP Packet
       --arpsha=<m> or -u <m>
              Set  the  ARP  source  Ethernet address.  Sets the 48-bit ar$sha field but does not
              change the hardware address in the frame header, see --srcaddr for  how  to  change
              that address. Default is the Ethernet address of the outgoing interface.

       --arptha=<m> or -w <m>
              Set the ARP target Ethernet address.  Sets the 48-bit ar$tha field.  The default is
              zero, because this field is not used for ARP request packets.

       --arphrd=<i> or -H <i>
              Set the ARP hardware type, default=1.  Sets the 16-bit ar$hrd field.   The  default
              is 1 (ARPHRD_ETHER). Many operating systems also respond to 6 (ARPHRD_IEEE802).

       --arppro=<i> or -p <i>
              Set  the  ARP  protocol  type, default=0x0800.  Sets the 16-bit ar$pro field.  Most
              operating systems only respond to 0x0800 (IPv4).

       --arphln=<i> or -a <i>
              Set the hardware address length, default=6.  Sets  the  8-bit  ar$hln  field.   The
              lengths  of  the  ar$sha  and ar$tha fields are not changed by this option; it only
              changes the ar$hln field.

       --arppln=<i> or -P <i>
              Set the protocol address length, default=4.  Sets  the  8-bit  ar$pln  field.   The
              lengths  of  the  ar$spa  and ar$tpa fields are not changed by this option; it only
              changes the ar$pln field.

       --arpop=<i> or -o <i>
              Specify the ARP operation, default=1.  Sets the 16-bit ar$op field.  Most operating
              systems only respond to the value 1 (ARPOP_REQUEST).

       --arpspa=<a> or -s <a>
              Set  the  source IPv4 address.  The address should be in dotted quad format, or the
              string "dest" which sets the source  address  to  the  target  host  address.   The
              default  is  the  outgoing  interface address.  Sets the 32-bit ar$spa field.  Some
              operating systems only respond if the source address is within the network  of  the
              receiving  interface.   Setting ar$spa to the destination IP address can cause some
              operating systems to report an address clash.

   Output Ethernet Header
       --srcaddr=<m> or -S <m>
              Set the source Ethernet MAC address.  Default is the interface  MAC  address.  This
              sets  the address in the Ethernet header. It does not change the address in the ARP
              packet: use --arpsha to change that address.

       --destaddr=<m> or -T <m>
              Set the destination MAC address.  Sets the  destination  address  in  the  Ethernet
              header.  Default is ff:ff:ff:ff:ff:ff (broadcast) Hosts also respond if the request
              is sent to their unicast address, or to a multicast address they are listening on.

       --prototype=<i> or -y <i>
              Sets the Ethernet protocol type, default=0x0806.  This sets the protocol type field
              in the Ethernet header.

       --llc or -L
              Use  RFC  1042 LLC/SNAP encapsulation for 802.2 networks.  arp-scan will decode and
              display ARP responses in both Ethernet-II and IEEE 802.2  formats  irrespective  of
              this option.

       --vlan=<i> or -Q <i>
              Use 802.1Q tagging with VLAN id <i>.  The id should be in the range 0 to 4095. arp-
              scan will decode and display ARP responses in 802.1Q format  irrespective  of  this
              option.

   Misc Options
       --limit=<i> or -M <i>
              Exit  after  the specified number of hosts have responded.  arp-scan will exit with
              status 1 if the number of responding hosts is less than the limit. Can be  used  in
              scripts to check if fewer hosts respond without having to parse the output.

       --pcapsavefile=<s> or -W <s>
              Write  received packets to pcap savefile <s>.  ARP responses will be written to the
              specified file as well as being decoded and displayed.

       --snap=<i> or -n <i>
              Set the pcap snap length to <i>. Default=64.  Specifies the frame  capture  length,
              including the Ethernet header. The default is normally sufficient.

       --retry-send=<i> or -Y <i>
              Set number of send attempts, default=20.

       --retry-send-interval=<i> or -E <i>
              Set interval between send attempts.  Interval is in milliseconds or microseconds if
              "u" is appended. default=5.

       --padding=<h> or -A <h>
              Specify padding after packet data.  Set padding after the ARP request to hex  value
              <h>.

EXIT STATUS

       arp-scan will exit with 0 on successful completion or >0 if an error was encountered.

       If  the  --limit option is specified, arp-scan will also exit with a non-zero exit code if
       the number of responding hosts is less than the specified limit.

FILES

       /usr/share/arp-scan/ieee-oui.txt
              List of IEEE OUI (Organisationally Unique Identifier) to vendor mappings.

       /etc/arp-scan/mac-vendor.txt
              List of other Ethernet MAC to vendor mappings, including local additions.

EXAMPLES

   Simple Scan
       Scan the default network using the interface IPv4 configuration to generate  the  list  of
       hosts to scan.

       $ 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

   Output Formatting
       Scan  all hosts in 10.0.0.0/24 using interface eth0. Calculate round-trip time and display
       in aligned columns using a custom format.

       $ 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

   CSV Output
       --plain removes extraneous output.

       $ 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"

SEE ALSO

       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.

                                         November 9, 2022                             ARP-SCAN(1)