Table of Contents↗️
mdns-scanner
<a href="https://github.com/CramBL/mdns-scanner/releases" title="Latest Stable GitHub Release">
<img src="https://img.shields.io/github/release/CramBL/mdns-scanner/all.svg?style=flat&logo=github&logoColor=white&color=blue&label=Latest%20Release" alt="GitHub release">
</a>
<a href=https://github.com/CramBL/mdns-scanner/actions>
<img src=https://github.com/CramBL/mdns-scanner/actions/workflows/CI.yml/badge.svg alt="CI status">
<img src="https://img.shields.io/badge/-Linux-9C2A91.svg?style=flat&logo=linux&logoColor=white" alt="Linux" title="Supported Platform: Linux"> 
<img src="https://img.shields.io/badge/-macOS-red.svg?style=flat&logo=apple&logoColor=white" alt="macOS" title="Supported Platform: macOS">
<img src="https://img.shields.io/badge/-Windows-6E46A2.svg?style=flat&logo=windows-11&logoColor=white" alt="Windows" title="Supported Platform: Windows"> 
Scan a network and create a list of IPs and associated hostnames, including DNS-SD service instances, mDNS hostnames and other aliases.

[!NOTE] Windows has a runtime dependency on the Npcap packet capture library
Prebuilt binaries for Linux, MacOS, and Windows can be found on the releases page.
Install the latest version with the standalone installer:
# On 🍎 macOS and 🐧 Linux.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CramBL/mdns-scanner/releases/latest/download/mdns-scanner-installer.sh | sh
# On 🖥️ Windows.
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CramBL/mdns-scanner/releases/latest/download/mdns-scanner-installer.ps1 | iex"
If installed via the standalone installer, mdns-scanner can update itself to the latest version:
mdns-scanner update
homebrewbrew install CramBL/tap/mdns-scanner
cargomdns-scanner is available via Cargo, but must be built from Git rather than crates.io due to its dependency on unpublished crates.
cargo install --git https://github.com/CramBL/mdns-scanner mdns-scanner
Simply run it.
mdns-scanner will start scanning any non-loopback network interfaces for IPs with a host on the other end, and resolve the hostnames for those IPs.
[!TIP] Inform your resident sys admin that you're about to run hundreds of IP scans per second.
... or dump the default configuration file to stdout, or add the -o/--output option to write it to a file.
mdns-scanner dump-default-config [--output <FILE>]
mdns-scanner dump-default-keymap [--output <FILE>]
The config and keymap can be placed in the user config directory, dump the config or see the default_config.toml for where that is for your system.
The command-line arguments take precedence over configuration files, after looking for mdns-scanner.toml in the user config directory, any command-line arguments are applied to the final configuration.
Default keybindings are defined in the default keymap. You can override these defaults by creating a keymap.toml file in your user config directory.
You can check your keymap.toml file with
mdns-scanner check-keymap [--file <FILE>]
if no path is specified, the default location in the user config directory is checked.
[!IMPORTANT] When you define a custom keybinding for an action, the default keybinding for that action is automatically disabled. For example, if you bind
ctrl-qto thequitaction, the defaultqbinding will no longer work.
To preserve multiple keybindings for the same action, you must explicitly define each one:
"<q>" = "quit"
"<ctrl-q>" = "quit"
$ claude mcp add mdns-scanner \
-- python -m otcore.mcp_server <graph>