Skip to content

ersinkoc/NetSight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetSight

Network topology scanner and visualizer — single binary, zero dependencies.

Real-time network discovery with an interactive D3.js topology map. Scan, detect services, and visualize your network from a single Go binary.


Features

  • TCP Connect Scanning — configurable port presets (quick / standard / full / custom)
  • Service Detection — banner grabbing, HTTP probing, TLS certificate inspection
  • Topology Visualization — interactive D3.js force-directed graph with subnet clustering
  • Real-time Progress — SSE-powered live scan feed with ETA
  • Dark / Light Theme — persisted preference
  • Export / Import — JSON scan results
  • Single Binary — Go 1.22+ with embedded frontend, no external dependencies

Quick Start

Download the latest release from Releases, then:

# Default: localhost:8080, auto-open browser
./netsight

# Custom address, no browser
./netsight -addr 0.0.0.0:9090 -open=false

Open http://localhost:8080 in your browser, add a target range, and start scanning.

Build from Source

git clone https://github.com/ersinkoc/NetSight.git
cd NetSight
go build -ldflags="-s -w" -o netsight .

Requires Go 1.22+. No external dependencies.

Cross-compilation

GOOS=linux   GOARCH=amd64 go build -ldflags="-s -w" -o netsight-linux-amd64 .
GOOS=darwin  GOARCH=arm64 go build -ldflags="-s -w" -o netsight-darwin-arm64 .
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o netsight-windows-amd64.exe .

CLI Flags

Flag Default Description
-addr 127.0.0.1:8080 Listen address
-open true Auto-open browser

API

All endpoints are under /api/v1.

Scans

Method Path Description
POST /scans Create and start scan
GET /scans List all scans
GET /scans/{id} Get scan result
DELETE /scans/{id} Delete scan
POST /scans/{id}/cancel Cancel active scan

Hosts & Topology

Method Path Description
GET /scans/{id}/hosts List hosts
GET /scans/{id}/hosts/{ip} Get host detail
GET /scans/{id}/topology Get topology graph

Export / Import

Method Path Description
GET /scans/{id}/export Export as JSON
POST /import Import JSON scan

System

Method Path Description
GET /health Health check
GET /config/presets Port presets
GET /events SSE stream

Scan Request Format

{
  "targets": [
    {
      "range": "192.168.1.0/24",
      "gateway": "192.168.1.1",
      "label": "Office LAN"
    }
  ],
  "ports": { "preset": "standard" },
  "options": {
    "workers": 200,
    "timeout": "2s",
    "serviceDetect": true,
    "httpProbe": true,
    "tlsInspect": true
  }
}

SSE Events

Event Description
scan:started Scan begun
scan:progress Progress update (every 500ms)
host:discovered New alive host found
port:open Open port found
service:detected Service identified
scan:completed Scan finished
scan:cancelled Scan cancelled
scan:error Scan failed

Docker

Images are published to GHCR (GitHub Container Registry):

docker pull ghcr.io/ersinkoc/netsight:latest
docker run -p 8080:8080 ghcr.io/ersinkoc/netsight:latest

Build locally

docker build -t netsight .
docker run -p 8080:8080 netsight

X / @ersinkoc  ·  GitHub / ersinkoc

About

Network topology scanner and visualizer

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors