Skip to main content

A python based local network scanner

Project description

LANscape

A local network scanner with a built-in web UI. Discover devices, open ports, and running services on your network.

The UI was recently converted into react, stored in a separate repo: mdennis281/lanscape-ui

pip install lanscape
python -m lanscape

Stats:

Version Monthly Downloads Docker

Latest release:

Stable RC Beta

Health:

pytest packaging pylint


LANscape UI

More screenshots

Scan Configuration

Port Detail


Flags

Flag Description
--version Show the installed version and exit
--ui-port <number> Port for the web UI (default: auto)
--ws-port <number> Port for the WebSocket server (default: 8766)
--ws-server Start WebSocket server only (no UI)
--persistent Don't auto-shutdown when the browser tab closes
--mdns-off Disable mDNS service discovery
--logfile <path> Write log output to a file
--loglevel <level> Set log level: DEBUG, INFO, WARNING, ERROR, CRITICAL (default: INFO)
--debug Shorthand for --loglevel DEBUG
python -m lanscape
python -m lanscape --version
python -m lanscape --ui-port 8080
python -m lanscape --debug --persistent
python -m lanscape --logfile /tmp/lanscape.log --loglevel WARNING
python -m lanscape --ws-server --ws-port 9000

Docker

Run LANscape in a Docker container with full network scanning capabilities:

docker run -d --name lanscape \
  --network host \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  ghcr.io/mdennis281/lanscape:latest

Or use Docker Compose:

curl -O https://raw.githubusercontent.com/mdennis281/LANscape/main/docker-compose.yml
docker compose up -d

Access the UI at http://localhost:5001

Environment Variables

Variable Default Description
LANSCAPE_UI_PORT 5001 Web UI port
LANSCAPE_WS_PORT 8766 WebSocket server port
LANSCAPE_LOG_LEVEL INFO Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
LANSCAPE_MDNS true Enable mDNS discovery (true/false)
LANSCAPE_WS_ONLY false WebSocket-only mode (true/false)
LANSCAPE_LOG_FILE Path to log file (optional)

Note: Network scanning requires --network host mode for ARP/device discovery. Without it, only TCP port scanning will work.

Troubleshooting

MAC Address / Manufacturer is inaccurate or unknown

LANscape does an ARP lookup to determine MAC addresses. This can require elevated permissions to get accurate results — try running your shell as admin.

Scan accuracy seems low

The scanner uses a combination of ARP, ICMP, and port probing to find devices. If results aren't great out of the box:

  • Tweak the scan configuration preset (accessible from the gear icon)
  • Set up ARP lookup properly — see ARP issues
  • Open an issue if something still seems off

Something else

Feel free to submit an issue with details about what you're seeing.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lanscape-3.2.1b4.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lanscape-3.2.1b4-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file lanscape-3.2.1b4.tar.gz.

File metadata

  • Download URL: lanscape-3.2.1b4.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for lanscape-3.2.1b4.tar.gz
Algorithm Hash digest
SHA256 58a15f0c1ab4079f104cb36cdc6ba2c0fb2de813d5f8efbdff2aba606449d0c9
MD5 42e58bb8bde9c945174fcc4d29671709
BLAKE2b-256 523a1c1da867e83f9e2047fc660ce080d9f14b27e55d1fda80d1e09f28018f21

See more details on using hashes here.

File details

Details for the file lanscape-3.2.1b4-py3-none-any.whl.

File metadata

  • Download URL: lanscape-3.2.1b4-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for lanscape-3.2.1b4-py3-none-any.whl
Algorithm Hash digest
SHA256 f4c8bf356e7d3db080bc6ef7d2d4303da0343bab578ac88167307fe78365879e
MD5 c33b60d7d94f9042dd6b9255ee38a6ee
BLAKE2b-256 5542246f402230f6d335eed6620d13c847db1b66c2fa25dfe2883abc86b83438

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page