Skip to content

Repository files navigation

NetAnalyzer

A desktop network scanning tool built with Kotlin and Swing.

Features

  • Network Interface Detection — Lists all available IPv4 network interfaces with IP and subnet mask
  • Ping Sweep — Multi-threaded ping scan to discover live hosts on the selected network
  • MAC Address Resolution — Retrieves MAC addresses via ARP table lookup
  • Vendor Identification — Identifies device vendors from MAC OUI prefixes (built-in database with 100+ vendors)
  • Port Scanning — Scans 25 common ports (HTTP, SSH, FTP, RDP, etc.) on each discovered device
  • Device Type Guessing — Attempts to classify devices (Router, Printer, Phone, Server, IoT, etc.) by hostname
  • Gateway & DNS Detection — Reads gateway and DNS server addresses from system configuration
  • SSID Detection — Shows connected Wi-Fi SSID (Windows; Linux via NetworkManager or iwgetid)
  • Import / Export — Save scan results as JSON and reload them later
  • Real-time Results — Devices appear in the table as they are discovered during scanning

Requirements

  • Java 24 (JDK 24)

For the portable version no requirements are required.

Build & Run

./gradlew build
./gradlew run

Or run the generated JAR:

java -jar build/libs/NetAnalyzer-1.0-SNAPSHOT.jar

Linux portable build

Builds a self-contained app with a bundled Java runtime. jpackage can't cross-compile, so run it on Linux (or in a Linux container / WSL):

./gradlew buildLinux
./build/linux/NetAnalyzer/bin/NetAnalyzer

Linux installers

./gradlew buildDeb (Debian, Ubuntu, Mint; needs fakeroot) and ./gradlew buildRpm (Fedora, RHEL, openSUSE; needs rpmbuild) create packages in build/deb and build/rpm. Both install to /opt/netanalyzer and add a menu entry:

sudo apt install ./netanalyzer_1.0_amd64.deb
sudo dnf install ./netanalyzer-1.0-1.x86_64.rpm

Arch Linux

jpackage has no pacman target, so the package is built from the app-image with makepkg (needs base-devel):

./gradlew buildLinux
packaging/arch/makepkg.sh
sudo pacman -U packaging/arch/netanalyzer-1.0-1-x86_64.pkg.tar.zst

Export Format

Scan results are exported in JSON format matching the structure defined in src/main/resources/template.json:

{
  "interfaceName": "Wi-Fi",
  "network": "192.168.1.0/24",
  "gateway": "192.168.1.1",
  "dns": "8.8.8.8, 1.1.1.1",
  "ssid": "MyNetwork",
  "devices": [
    {
      "ipv4": "192.168.1.1",
      "ipv6": "",
      "hostname": "router.home",
      "type": "Router",
      "mac": "00:11:22:33:44:55",
      "vendor": "Cisco",
      "ports": [80, 443]
    }
  ],
  "totalDevices": 1
}

Tech Stack

  • Kotlin (JVM)
  • Gradle 9.0
  • FlatLaf (FlatMacDarkLaf dark theme)
  • Gson (JSON serialization)
  • Java Swing (UI)

About

This is my custom net tool analyzer build with kotlin.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages