Network Scanner
"What's on my network?" - discovers devices on your own local network using two complementary, entirely local techniques. No root required, no cloud dependency.
Usage
"scan the network"
"can you see my Sony TV"
"is my printer on the network"
"scan netværket" (Danish)
"kan du se min printer" (Danish)
How it finds devices
1. mDNS/Bonjour (via zeroconf) - most consumer smart devices
(Chromecast, HomeKit accessories, printers, many smart speakers)
announce themselves on the network. Gives a clean, self-reported
name, but only for devices that participate in mDNS - plenty of
devices (including many robot vacuums, which talk only to a cloud
service) never announce themselves at all, no matter how good the
scanner is.
2. Ping sweep + ARP + MAC vendor lookup - catches devices that
don't announce themselves. Pings every address in the local /24
subnet (parallelized, a few seconds), reads the OS's own ARP cache to
get each responder's MAC address, looks up the MAC's manufacturer via
mac-vendor-lookup's bundled offline IEEE database, and tries a
reverse-DNS lookup for a hostname. Needs no special privileges -
sending a ping via the system binary and reading the ARP cache are
both unprivileged operations; only actively rewriting the ARP table
would need root, and this skill never does that.
Why both
They catch different, only-partially-overlapping devices:
- mDNS gives a clean name, but only for announcing devices.
- Ping+ARP+vendor catches almost anything with an IP, but only gives a manufacturer guess ("a Sony Corporation device") - never a specific model, and even that guess can be missing entirely, since many modern phones/tablets randomize their MAC address by default for privacy, which breaks vendor lookup completely for those devices.
A real, honest limit: you only see what announces itself
If a device is genuinely silent on both fronts - no mDNS, doesn't respond to ping, or (rarer) has no reverse-DNS entry and an unrecognized/randomized MAC - it won't show up, no matter how the scanning is done. A robot vacuum that only talks to its manufacturer's cloud service is invisible to this skill, and there's no way around that from the local network side.
Local-subnet-only - a protocol property, not a policy
mDNS multicast and ARP do not cross routers by design - both techniques are physically incapable of seeing anything outside this device's own local subnet, regardless of any code here. This is not a restriction imposed by this skill; it's just what these protocols do.
Known rough edge
A single physical device can advertise several different mDNS names for different services on the same IP (observed during real testing: one machine advertised both a caching-service name and a separate KDE Connect ID on the same address). Since each IP here only keeps one name, whichever service happens to be processed last wins - not a stable, deterministic choice. Not fixed in this release.
Install
pip install ovos-skill-network-scanner
Development
See DEVELOPMENT.md.
Category
Utility
Tags
#network #scanner #mdns #discovery #lan
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ovos_skill_network_scanner-0.0.1.tar.gz.
File metadata
- Download URL: ovos_skill_network_scanner-0.0.1.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2907b52190e9b875683db4c6123f3cf214ead6dd00f78940e6076321db87e98d
|
|
| MD5 |
acf92f0857ac18b3c4baa68e038f06d5
|
|
| BLAKE2b-256 |
ba609a41a473b4c8e0361f406552a4ba076d3cbb0337d33e12e9563e6a90127a
|
Provenance
The following attestation bundles were made for ovos_skill_network_scanner-0.0.1.tar.gz:
Publisher:
publish.yml on andlo/ovos-skill-network-scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ovos_skill_network_scanner-0.0.1.tar.gz -
Subject digest:
2907b52190e9b875683db4c6123f3cf214ead6dd00f78940e6076321db87e98d - Sigstore transparency entry: 2491669168
- Sigstore integration time:
-
Permalink:
andlo/ovos-skill-network-scanner@30c8aad5c051242c90869353c7f162bf1fa06ae9 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/andlo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@30c8aad5c051242c90869353c7f162bf1fa06ae9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ovos_skill_network_scanner-0.0.1-py3-none-any.whl.
File metadata
- Download URL: ovos_skill_network_scanner-0.0.1-py3-none-any.whl
- Upload date:
- Size: 28.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9432e3016d413eccc0fc360e64b0fc3f31175f7e4f341d42a0696114d0da6767
|
|
| MD5 |
79a8ad9d33d86dc39e2c3f1b454f3384
|
|
| BLAKE2b-256 |
0c3f62cfceca8fecbe46eef87c1e55900fe0209e66de2a6db1dc5b068e2395d0
|
Provenance
The following attestation bundles were made for ovos_skill_network_scanner-0.0.1-py3-none-any.whl:
Publisher:
publish.yml on andlo/ovos-skill-network-scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ovos_skill_network_scanner-0.0.1-py3-none-any.whl -
Subject digest:
9432e3016d413eccc0fc360e64b0fc3f31175f7e4f341d42a0696114d0da6767 - Sigstore transparency entry: 2491669244
- Sigstore integration time:
-
Permalink:
andlo/ovos-skill-network-scanner@30c8aad5c051242c90869353c7f162bf1fa06ae9 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/andlo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@30c8aad5c051242c90869353c7f162bf1fa06ae9 -
Trigger Event:
push
-
Statement type: