314 lines
13 KiB
Markdown
314 lines
13 KiB
Markdown
---
|
|
applyTo: '**'
|
|
---
|
|
- # ForensicTrails - Technical Specification
|
|
- ## Forensic Investigation Documentation System
|
|
- **Version:** 1.0
|
|
- **Target:** Third-semester student project with AI assistance
|
|
- **Status:** Design Specification for Implementation
|
|
- ## 1. Project Overview
|
|
- ### 1.1 Purpose
|
|
- Desktop application for forensic investigators to document case work with:
|
|
- Immutable, timestamped note-taking
|
|
- Evidence tracking with chain of custody
|
|
- Configurable Investigation question framework (Standard: WHO/WHAT/WHEN/WHERE/HOW/WHY/WITH WHAT)
|
|
- Report generation
|
|
- Optional multi-user sync capability
|
|
- ### 1.2 Core Principles
|
|
- **Offline-first**: Must work without network
|
|
- **Simplicity**: Intuitive for solo investigators
|
|
- **Integrity**: Cryptographic Documentation of all data
|
|
- **Court-ready**: All documentation legally admissible
|
|
- **Case-agnostic**: No predefined templates, universal investigation framework
|
|
- ### 1.3 Success Criteria
|
|
- Solo investigator can document case from start to finish
|
|
- Generate PDF report with digital signatures
|
|
- Maintain complete chain of custody
|
|
- Evidence integrity verification via hashes
|
|
- All notes immutable with timestamps (can edit, but edits are documented)
|
|
- ## 2. Technical Architecture
|
|
- ### 2.1 Technology Stack
|
|
-
|
|
```
|
|
Frontend/GUI:
|
|
- Python 3.13+
|
|
- PyQt6 (desktop GUI framework)
|
|
- QtWebEngine (for rich text/markdown rendering)
|
|
|
|
Database:
|
|
- SQLite3 (local storage)
|
|
- SQLCipher (optional encryption)
|
|
- Connection pooling for optional remote PostgreSQL
|
|
|
|
Utilities:
|
|
- hashlib (MD5, SHA256 computation)
|
|
- cryptography (digital signatures, encryption)
|
|
- ReportLab (PDF generation)
|
|
- python-docx (Word export)
|
|
- Pillow (screenshot handling)
|
|
|
|
Deployment:
|
|
- PyInstaller (standalone executable)
|
|
- One build per OS (Windows, Linux, macOS)
|
|
```
|
|
- ### 2.2 System Architecture
|
|
-
|
|
```
|
|
┌─────────────────────────────────────────────┐
|
|
│ PyQt6 GUI Layer │
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
│ │ Note │ │ Evidence │ │ Report │ │
|
|
│ │ Editor │ │ Manager │ │ Generator│ │
|
|
│ └──────────┘ └──────────┘ └──────────┘ │
|
|
├─────────────────────────────────────────────┤
|
|
│ Business Logic Layer │
|
|
│ - Note immutability enforcement │
|
|
│ - Chain of custody tracking │
|
|
│ - Investigation question tagging │
|
|
│ - Timeline generation │
|
|
├─────────────────────────────────────────────┤
|
|
│ Data Access Layer │
|
|
│ - SQLite manager (local) │
|
|
│ - MariaDB connector (optional remote) │
|
|
│ - Encryption wrapper │
|
|
│ - Conflict resolution (for sync) │
|
|
├─────────────────────────────────────────────┤
|
|
│ Storage Layer │
|
|
│ Local: SQLite + File attachments │
|
|
│ Remote (optional): MariaDB │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
- ## 3. Database Schema
|
|
- ### 3.1 Core Tables
|
|
-
|
|
```sql
|
|
-- Cases table
|
|
CREATE TABLE cases (
|
|
case_id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
date_opened TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
lead_investigator TEXT NOT NULL,
|
|
classification TEXT,
|
|
summary TEXT,
|
|
status TEXT DEFAULT 'Active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Notes table (append-only, immutable)
|
|
CREATE TABLE notes (
|
|
note_id TEXT PRIMARY KEY,
|
|
case_id TEXT NOT NULL,
|
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
content TEXT NOT NULL,
|
|
investigator TEXT NOT NULL,
|
|
question_tags TEXT, -- JSON array: ["WHO", "WHAT", etc.]
|
|
hash TEXT NOT NULL, -- SHA256 of content + timestamp
|
|
FOREIGN KEY (case_id) REFERENCES cases(case_id)
|
|
);
|
|
|
|
-- Evidence table
|
|
CREATE TABLE evidence (
|
|
evidence_id TEXT PRIMARY KEY,
|
|
case_id TEXT,
|
|
description TEXT NOT NULL,
|
|
filename TEXT,
|
|
file_size INTEGER,
|
|
md5_hash TEXT,
|
|
sha256_hash TEXT,
|
|
source_origin TEXT,
|
|
received_date DATE,
|
|
received_by TEXT,
|
|
physical_location TEXT,
|
|
notes TEXT,
|
|
status TEXT DEFAULT 'Active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (case_id) REFERENCES cases(case_id)
|
|
);
|
|
|
|
-- Chain of Custody table
|
|
CREATE TABLE chain_of_custody (
|
|
coc_id TEXT PRIMARY KEY,
|
|
evidence_id TEXT NOT NULL,
|
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
action TEXT NOT NULL, -- 'received', 'transferred', 'accessed', 'archived'
|
|
from_person TEXT,
|
|
to_person TEXT,
|
|
location TEXT,
|
|
purpose TEXT,
|
|
signature_hash TEXT, -- Digital signature if needed
|
|
FOREIGN KEY (evidence_id) REFERENCES evidence(evidence_id)
|
|
);
|
|
|
|
-- Attachments table (screenshots, documents)
|
|
CREATE TABLE attachments (
|
|
attachment_id TEXT PRIMARY KEY,
|
|
case_id TEXT NOT NULL,
|
|
note_id TEXT, -- Optional link to specific note
|
|
filename TEXT NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
file_hash TEXT NOT NULL,
|
|
mime_type TEXT,
|
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (case_id) REFERENCES cases(case_id),
|
|
FOREIGN KEY (note_id) REFERENCES notes(note_id)
|
|
);
|
|
|
|
-- Investigation Questions tracking
|
|
CREATE TABLE question_entries (
|
|
entry_id TEXT PRIMARY KEY,
|
|
case_id TEXT NOT NULL,
|
|
note_id TEXT NOT NULL,
|
|
question_type TEXT NOT NULL, -- WHO/WHAT/WHEN/WHERE/HOW/WHY/WITH_WHAT
|
|
entry_text TEXT NOT NULL,
|
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (case_id) REFERENCES cases(case_id),
|
|
FOREIGN KEY (note_id) REFERENCES notes(note_id)
|
|
);
|
|
|
|
-- User settings (for multi-user)
|
|
CREATE TABLE users (
|
|
user_id TEXT PRIMARY KEY,
|
|
username TEXT UNIQUE NOT NULL,
|
|
full_name TEXT NOT NULL,
|
|
role TEXT DEFAULT 'Investigator', -- Investigator/Manager/Admin
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Optional: Task assignments (team mode)
|
|
CREATE TABLE tasks (
|
|
task_id TEXT PRIMARY KEY,
|
|
case_id TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
description TEXT,
|
|
assigned_to TEXT,
|
|
assigned_by TEXT,
|
|
priority TEXT,
|
|
due_date DATE,
|
|
status TEXT DEFAULT 'Open',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (case_id) REFERENCES cases(case_id)
|
|
);
|
|
```
|
|
- ### 3.2 Indexes for Performance
|
|
-
|
|
```sql
|
|
CREATE INDEX idx_notes_case ON notes(case_id);
|
|
CREATE INDEX idx_notes_timestamp ON notes(timestamp);
|
|
CREATE INDEX idx_evidence_case ON evidence(case_id);
|
|
CREATE INDEX idx_coc_evidence ON chain_of_custody(evidence_id);
|
|
CREATE INDEX idx_question_case ON question_entries(case_id, question_type);
|
|
```
|
|
- ## 4. Core Features
|
|
- ### 4.1 Case Management
|
|
- Create new case with minimal metadata
|
|
- List all cases with search (& Filter)
|
|
- Open/close/archive cases
|
|
- Case status tracking
|
|
- ### 4.2 Note-Taking
|
|
- Rich text editor for notes
|
|
- Auto-timestamp on every entry (immutable)
|
|
- Notes can be edited, but each edit is documented (can restore old states)
|
|
- Tag notes with investigation questions
|
|
- Search across all notes
|
|
- Screenshot integration with auto-hash
|
|
- ### 4.3 Evidence Management
|
|
- Add evidence with ID, description, hashes
|
|
- Compute MD5/SHA256 automatically or paste
|
|
- Track physical location (text field)
|
|
- Evidence status (Active/Archived/Destroyed)
|
|
- Link evidence to notes
|
|
- ### 4.4 Chain of Custody
|
|
- Automatic entry on evidence creation
|
|
- Manual entries for transfers/access
|
|
- Immutable CoC log
|
|
- ### 4.5 Investigation Questions Framework
|
|
- Tag any note with: WHO/WHAT/WHEN/WHERE/HOW/WHY/WITH_WHAT
|
|
- configurable questions
|
|
- View organized by question type
|
|
- Timeline view (auto-generated from WHEN tags)
|
|
- Summary view per question
|
|
- ### 4.6 Report Generation
|
|
- PDF export with all case data
|
|
- Sections: Metadata, Notes, Evidence, CoC, Questions
|
|
- Digital signature of report
|
|
- Court-ready formatting
|
|
- Optional DOCX export
|
|
- ### 4.7 Optional: Remote Sync
|
|
- Configure MariaDB connection
|
|
- Push/pull case data
|
|
- Conflict resolution (timestamp-based)
|
|
- Offline-capable (queue sync)
|
|
- ## 5. User Interface Layout
|
|
- ### 5.1 Main Window Structure
|
|
-
|
|
```
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ Menu Bar: File | Case | Evidence | View | Tools │
|
|
├──────────┬──────────────────────────────┬───────────┤
|
|
│ │ │ │
|
|
│ Cases │ Active View Area │ Sidebar │
|
|
│ List │ (Notes/Evidence/Timeline) │ Panel │
|
|
│ │ │ │
|
|
│ - Case 1 │ [Content depends on │ • Case │
|
|
│ - Case 2 │ selected tab below] │ Info │
|
|
│ - Case 3 │ │ • Ques- │
|
|
│ │ │ tions │
|
|
│ [Search] │ │ • Evid- │
|
|
│ │ │ ence │
|
|
│ │ │ │
|
|
├──────────┴──────────────────────────────┴───────────┤
|
|
│ Tab Bar: Notes | Evidence | Questions | Timeline │
|
|
│ | Chain of Custody | Reports │
|
|
└─────────────────────────────────────────────────────┘
|
|
```
|
|
- ### 5.2 Key Views
|
|
- **Notes View:**
|
|
- Chronological log of all notes (immutable)
|
|
- New note entry at bottom
|
|
- Quick tag buttons (WHO/WHAT/WHEN/WHERE/HOW/WHY/WITH_WHAT)
|
|
- or whatever can be configured
|
|
- Screenshot button
|
|
- Evidence reference button
|
|
- **Evidence View:**
|
|
- Table of all evidence items
|
|
- Add/view evidence details
|
|
- CoC view per item
|
|
- **Questions View:**
|
|
- Accordion/expandable sections per question
|
|
- Shows all notes tagged with that question
|
|
- Quick navigation
|
|
- **Timeline View:**
|
|
- Visual timeline of events
|
|
- Generated from WHEN-tagged notes
|
|
- Zoomable, filterable
|
|
- **Chain of Custody View:**
|
|
- Per-evidence CoC log
|
|
- Transfer recording interface
|
|
- **Reports View:**
|
|
- Report templates
|
|
- Generate PDF/DOCX
|
|
- Preview before export
|
|
- ## 6. Implementation Priorities
|
|
- ### Phase 1: Minimum Viable Product (Core Solo Mode)
|
|
- 1. Case creation and listing
|
|
- 2. Note-taking with immutable timestamps
|
|
- 3. Evidence management with hashing
|
|
- 4. Basic Chain of Custody
|
|
- 5. Simple PDF export
|
|
- **Deliverable:** Functional solo investigator tool
|
|
- ### Phase 2: Enhanced Features
|
|
- 1. Investigation questions tagging
|
|
- 2. Questions-organized view
|
|
- 3. Timeline visualization
|
|
- 4. Screenshot integration
|
|
- 5. Advanced PDF report with formatting
|
|
- **Deliverable:** Full-featured documentation tool
|
|
- ### Phase 3: Team & Advanced
|
|
- 1. Multi-user support (local)
|
|
- 2. Task assignment
|
|
- 3. MariaDB remote sync
|
|
- 4. Digital signatures on reports
|
|
- 5. Advanced search and filtering
|
|
- **Deliverable:** Team-capable system
|