Cyber Security
NetLens: A Passive Network Traffic Analyser and Visibility Dashboard for a College Computer Lab
Flows, top talkers and scan indicators for the lab's own network — headers only, no blocking, full history
- Python
- Scapy
- MySQL
- +2
Three decoy ports that listen, log every knock, and turn lab scan traffic into charts the lab in-charge can actually read
Mapped to your syllabusKTU 2019 Scheme (2024 scheme for 2024 admits) · CSD 334 Mini Project · Semester 6CampusHoney is a small, honest honeypot for a college computer lab: three Python services that listen on deliberately unused ports (2222, 8022, 8081) of one lab machine, record every connection attempt, and show the collected telemetry on a simple Flask + MySQL + Chart.js dashboard.
A honeypot is a decoy — a system with no real users and no real services, where any connection is by definition interesting. In our lab, ordinary machines never receive connections on port 2222; a device that does is probing, misconfigured, or infected. CampusHoney logs the source IP, source port, targeted port, timestamp and a few bytes of any banner the client sends, aggregates them into daily summaries, and answers questions the lab in-charge currently cannot: Is anyone probing the lab? From where? Which ports? Is it getting worse week to week?
The design is deliberately low-interaction and defensive: the listeners never grant access, never execute anything, never make an outbound connection, and show an honest warning banner instead of pretending to be a real SSH or web server. No credentials are collected and no payloads beyond the first bytes are stored. Deployment needs written permission from the lab in-charge, runs only on the lab's own VLAN, and the whole project fits a 6-week KTU mini project for a team of three: one member builds the listeners, one the storage and aggregation, one the dashboard and reports. For a beginner team it covers networking, databases and web development in one defensible package.
Syllabus alignment
A college computer lab has no way to observe, record or analyse the probing and scan traffic that reaches it. The department firewall's logs sit in the server room and cover only WAN-edge blocking, so activity inside the lab segment — a misconfigured device, a machine running unwanted software, or outside probes that pass the firewall — is invisible. There is no history, so no question about past activity can be answered, and the lab committee has no evidence when it asks for security tooling.
What is needed is a low-cost, low-risk sensor built by the department itself: a decoy service on the lab's own network that safely attracts and records connection attempts, a persistent store of that telemetry, and a simple dashboard that turns it into answers — all without exposing any real service, granting any access, collecting any credentials, or requiring any security expertise to operate.
College lab networks are scanned constantly — by misconfigured devices, curiosity, and automated internet background noise — and the college has no record of any of it. CampusHoney is a low-interaction honeypot and telemetry dashboard built for one lab: three Python listeners on unused ports log every connection attempt into MySQL, a Flask dashboard charts connections per hour, top source IPs and most-targeted ports, and a weekly summary goes to the lab in-charge. Everything is logged, nothing is exposed: the honeypot grants no access and makes no outbound connections.
Our lab has 60 machines behind a college firewall. When the firewall occasionally blocks an address, nobody knows whether the lab was being probed from outside or a lab machine was misbehaving. Commercial security appliances are out of budget, and the department has no visibility tool of its own. A honeypot is the cheapest possible sensor: a machine that offers nothing, so every connection it sees is a signal.
socket library with threads handles the listeners; MySQL and Flask are already taught in CSL 333 and CST 463. A quiet college lab sees at most a few hundred connections a day — trivially within reach of this stack.In scope
Out of scope (v1)
Because the team is beginner-level and the slot is a 6-week KTU mini project with at least two reviews and a product demo, we use a simple linear (waterfall) model with weekly guide reviews — each stage finishes before the next begins, and every week produces something to show.
| Week | Stage | Activities | Deliverable at review |
|---|---|---|---|
| 1 | Study & permissions | Learn socket programming basics; write the permission note and lab notice; finalise which ports and what to log | Permission note + requirement list |
| 2 | Listener module | Build and test the three listeners (threads, timeouts, byte cap, banner) | Listeners logging to console/CSV |
| 3 | Storage | MySQL schema, insert pipeline, retention purge, nightly aggregation jobs | Events + summaries in MySQL |
| 4 | Dashboard | Flask login, Chart.js graphs, filterable table, CSV export | Working dashboard v1 |
| 5 | Testing & reports | Functional tests from an authorised lab machine; unit tests for aggregation; weekly PDF generator | Test-case table + PDF report |
| 6 | Documentation & demo | Final report, PPT, rehearsed product demo for the 3-member panel | Report + demo |
Testing approach: functional black-box tests executed from an authorised second lab machine — telnet and curl connections to each decoy port with the lab in-charge present — verifying every event row; unit tests (pytest) for the aggregation queries using seeded data; boundary tests (listener port already in use, database down, oversised client input) recorded in a standard test-case table (ID, input, expected, actual, status).
CampusHoney has three small tiers arranged so that no component depends on another being up: the listeners buffer locally if MySQL is briefly unavailable, and the dashboard reads whatever is in the database.
flowchart LR
P(["Any device probing the lab VLAN"]) -->|"TCP connect to 2222 / 8022 / 8081"| L["Listener process (Python threads)"]
L -->|"metadata row: IPs, ports, time, byte cap"| Q["Local buffer queue"]
Q --> DB[("MySQL: events, daily summaries")]
DB -->|"nightly aggregate"| AGG["Aggregation job"]
DB -->|"purge > 30 days"| RET["Retention job"]
DB --> FLASK["Flask dashboard (login)"]
FLASK --> CH["Chart.js views + CSV"]
FLASK --> PDF["Weekly PDF summary"]
LC(["Lab in-charge"]) -->|"reads, filters, exports"| FLASKerDiagram
LISTENER_CONFIG ||--o{ CONNECTION_EVENT : "logged by"
CONNECTION_EVENT }o--o| DAILY_SUMMARY : "counted in"
USER ||--o{ SESSION_LOG : "uses"
LISTENER_CONFIG {
int id PK
int port
string mode "banner | page | silent"
boolean enabled
}
CONNECTION_EVENT {
bigint id PK
int listenerId FK
string sourceIp
int sourcePort
datetime connectedAt
int bytesRead
string excerpt "max 128 bytes"
}
DAILY_SUMMARY {
int id PK
date summaryDate
int listenerPort
int totalConnections
int uniqueSources
string topSourceIp
}
USER {
int id PK
string email UK
string passwordHash
string role
}
SESSION_LOG {
int id PK
int userId FK
datetime loginAt
string ipAddress
}flowchart TD
A["TCP accept on decoy port"] --> B{"Listener mode?"}
B -->|banner| C["Send honest warning banner, read up to 128 bytes"]
B -->|page| D["Send static 'under maintenance' page"]
B -->|silent| E["Accept and close immediately"]
C --> F["Write event row (metadata only)"]
D --> F
E --> F
F --> G["Close socket — never authenticate, never execute, never connect out"]The guiding rule of the whole design sits in the last box: the honeypot's response to any connection is a fixed, harmless output, so there is no code path that grants access, runs input, or dials another host.
Module 01
One Python process running three threaded TCP servers on ports 2222, 8022 and 8081: the banner listener sends the honest honeypot warning and reads at most 128 bytes; the page listener returns a fixed static HTML page; the silent listener accepts and closes, catching pure port-probes. Handles per-connection timeouts, caps concurrent connections to 20, writes each attempt to a bounded in-memory queue, and stays alive (and logs the fact) if the database is briefly unreachable.
Module 02
The MySQL schema (connection events, daily summaries, listener config, users, session log), the queue-drain writer that batches inserts, the nightly aggregation job that computes per-day totals, unique sources and top ports per listener, and the 30-day retention purge that keeps summaries but deletes raw events. Includes pytest unit tests for every aggregation query against seeded fixtures, so dashboard numbers are provably correct.
Module 03
The Flask application: session login for the lab in-charge, Chart.js charts (connections per hour, per day, top targeted ports, top source IPs), a filterable event table (date range, port, source), CSV export of any current view, and the one-page weekly PDF summary generated with a Python reporting library. Also displays the system status of each listener so a stopped decoy is visible immediately.
Slide 1
CampusHoney — Honeypot Telemetry for the College Lab
Slide 2
What Is a Honeypot?
Slide 3
Problem Statement
Slide 4
Proposed System
Slide 5
Ethics by Design
Slide 6
Technology Stack
Slide 7
Architecture
Slide 8
Data Design
Slide 9
Modules & Team Split
Slide 10
Demo & Testing
Slide 11
Results & Weekly Summary
Slide 12
Conclusion & Future Scope
Bullets, speaker notes and the .pptx · ₹2,000
Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.
A honeypot is a decoy system with no real users and no legitimate services, so any connection it receives is suspicious by definition. Low-interaction means it emulates only a thin surface — here, a fixed banner, a static page and an accept-and-close socket — instead of a full operating system with exploitable services. Nothing that connects to CampusHoney can log in, run code or use it as a stepping stone, which is exactly the property that makes it safe to run in a college lab.
Because nothing legitimate ever talks to those ports: 2222, 8022 and 8081 host no real service, appear in no application's configuration, and aren't advertised anywhere. On a quiet lab VLAN, a connection to a port that offers nothing is either a port scan, a misconfigured device, or a machine running unwanted software — all three are worth recording. That's the core honeypot insight from The Honeynet Project: a system that offers no service generates no background noise, so its signal-to-noise ratio is near perfect.
An IDS watches real traffic against a rule base and raises alerts when patterns match, so it needs rules, tuning and generates false positives. A honeypot needs no rules at all — the decoy itself defines the signal, because every connection is an event. They complement each other: the IDS sees conversations about real services, the honeypot sees direct probes of nothing. In our project the honeypot was chosen precisely because a beginner team can deploy it correctly without a tuning effort an IDS would demand.
+12 more questions, with answers
Unlocks with the project · ₹2,000
Unlock for ₹2,000What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.
Unlocks with the project · ₹2,000
Unlock for ₹2,000How to study it, adapt it and walk your examiner through it, step by step.
Unlocks with the project · ₹2,000
Unlock for ₹2,000OnlyProjects. (2026). CampusHoney: A Low-Interaction Honeypot and Telemetry Dashboard for the College Lab Network: B.Tech / B.E. Cyber Security project bundle [Educational resource]. https://onlyprojects.online/projects/btech-cyber-campus-honeypot-telemetry-lab
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Cyber Security
Flows, top talkers and scan indicators for the lab's own network — headers only, no blocking, full history
Cyber Security
Decoy files and file-system watchers that spot mass-modification behaviour in seconds and raise an alert a human can act on
Mechanical Engineering
A human-powered spiked-roller dehusker for small coconut growers around Pollachi — designed, fabricated and tested for ₹ under 20,000
Aerospace / Aeronautical
Build a subsonic test tunnel on a student budget, then trace lift and drag on a 3D-printed NACA 0012 against theory
Agricultural Engineering
Irrigates vegetable beds by soil-moisture thresholds instead of habit, and proves every litre with a flow meter
Artificial Intelligence & Machine Learning
Forecasts kharif yield for Karnataka districts from six decades of ICRISAT district data and tells extension officers which crops look safe this season