QtRecon follows a Model-View-Controller (MVC) architectural pattern to separate concerns and maintain clean code organization.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/bouligo/cuterecon/llms.txt
Use this file to discover all available pages before exploring further.
MVC pattern
The application is structured around three primary layers:Controller
TheController class serves as the central orchestrator of the application. It manages:
- Application initialization and setup
- Communication between models and views
- Job execution and management
- Database operations coordination
- Configuration loading
core/controller.py
View
TheView class handles all UI-related operations, including:
- Rendering the graphical interface
- Managing user interactions
- Updating display elements
- Creating and managing tabs
Database
TheDatabase class provides a static interface to the SQLite database:
core/database.py
QtRecon uses an in-memory SQLite database during runtime, which is exported to disk when you save your workspace.
Data models
QtRecon implements four primary data models that extendQAbstractTableModel to provide data to Qt’s view components:
HostModel
Manages host information and related operations:core/models/hostmodel.py
- Host filtering and searching
- CRUD operations on hosts
- Managing host metadata (OS, hostname, IP, pwned status)
- Creating and updating external tabs
- Host highlighting and color coding
JobModel
Handles job execution and lifecycle management:core/models/jobmodel.py
- Creating and tracking jobs (scans, attached programs)
- Managing job states and status updates
- Handling nmap scan execution
- Processing job completion and errors
CredsModel
Manages credential storage and parsing:core/models/credsmodel.py
- Storing and retrieving credentials
- Parsing credentials from various formats (secretsdump, user:password, user:hash)
- Filtering and sorting credential data
- Associating credentials with hosts
LogModel
Manages application logging:core/models/logmodel.py
- Recording application events
- Storing runtime, info, warning, and critical logs
- Providing log history access
Main components
Configuration management
TheConfig class handles all configuration-related operations:
core/config.py
Job execution
Jobs are executed asQProcess instances and can be:
- Attached: Output is captured in tabs within the application
- Detached: Programs run independently in external terminals
- Privileged: Executed with elevated permissions using graphical sudo
Nmap integration
Nmap scans are managed through theJobModel with special handling:
core/models/jobmodel.py
Data flow
- User interaction → View captures input
- View → Controller processes the request
- Controller → Model updates data
- Model → Database persists changes
- Model → Emits signals to notify views
- View → Updates UI to reflect changes
