Cyber Security
Mini-SIEM Log Correlation & Alert-Triage Lab for a College Lab Network (Python/MySQL)
Turn the logs your college lab already writes into one correlated alert queue you can defend line by line
- Python 3
- MySQL 8
- Flask
- +3
Find committed API keys and tokens in repository history, then drive every one to verified rotation
Mapped to your syllabusIGNOU MCA_NEW — MCSP-232 guidelines (2025) · MCSP-232 Project · Semester 4KeyRing: a Secrets-Leak Scanner & Rotation Tracker is an individual, defensive-security project built on a problem every student developer has already created for themselves: passwords, API keys, database URLs and tokens committed into Git repositories. Deleting the file does not help — the secret lives in history forever, in every clone of the repository, and leaked credentials are among the most common root causes of cloud-account misuse.
KeyRing does two things no off-the-shelf tool does together. First, it scans: a Python engine walks the full history of repositories you own (or are authorised to scan), extracts candidates from every diff, and matches them against signature rules — cloud access-key formats, private-key blocks, database connection strings, generic password = assignments — filtered by Shannon entropy to keep false positives low. The findings store never saves the secret itself: only a salted SHA-256 digest, a masked snippet and the commit locator. Second, it tracks: each confirmed finding becomes a rotation ticket — Open, Credential Revoked, Secret Rotated, Verified, Closed — with owner, evidence and timestamps, plus a pre-commit hook that blocks future leaks at commit time and a baseline mode so legacy findings get deadlines instead of alarms.
The bundle ships with demonstration repositories containing only documented example credentials and dummy values, so the entire workflow can be run and defended safely on your own laptop. Python, JavaScript and MySQL are exactly the languages and tools in the IGNOU MCA_NEW curriculum; Flask and Chart.js are labelled industry-standard extras on top.
Syllabus alignment
When a credential ends up in a Git commit — a database password, a cloud access key, a payment-gateway secret — the usual student response is to delete the file and commit again. That fixes nothing: the secret remains in repository history, in every clone and fork, and credential leakage remains one of the most common precursors of account misuse. Manual grepping finds only what the searcher already suspects, working-tree-only scripts miss history entirely, and the raw output of even good open-source scanners is a wall of alerts with no path to closure.
The deeper problem is remediation, not detection: a finding only matters if the credential is revoked, replaced and verified, and there is usually no record that any of that happened. Examiners and employers alike ask the question student projects cannot answer — "you found three leaked keys in June; show me they are dead today". What is needed is a small, explainable toolchain that (1) scans full repository history with a low false-positive rate, (2) never stores the secrets it finds, (3) turns each confirmed finding into a tracked, time-stamped rotation workflow, and (4) prevents new leaks at commit time — all running safely on the developer's own machine and own repositories.
Credentials committed to Git repositories remain recoverable in history forever, and leaked keys are a routine root cause of account misuse. This project builds KeyRing, a tool for the author's own repositories that (1) scans full Git history for credential-shaped strings with signature rules and an entropy filter, (2) stores findings without persisting the secret, (3) drives every confirmed leak through a tracked rotation workflow to verified closure, and (4) prevents new leaks with a pre-commit hook. It follows the Secure Software Development Framework's practice of building security into tooling and produces measurable results: findings inventory, false-positive rate, rotation closure statistics.
Student repositories carry the same cargo as corporate ones: a database password in settings.py, a payment-gateway test key pasted during debugging, a private key committed "temporarily". Version control preserves every version of every file, so deleting a secret in the latest commit changes nothing about clones that already exist. Detection therefore has to work on history, and remediation must be tracked to closure — usually two separate commercial products a student can install but never explain. This project builds both.
git log -p per repository and feeds added lines from the diffs to the rule engine..secretsignore allowlist covers fixtures.In scope
Out of scope (v1)
The project follows an incremental SDLC model over 16 weeks, matching the MCSP-232 expectation that the proposal (with DFD, ER and PERT/Gantt charts) is approved before development begins.
| Phase | Weeks | Activities | Deliverable |
|---|---|---|---|
| Proposal | 1–2 | Problem study, DFD levels 0–2, ER diagram, PERT/Gantt chart, schema sketch, security section; submit proposal to the Regional Centre for approval | Approved MCSP-232 proposal |
| Design | 3–4 | Rule-DSL specification, findings schema with masking design, ticket state machine, dashboard wireframes | Design document |
| Increment 1 | 5–7 | History walker, diff parser, findings store with salted digests | Scan of one demo repo with findings persisted |
| Increment 2 | 8–10 | Signature rules, entropy filter, severity ranking, baseline mode | Tuned engine, false-positive measurement |
| Increment 3 | 11–12 | Rotation ticket workflow, SLA report, pre-commit hook, .secretsignore | End-to-end detect-and-remediate flow |
| Increment 4 | 13 | Dashboard, CSV export, report-generation summary | Complete product |
| Testing | 14 | Unit, property and integration tests; performance run; false-positive re-measurement | Test report |
| Documentation | 15–16 | 100–125-page report, viva preparation, demo rehearsal | MCSP-232 submission |
Testing approach: pytest unit tests per rule with fixture files using documented example credentials; a property test that no digest ever equals a digest of an unsalted fixture; integration tests that clone the demo repositories, run a full scan and assert exact finding counts; hook tests that attempt a leaky commit and assert it is rejected; and a performance run on a 60,000-commit repository to validate throughput. Every rule change re-runs the corpus, so false-positive claims are regression-tested rather than anecdotal.
KeyRing is a four-stage pipeline with a prevention loop, all local:
git log -p --no-renames and parses added lines per commit, recording commit hash, author date and file path; incremental scans remember the last scanned commit so re-scans are cheap.flowchart LR
R[("Repos you own (local clones)")] --> W[History walker]
W -->|added lines| E[Detection engine]
RS[("rules.yaml + entropy filter")] --> E
E -->|dedupe by digest| F[(MySQL findings - masked only)]
F --> T[Ticket workflow]
T --> ST["Open - Revoked - Rotated - Verified - Closed"]
T --> SLA[SLA and closure report]
H[Pre-commit hook] -->|staged diff| E
H -->|block commit| DEV[Developer]
F --> D[Flask dashboard]flowchart TD
U([Developer]) -->|repo path| P21[2.1 Walk commits]
P21 -->|commit diffs| P22[2.2 Parse added lines]
P22 -->|candidates| P23[2.3 Match signature rules]
P23 -->|remaining candidates| P24[2.4 Entropy filter and dedupe]
P24 -->|confirmed findings| P25[2.5 Mask and persist]
P25 --> D1[(D1 Findings)]
P23 --> D2[(D2 Rules)]
P24 --> D2
P25 -->|finding id| UerDiagram
REPO ||--o{ COMMIT : contains
COMMIT ||--o{ FINDING : "yielded"
RULE ||--o{ FINDING : "matched"
FINDING ||--|| TICKET : "has one"
TICKET ||--o{ TICKET_EVENT : "is moved by"
REPO {
int id PK
string name UK
string path
datetime baseline_at
}
COMMIT {
string sha PK
int repo_id FK
datetime authored_at
string author
}
RULE {
string id PK
string name
string pattern_kind
string severity
}
FINDING {
bigint id PK
int repo_id FK
string rule_id FK
string digest_sha256
string masked_snippet
string status
}
TICKET {
bigint id PK
bigint finding_id FK
string owner
date target_date
string status
}
TICKET_EVENT {
bigint id PK
bigint ticket_id FK
string from_status
string to_status
string evidence_link
datetime moved_at
}The security-critical design decision is that the store is safe by construction: a full database dump reveals which findings existed and how they were handled, but not a single usable secret — the masking and salting make the evidence store strictly less sensitive than the repositories it watches.
Module 01
Runs git log -p --no-renames per repository, parses added lines with their commit hash, author date and file path, remembers the last scanned commit for cheap incremental re-scans, and handles repository edge cases such as binary files and huge diffs by size limits.
Module 02
A YAML-defined rule set of signature regexes for known credential formats (cloud access keys, private-key blocks, connection strings, token prefixes) plus a Shannon-entropy-gated generic assignment rule; every match carries a severity, and deduplication by content digest collapses one leaked secret's many commits into one finding.
Module 03
The MySQL schema for repos, commits, rules, findings and tickets, engineered so no secret is ever written: only a per-install-salted SHA-256 digest, a masked snippet showing first and last two characters, and the commit locators needed for remediation.
Module 04
Turns each confirmed finding into a ticket with owner and target date, moves it through Open, Credential Revoked, Secret Rotated, Verified and Closed with an evidence link and timestamp on every transition, and reports days-open and closure statistics per repository.
Module 05
A pre-commit hook that runs the same detection engine over staged changes and rejects the commit with a clear message when a candidate secret is present, honouring a .secretsignore allowlist for test fixtures and documented example keys so legitimate work is not blocked.
Module 06
A Flask and Chart.js dashboard listing findings by repository, rule and severity, the ticket board with days-open, the SLA and closure report, and an exportable summary section with masked snippets only, ready to paste into the project report.
Slide 1
KeyRing — Secrets-Leak Scanner & Rotation Tracker
Slide 2
The Problem: History Keeps Everything
Slide 3
Existing vs Proposed System
Slide 4
Objectives
Slide 5
Technology Stack
Slide 6
System Architecture
Slide 7
Database Design: Safe by Construction
Slide 8
Scan Process — DFD Level 2
Slide 9
Demo — Detect, Block, Rotate
Slide 10
Testing & Results
Slide 11
Security Section
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.
Version control preserves every previous version of every file, so a secret deleted in the latest commit still exists in all earlier commits and in every clone made before the deletion. Only a history-wide scan can inventory what has ever been exposed, which is why my walker reads `git log -p` instead of the working tree.
Signature rules are regexes for known credential formats — cloud access-key prefixes, private-key blocks, connection strings — and are high-confidence. The entropy filter is a statistical gate for generic patterns like `password = something`: it computes Shannon entropy and only reports candidates above the threshold, because a high-entropy string is likely machine-generated while `password = admin` is a fixture.
Everything operates on repositories I own or am authorised to scan, the tool has no network capabilities, and it never validates found credentials against any service — a found secret is treated as compromised and rotated, never tested. It automates the defensive practices the Secure Software Development Framework recommends: verify, remediate and prevent.
+11 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). Secrets-Leak Scanner & Rotation Tracker for Git Repositories (Python/MySQL): MCA Cyber Security project bundle [Educational resource]. https://onlyprojects.online/projects/mca-cyber-secrets-scanner-rotation-tracker
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Cyber Security
Turn the logs your college lab already writes into one correlated alert queue you can defend line by line
Cyber Security
Keep the 180-day CERT-In log trail without keeping your students' personal data inside it
Web Development
Booking, zone-weight rating, AWB tracking, delivery run sheets and cash-on-delivery reconciliation for a tier-2 courier franchise
AI & Machine Learning
Turn Agmarknet's daily wholesale prices into a seven-day forecast and a when-and-where-to-sell advisory
Blockchain
Every hall ticket and marksheet carries a SHA-256 fingerprint anchored in a signed hash registry that verifiers can check without internet
Blockchain
A tamper-evident, hash-linked event ledger that runs the MSMED 45-day clock, computes s.16 interest and tracks disputes to MSEFC referral