Open Tools NetLens
Free · Open source · Single .exe

NetLens v1.2.0

A small, fast, native-Windows LAN scanner and host monitor for IT admins, consultants and small businesses. Drop the .exe on the box, point it at a subnet, get a clean inventory and a consultant-quality HTML report — no installer, no licence server, no telemetry.

Version 1.2.0
Started 2026-01-12
Released 2026-04-12
Platform Windows 10 / 11 · x64
Size 2.3 MB
Built with C++20 · Win32 · CMake
Dependencies None · Single file
  • GitHub github.com/3389ro/netlens · Releases · Issues
  • SHA-256 a593c49123edbb5f5aa004d9603ce683d94102d8c72b7dc6e5ea75e289f76557 .sha256
  • Source SHA-256 393bc3a6b8301f002ded29c1349bc088ea7d3aab5c3671fb8dd72cd9021416f7 .sha256
  • Licence MIT · LICENSE.txt + NOTICE.txt bundled inside the source ZIP and the repo

Verify the binary before you run it: Get-FileHash NetLens.exe -Algorithm SHA256 and compare against the hash above (or against the .sha256 sidecar). If your organisation prefers to build from source, the ZIP includes the full build tree and a single build-release.bat script.

At a glance

Name
NetLens
Purpose
Portable LAN scanner and host monitor for Windows. Discovers live hosts on a subnet, identifies the vendor, enumerates open ports and produces a clean inventory plus an HTML report.
Target user
IT administrators, network consultants, support technicians and small-business owners running short engagements on customer networks. Useful in offices, light datacentres and home labs.
Platform
Windows 10 / Windows 11, x64. Single-file native executable; no .NET, no Java, no Python runtime.
Licence
MIT. LICENSE.txt and NOTICE.txt bundled in source ZIP and repo.
Telemetry
None. The tool makes no outbound network calls of its own; it only sends ICMP and TCP probes to the IP range you specify.
Admin rights
Not required. NetLens runs as a normal user; raw-socket privilege is not used.
Download
NetLens.exe — 2.3 MB single-file portable executable.
Source code
github.com/3389ro/netlens · source ZIP.
Verification
SHA-256 of binary: a593c49123edbb5f5aa004d9603ce683d94102d8c72b7dc6e5ea75e289f76557. Verify with Get-FileHash NetLens.exe -Algorithm SHA256.

Screenshots

Main scan window, scan results sorted by risk, and a sample HTML report.

NetLens v1.2.0 main window on Windows 11 — adapter auto-detected, IP range field pre-filled with the on-link prefix, Quick LAN Scan port preset selected, Deep scan mode, and a green Start scan button ready. Native Win32 GUI, single-file 2.3 MB executable, no installer required.
Main window — adapter auto-detected, range pre-filled, ports preset, scan mode set to Deep.
NetLens scanning a 192.168.12.0/24 office network — 26 online hosts including a MikroTik gateway, Ubiquiti AP, Synology NAS, HP and Brother printers, Hikvision and Dahua cameras, Yealink VoIP phones, Chromecast, Apple AirPlay, Windows workstations and a domain controller
Office LAN scan (192.168.12.0/24) — 26 online hosts across MikroTik gateway, Synology NAS, HP / Canon / Brother printers, Hikvision and Dahua cameras, Yealink VoIP phones, Chromecast, AirPlay, Windows workstations and a domain controller. Vendor-coloured rows, vendor-aware port priority.
NetLens scanning a 10.14.52.0/24 datacenter — 34 online hosts including Cisco core switches, Juniper and Arista ToR, Dell iDRAC, HPE iLO and Supermicro IPMI BMCs, VMware ESXi hosts, vCenter, Synology storage, PostgreSQL, Redis, Elasticsearch and Windows domain controllers
Datacenter scan (10.14.52.0/24) — 34 online hosts: Cisco core, Juniper / Arista ToR, Dell iDRAC / HPE iLO / Supermicro IPMI, VMware ESXi + vCenter, Synology storage, PostgreSQL / Redis / Elasticsearch tier, Windows AD. High-risk rows flagged automatically.
NetLens single-file HTML report from the office scan — header with scan metadata, KPI cards (254 total, 26 online, 228 offline, 8 high risk, 8 RDP open, 8 SMB open, 29 web open) and a sortable results table with UDP services column
HTML report — single file, embedded CSS, no CDN. Header with scan metadata, KPI cards, sortable results table including UDP service findings (NetBIOS workgroup, SNMP sysDescr, UPnP server, NTP stratum).

What it does

The full feature set in one page — everything below is in the box, in the same single executable.

Host discovery

  • Adapter auto-detection. Every Ethernet and Wi-Fi IPv4 adapter is picked up via GetAdaptersAddresses. The scan-range field is pre-filled with the on-link prefix; ranges above 1024 hosts are flagged.
  • Flexible range syntax. 192.168.1.1-254, 192.168.1.10-192.168.1.50 or 192.168.1.0/24.
  • Three scan modes. Deep (default) does ICMP plus a TCP-fallback sweep on the configured port list, so Windows boxes that block ICMP echo (the SMB default) still get found. Fast trusts ICMP first and only TCP-probes ICMP-silent hosts on a 20-port discovery set. Discovery-only is pure ICMP plus DNS plus MAC, no TCP traffic.
  • Concurrent port scanning. Non-blocking connect() plus select() across all ports in a batch: four ports cost one timeout window instead of four. Thread pool with configurable concurrency, default 256, capped at 1024.

Identification

  • Reverse DNS. GetNameInfo with a hard 800 ms cap per host, so one slow PTR record cannot stall the entire scan.
  • MAC address + vendor. SendARP for local-subnet hosts, then the embedded IEEE OUI registry (~52,790 entries across MA-L /24, MA-M /28 and MA-S /36 — public IEEE data, no attribution required) resolves the vendor name.
  • Per-vendor port-priority profiles. Vendor-detected hosts get a tailored port order: Dahua / Hikvision / Axis cameras → RTSP, web, ONVIF; MikroTik → Winbox + API; NAS boxes → SMB, AFP, NFS, web admin; printers → JetDirect, IPP, LPD; server BMC → IPMI, iDRAC, iLO. Vendor-typical services appear first instead of after the full common-port sweep.

UDP service enrichment v1.2.0

  • Six parallel UDP probes per online host — the kind of services TCP-only scanners typically miss entirely:
    • UDP 137 NetBIOS Name Service — NBSTAT query, yields computer name + workgroup.
    • UDP 5353 mDNS / DNS-SD — PTR for _services._dns-sd._udp.local, surfaces the service catalogue advertised by printers, NAS, Apple devices, Chromecast / Roku, AirPlay.
    • UDP 1900 SSDP / UPnP — M-SEARCH ssdp:all, identifies consumer routers, smart TVs, DLNA servers.
    • UDP 161 SNMPv1 (community public) — reads sysDescr.0; often the cleanest way to identify Cisco / Mikrotik / Juniper firmware versions.
    • UDP 53 DNS — version.bind CHAOS TXT query.
    • UDP 123 NTP — v4 client request, reports stratum and reference ID.
  • NetBIOS name fallback. When reverse DNS is empty (broken / disabled), the Hostname column transparently shows the NetBIOS name picked up over UDP 137 — Windows machines stay identifiable.
  • No admin rights and no raw sockets. Each probe is a connected UDP socket. Windows surfaces “port unreachable” via WSAECONNRESET on recv(), which we read as “service absent” without further work. Six sockets share one select() window per host.
  • Auto-disabled for ranges above 1024 hosts (matching the DNS auto-off behaviour). Disable per scan with --no-udp on the CLI or via Tools → Settings → Resolve UDP services.

Risk hints

  • Coarse exposure analysis: None / Low / Medium / High with explicit hint text. NetLens never claims a confirmed vulnerability — it points at the open service so you know where to look.
  • RDP / Telnet / WinRM / database ports score High; SMB / RPC / NetBIOS / SSH / FTP / VNC score Medium; web-only score Low.
  • UDP findings feed the model too: SNMP public reads as Medium; UPnP, NetBIOS name exposure and DNS version disclosure come through as Low.

Reporting

  • CSV export. UTF-8 with BOM, RFC-4180 escaped, opens cleanly in Excel.
  • HTML export. Single file, embedded CSS, no CDN. Sorted by risk (High → Medium → Low → online → offline). Cancelled scans get a prominent amber banner and an explicit “Partial results” flag.
  • Both exports include every probed host regardless of the GUI’s “Hide offline” filter.

Operations

  • GUI and CLI in one binary. Double-click for the GUI; pass --range or --help for headless / scripted use. CLI exit codes: 0 success, 1 bad arguments, 2 scan error, 3 export error.
  • Safe cancellation. Stop at any time; partial results remain valid and exports flag the run as Cancelled.
  • Auto-tuning for big ranges. DNS and UDP probes are auto-disabled for ranges above 1024 hosts (per-scan only, saved settings untouched).
  • No installer, no registry writes, no auto-update. Single portable .exe. Logs go to %APPDATA%\NetLens\.

CLI quick reference

Same binary — pass scan arguments to switch to CLI mode.

NetLens.exe --help
NetLens.exe --list-adapters
NetLens.exe --range 192.168.6.1-254 --preset quick
NetLens.exe --range 192.168.6.0/24 --mode deep --csv report.csv --html report.html
NetLens.exe --range 192.168.6.1-254 --no-dns --no-udp --online-only
--range <expr> a.b.c.d-n, a.b.c.d-a.b.c.d or a.b.c.d/n
--mode <id> deep (default), fast, discovery
--preset <id> quick (default), windows, remote, web, common
--ports <csv> Custom port list, overrides --preset
--timeout <ms> Per-probe timeout, default 400, clamped [50, 10000]
--parallel <n> Max concurrent host probes, default 256, clamped [1, 1024]
--csv <path> Write CSV report
--html <path> Write single-file HTML report
--no-dns Disable reverse DNS
--no-mac Disable MAC lookup
--no-udp Disable UDP service probes
--online-only Skip offline hosts in output / reports

Release history

Each version on this page maps to a complete source snapshot in the ZIP — binaries are reproducible.

v1.2.0 2026-04-12

UDP service enrichment.

Six parallel UDP probes per online host — NetBIOS 137, mDNS 5353, SSDP 1900, SNMP 161, DNS-version 53, NTP 123 — surface the services TCP-only scanners miss. NetBIOS name now feeds a Hostname fallback when reverse DNS is empty. Risk model picks up SNMP-public reads (Medium), UPnP and NetBIOS exposure (Low). New CSV columns and a UDP section in the HTML report. Auto-disabled for ranges above 1024 hosts.

v1.1.2 2026-03-15

Licence-clean OUI source.

OUI registry swapped to the IEEE Registration Authority’s public CSV registries (MA-L, MA-M, MA-S) — ~52,790 entries, free public use, no attribution required. The previous source carried a copyleft licence; the new one is unencumbered, so it can be bundled directly into the binary. Generator script rewritten for IEEE’s tab / CSV format. Vendor port-priority profiles unchanged (they hit IEEE-formal organisation names already).

v1.1.1 2026-02-25

Richer OUI, vendor port-priority, preset manager.

OUI database upgraded to 57,140 entries. New VendorPortProfiles module: video surveillance, MikroTik, VMware, NAS, printers, server BMC, Ubiquiti, Cisco, VoIP phones, Apple, smart-home IoT, ICS / SCADA — each gets a tailored port order so vendor-typical services appear first. New Tools → Manage port presets dialog (view, rename, edit, add, delete) with in-memory edits per session.

v1.1.0 2026-02-05

Project rename to NetLens.

Binary now ships as NetLens.exe. Internal namespace renamed to netlens::. Resource files renamed. APPDATA folder now %APPDATA%\NetLens\. No functional changes — scan engine, risk model, GUI, CLI, exports, baseline format and monitor logic are identical to v1.0.8.

v1.0.8 2026-01-15

Review-driven hardening.

Scan default flipped to Deep so Windows boxes that block ICMP no longer get silently missed. Concurrency dropped from 2048 to 1024 to play nicely with consumer-router rate-limits. Scanner-to-UI handoff is now strictly UI-thread (heap payload + PostMessage). Cancelled-scan progress bug fixed. DNS auto-off for ranges above 1024 hosts. HTML export shows scan state explicitly with an amber banner for cancelled runs.

FAQ

Is this really free? What’s the catch?

It really is free and open source. We built NetLens for our own engineering work and use it on client engagements; publishing it is a way to give something back to the small-business IT community. There is no upsell, no “pro” tier, no licence server. If you need a customised variant for your team, that’s a paid engagement — the public tool stays free.

Why is Windows SmartScreen flagging the .exe?

On first launch SmartScreen may show “Windows protected your PC”; click More info → Run anyway. Verify the SHA-256 above against the .sha256 sidecar with Get-FileHash NetLens.exe -Algorithm SHA256. If your organisation requires building from source instead, the ZIP includes the full tree and a one-step build-release.bat — the resulting binary is identical to ours.

Does it need administrator rights?

No. NetLens uses standard Windows socket APIs (connected TCP and UDP sockets, SendARP, GetNameInfo, GetAdaptersAddresses). No raw sockets, no kernel driver, no admin token required.

Where does NetLens fit among LAN tools?

NetLens is built for the everyday LAN-inventory job on small and medium business networks: “who is on this subnet, what are they running, give me a report I can send to the customer.” It is intentionally focused — portable single-file binary, fast scans, vendor-aware port priority, UDP service enrichment, clean CSV / HTML reports. For deep security auditing or red-team work, a dedicated security scanner is the right choice; NetLens is not designed for that workflow.

Does it work over a VPN?

Yes. The adapter dropdown lists every IPv4 interface, including VPN virtual adapters. Pick the VPN adapter and the suggested range comes from its on-link prefix.

Can I integrate it into a script?

Yes — the same NetLens.exe switches to CLI mode when you pass --range. Exit codes are explicit (0 / 1 / 2 / 3), CSV is RFC-4180 clean, HTML is self-contained. See the CLI quick reference above.

Need NetLens tailored to your environment?

Different protocols, custom report layout, on-prem integration, branded output, embedded use inside a larger product — we’ve done all of those. Tell us what you need.