Islamabad, PakistanThe Security EditionEst. 2023

Muhammad Ayan



Exhibit DPersonal project

IoT Vulnerability Scanner

Home and small-office networks fill up with IoT devices nobody inventories: cameras, plugs and hubs running default credentials and exposed services. General-purpose scanners report ports, not IoT risk.


My role
Sole developer across the full stack: the Python scanning pipeline, the WebSocket streaming layer and the dashboard.
Evidence (stack)
  • Python
  • WebSockets
  • HTML · CSS · JavaScript
  • Network discovery
  • Service fingerprinting

The idea

A scanner shaped around IoT. Instead of a list of open ports, it answers the questions that matter on a network full of devices: what is this device, what is it exposing, and is it still using the password it shipped with?

The pipeline

The Python backend runs four modules in sequence, working in the same way as Nmap:

  1. Discovery. Finds live hosts on the local segment.
  2. Port scanning. Enumerates exposed services on each host.
  3. Fingerprinting. Identifies the device type and vendor from how its services respond.
  4. Weak credentials. Tests exposed login services for default and weak passwords.

Each stage streams progress and findings to the browser over a WebSocket, so the dashboard fills in live rather than waiting for a scan to finish.

The dashboard

A dark-themed HTML/CSS/JS front end shows three things: a topology view of the network, the distribution of vulnerabilities across devices, and a detailed security report for each device.

Only scan networks you own or are authorised to test.

Architecture

  1. Stage 1

    • Discoverylive hosts on the local segment
  2. Stage 2

    • Port scanexposed services per host
  3. Stage 3

    • Fingerprintdevice type and vendor
  4. Stage 4

    • Weak credentialsdefault and weak logins
  5. Report

    • Dashboardtopology · vulnerability distribution · per-device report

WebSocket: live progress, status and findings pushed to the browser.

Fig. D1 — Scan pipeline. Each stage streams progress and findings to the dashboard as it runs.