Web User Interface
==================

This web interface presents results of the ``view`` purpose (see
:ref:`overview/principles:Purposes`) that can be filtered with
keywords (for some of them, shortcuts are available in the menus).

Keep in mind that the information available in this interface highly
depends on the options used to run Nmap.

The interface
~~~~~~~~~~~~~

The top navigation bar
----------------------

It contains several elements; from left to right:

- A shortcut to the start page, that cleans every keyword.
- A button to display this help page.
- Some menus with shortcuts to add filtering, sort or display commands.
- Some links to "share" (export) the current page.

The left side bar
-----------------

The first part allows to navigate within the results. Be careful with
the last button that goes to the last result page, as it can be very
slow when a lot of results are available.

The progress bar shows where the currently displayed results are within
the whole results set.

The second part allows to add, modify or remove filter, sort or display
commands.

The third part allows to explore the results by generating graphs
displayed in the rightmost part of the screen.

- The first field displays a graph with the 15 most common values of a
  variable in the filtered results. This can be slow when the number
  of results to scan is important. Here is a list of (sometimes)
  interesting values to try here:

   - ``category``, ``source``
   - ``country``, ``city``, ``as``
   - ``net``, ``net:[mask]``
   - ``domains``, ``domains:[level]``, ``domains:[domain]``,
     ``domains:[domain]:[level]``
   - ``hop``, ``hop:[number]``
   - ``port``, ``port:[open/closed/filtered]``, ``port:[service]``
     ``portlist:[open/closed/filtered]``,
     ``countports:[open/closed/filtered]``
   - ``service``, ``service:[port]``, ``product``, ``product:[port]``,
     ``version``, ``version:[port]``
   - ``cpe``, ``cpe.[type/vendor/product/version]``, ``cpe:[cpe
     spec]``, ``cpe.[type/vendor/product/version]:[cpe spec]``
     (examples: ``cpe.product:a:microsoft`` will show top product
     names in CPEs from vendor ``microsoft``, ``cpe.vendor:o:/^m/``
     will show top vendor names in CPEs that start with an ``m``)
   - ``devicetype``, ``devicetype:[port]``
   - ``script``
   - ``script:[scriptname]``
   - ``file`` (or ``file.filename``), ``file.time``, ``file.size``,
     ``file.uid``, ``file.gid``, ``file.permission``
   - ``smb.os``, ``smb.lanmanager``, ``smb.domain``,
     ``smb.dnsdomain``, ``smb.forest``, ``smb.workgroup``
   - ``cert.issuer``, ``cert.subject``, ``cert.md5``, ``cert.sha1``,
     ``cert.sha256``
   - ``cacert.issuer``, ``cacert.subject``, ``cacert.md5``,
     ``cacert.sha1``, ``cacert.sha256``
   - ``sshkey.type``, ``sshkey.bits``, ``sshkey.fingerprint``
   - ``ike.notification``, ``ike.transforms``,
     ``ike.transforms.Authentication``, ``ike.transforms.Encryption``,
     ``ike.transforms.GroupDesc``, ``ike.transforms.Hash``,
     ``ike.transforms.LifeDuration``, ``ike.transforms.LifeType``,
     ``ike.vendor_ids``, ``ike.vendor_ids.name``,
     ``ike.vendor_ids.value``
   - ``modbus.deviceid``, ``enip.vendor``, ``enip.product``,
     ``enip.serial``, ``enip.devtype``, ``enip.prodcode``,
     ``enip.rev``, ``enip.ip``
   - ``httphdr``, ``httphdr.name``, ``httphdr.value``,
     ``httphdr:[header]``
   - ``httpapp``, ``httpapp:[application]``

- The *Address space* button displays a graphical representation of
  the filtered addresses. The abscissa axis represents the two high
  bytes (or the three when the results belong to the same /16
  network), and the ordinate axis represents the two low bytes (or the
  low byte).
- The *Map* button displays the locations of the results on a world
  map.
- The *Timeline* and *Timeline 24h* buttons display time-lines where
  the abscissa axis represents the time and the ordinate axis
  represents the IP addresses.

Scan results
------------

Ten results (maximum) are displayed per page by default.

Each result has its own frame. In the default display mode, it displays
a summary for the host. Long-clicking a result frame toggles between the
summary display and the full display for the result.

The pencil icon in the upper-right corner opens the notepad page for the
current host (see below) in the rightmost part of the screen.

Each blue element in the results can be clicked to add a filter.

Available commands
~~~~~~~~~~~~~~~~~~

Command specification
---------------------

The commands might require a parameter, provided after the colon sign
``:``. Some commands can be used negatively, by prefixing them with
``!`` or ``-``.

The commands can be entered in the input boxes in the second part of the
left side bar or added by clicking on a shortcut in the top bar menus.

In the following list, a ``[!]`` before the command shows it can be used
negatively, and a ``:`` after the command indicates it requires a
parameter.

When a parameter is required the full value must be specified, or when
appropriate, a regular expression can be used, with the
``/[expression]/[flags]`` syntax (e.g.:
``script:smb-enum-shares:/WRITE/``).

If your command includes spaces, you need to protect it by using single
or double quotes.

Command list
------------

Filters
~~~~~~~

- ``[!]host:[IP address]`` filter a specific IP address. Using the IP
  address directly (without ``host:``) is equivalent.
- ``[!]net:[IP address/netmask]`` filter a specific network (CIDR
  notation). Using the CIDR notation directly (without ``net:``) is
  equivalent.
- ``[!]range:[IP address]-[IP address]`` filter a specific IP address
  range
- ``[!]hostname:[FQDN]`` look for results with a matching hostname.
- ``[!]domain:[FQDN]`` look for results with a hostname within a
  matching domain name.
- ``[!]category:`` filter a category.
- ``[!]tag[:value[:info]]`` filter a tag.
- ``[!]country:[two letters code]`` filter a country.
- ``[!]city:`` filter a city (use with ``country:``).
- ``[!]asnum:`` filter by AS number (lists allowed).
- ``[!]asname:`` filter by AS name (regular expressions allowed).
- ``[!]source:`` filter a source (specify the source name).
- ``[!]timerange:[timestamp]-[timestamp]`` filter results within a
  specific time range.
- ``[!]timeago:`` filter recent enough results; the value can be
  specified in seconds or with the appropriate suffix in minutes
  (``m``), hours (``h``), days (``d``) or years (``y``).
- ``service:[expression]``, ``service:[expression]:[port number]``
  look for an expression in the name of a service.
- ``product:[service]:[product]``, ``product:[service]:[product]:[port
  number]`` look for a product.
- ``version:[service]:[product]:[version]``,
  ``product:[service]:[product]:[version]:[port number]`` look for a
  specific version of a product.
- ``script:[scriptid]``, ``script:[scriptid]:[output]`` look for a
  specific script.
- ``anonftp`` filter results with anonymous FTP allowed.
- ``anonldap`` look for LDAP servers with anonymous bind working.
- ``authbypassvnc`` look for VNC servers with authentication that can
  be bypassed.
- ``authhttp`` look for HTTP servers with authentication and a default
  (e.g., ``admin``/``admin``) login/password working. The Nmap script
  seems to get a lot a false positives.
- ``banner:`` look for a specific banner of a service.
- ``cookie:`` look for HTTP servers setting a specific cookie.
- ``file``, ``file:[pattern]``, ``file:[scriptid]:[pattern]``,
  ``file:[scriptid],[scriptid],...:[pattern]`` look for a pattern in
  the shared files (FTP, SMB, ...).
- ``geovision`` look for GeoVision web-cams.
- ``httptitle:`` look for a specific HTML title value of the homepage
  of a web site.
- ``nfs`` look for NFS servers.
- ``nis``, ``yp`` look for NIS servers.
- ``mssqlemptypwd`` look for MS-SQL servers with an empty password for
  the ``sa`` account.
- ``mysqlemptypwd`` look for MySQL servers with an empty password for
  the ``root`` account.
- ``httphdr``, ``httphdr:[header]``, ``httphdr:[header]:[value]`` look
  for HTTP headers.
- ``httpapp``, ``httpapp:[application]``,
  ``httpapp:[application]:[version]`` look for HTTP applications.
- ``owa`` look for OWA (Outlook Web App) servers.
- ``phpmyadmin`` look for phpMyAdmin servers.
- ``smb.dnsdomain:[FQDN]`` search results with SMB service in a
  specific DNS domain.
- ``smb.domain:[NetBIOS]`` search results with SMB service in a
  specific NetBIOS domain.
- ``smb.fqdn:[NetBIOS]`` search results with SMB service in a specific
  host name (FQDN).
- ``smb.forest:[FQDN]`` search results with SMB service in a specific
  forest (DNS name).
- ``smb.lanmanager:[LAN Manager]`` search results with SMB service
  with a specific LAN Manager.
- ``smb.os:[OS]`` search results with SMB service with a specific OS.
- ``smb.server:[NetBIOS]`` search results with SMB service in a
  specific host name (NetBIOS).
- ``smb.workgroup:[NetBIOS]`` search results with SMB service in a
  specific workgroup (NetBIOS).
- ``smbshare``, ``smbshare:[access mode]`` search results with SMB
  shares with anonymous access. Access can be 'r', 'w' or 'rw'
  (default is read or write).
- ``sshkey:`` look for a particular SSH key.
- ``cert.md5:``, ``cert.sha1:``, ``cert.sha256:`` look for a
  particular certificate.
- ``cacert.md5:``, ``cacert.sha1:``, ``cacert.sha256:`` look for a
  particular CA certificate.
- ``torcert`` look for Tor certificates.
- ``webfiles`` look for "typical" web files in the shared folders.
- ``webmin`` look for Webmin servers.
- ``x11open`` look for open X11 servers.
- ``x11srv`` look for X11 servers.
- ``xp445`` look for Windows XP machines with TCP/445 port open.
- ``[!]ssl-ja3-client[:JA3]`` look for hosts with a JA3 client or with
  the given JA3 client.
- ``[!]ssl-ja3-server[:[JA3S][:JA3C]]`` look for hosts with a JA3
  server, with the given JA3 server (optionally corresponding to the
  given JA3 client).
- ``[!]ssl-jarm[:JARM]`` look for hosts with a (specific, when
  specified) JARM fingerprint.
- ``hassh[:HASSH]`` look for hosts with a (specific, when specified)
  HASSH fingerprint.
- ``[!]useragent[:USERAGENT]`` look for hosts with a User-Agent.
- ``os:`` look for a specific value in the OS discovery results.
- ``devtype:``, ``devicetype:`` look for a type of devices.
- ``netdev``, ``networkdevice`` look for network devices (firewalls,
  routers, ...).
- ``phonedev`` look for telephony devices.
- ``cpe(:[type](:[vendor](:[product](:[version]))))`` look for a given
  cpe. Each field can be a /regex/.
- ``[!]hop:[IP]``, ``[!]hop:[IP]:[TTL]`` look for a particular IP
  address in the traceroute results.
- ``[!]hopname:`` look for a matching hostname in the traceroute
  results.
- ``[!]hopdomain:`` look for a hostname within a matching domain name
  in the traceroute results.
- ``[!]tcp/[port number]``, ``[!]udp/[port number]``, look for an open
  TCP or UDP port (using ``[!][port number]`` directly is equivalent
  to ``[!]tcp/[port number]``).
- ``[!]openport`` look for hosts with at least one open port.
- ``otheropenport:[port number]``, ``otheropenport:[port number],[port
  number],...`` look for hosts with at least one open port other than
  those specified.
- ``notes`` search results with an associated note.

Sort
~~~~

- ``skip:[count]`` skip ``count`` first results.
- ``limit:[count]`` only display ``count`` results.
- ``[!]sortby:[field name]`` sort according to a field value. Be
  careful with this setting as consequences on the performances can be
  terrible.

Display
~~~~~~~

- ``display:host`` set the default display mode.
- ``display:cpe`` only display CPEs.
- ``display:script:``, ``display:script:[script id]`` or
  ``display:script:[script id],[script id],...`` only display (a
  particular) script outputs.
- ``display:screenshot`` only display screenshots.
- ``display:vulnerability`` only display vulnerabilities.
