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

Latest release:

Stable RC Beta

Docker:

lanscape lanscape-arm

Health:

pytest pylint packaging docker


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 (Linux Only)

Docker only works on Linux hosts only. Network scanning requires --network host mode, which only works properly on Linux. For Windows/Mac, use pip install lanscape instead.

Images

Architecture Image Platforms
AMD64 (x86_64) ghcr.io/mdennis281/lanscape:latest Most servers, desktops
ARM64 (aarch64) ghcr.io/mdennis281/lanscape-arm:latest Raspberry Pi, Apple Silicon, AWS Graviton

Quick Start

AMD64:

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

ARM64:

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

Or use Docker Compose:

curl -O https://raw.githubusercontent.com/mdennis281/LANscape/main/docker/docker-compose.yml
docker compose up -d                              # AMD64 (default)
docker compose --profile arm64 up -d lanscape-arm # ARM64

Access the UI at http://localhost:5001

Custom Ports

To use different ports, set the environment variables. When using --network host (as below), Docker ignores -p, so only the environment variables are needed. In bridge mode, you must also publish the matching ports with -p/ports:.

docker run -d --name lanscape \
  --network host \
  -e LANSCAPE_UI_PORT=8080 \
  -e LANSCAPE_WS_PORT=8081 \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  ghcr.io/mdennis281/lanscape:latest

Required Ports

LANscape uses two ports that must be reachable for the UI and live scan updates to work:

Port Purpose
5001 Web UI (HTTP)
8766 WebSocket (live scan data)

With --network host (Linux), both ports are automatically available on the host — no extra flags needed.

In bridge mode (or Docker Desktop on Windows/Mac), you must publish them explicitly:

docker run -d --name lanscape \
  -p 5001:5001 \
  -p 8766:8766 \
  --cap-add NET_RAW \
  --cap-add NET_ADMIN \
  ghcr.io/mdennis281/lanscape:latest

Note: Bridge mode limits scanning to TCP port probing only — ARP/ICMP device discovery requires --network host on Linux.

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 None Path to log file (optional)

If you change LANSCAPE_UI_PORT or LANSCAPE_WS_PORT, update your -p mappings (bridge mode) or firewall rules accordingly.

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.3.0rc2.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.3.0rc2-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file lanscape-3.3.0rc2.tar.gz.

File metadata

  • Download URL: lanscape-3.3.0rc2.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.3.0rc2.tar.gz
Algorithm Hash digest
SHA256 aae6bb94c2e83ac1f55e00fcc27a63c0e1b30aade2bcfe88c2a553adf46aabb3
MD5 ea3cc13d22db59041ef7df3d295b6621
BLAKE2b-256 075397eac5cb68d7ed263bb15ba321489fcfab09ec66f8480b958b8517ccb9c8

See more details on using hashes here.

File details

Details for the file lanscape-3.3.0rc2-py3-none-any.whl.

File metadata

  • Download URL: lanscape-3.3.0rc2-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.3.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 375fd1e2923fcb6de50d1ede1a576d6860c9fa8a372e92c6ae17c488d92f3d02
MD5 2433ae7b20a8a9aa3016f67c1502b72f
BLAKE2b-256 2464486c474ec48b17e48825aed18bf31da3fc95d14013e568ee002c0cbb6567

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