ReConan is a Desktop-based OSINT and cyber investigation platform. It aggregates intelligence from multiple public data sources, storing and visualizing relationships between digital entities (such as domains, IPs, emails, and usernames).
Fun Fact: The name ReConan is just a highly sophisticated portmanteau of Reconnaissance and Conan the Detective. Because who better to investigate cyber threats than a brilliant, permanently-young anime detective?
ReConan is designed for digital reconnaissance and relationship analysis. Investigators can use the platform to seamlessly connect the dots between various online identities and infrastructure elements. It serves as an interactive environment to discover, store, and explore entity relationships through a dynamic investigation graph.
- Language: Java
- User Interface: JavaFX
- Graph Visualization: JavaFX SmartGraph
- Database: SQL Server
- Data Access: JDBC
- JSON Parsing: Jackson Databind
- Build Tool: Maven
ReConan follows a clean, layered architecture designed for modularity and maintainability:
graph TD
UI[User Interface - JavaFX / FXML] --> Controller[Controllers]
Controller --> Service[Investigation Service]
Service --> Transform[Transform Registry / OSINT Layer]
Transform --> API[External APIs: Shodan, Hunter.io, etc.]
Controller --> Graph[Graph Manager - SmartGraph]
Controller --> Repo[Repositories]
Graph --> Model[Entity Models]
Repo --> Model
Repo --> DB[(SQL Server)]
- User Interface (JavaFX):
- Uses FXML for layout and CSS for professional styling.
- ViewLoader manages scene transitions and FXML loading.
- Controller Layer:
- Manages UI events and coordinates between the Graph Manager, Data Repositories, and Enrichment Services.
- Implements complex session-to-database persistence logic (ID mapping).
- OSINT & Transform Layer:
- InvestigationService: Orchestrates the data enrichment process.
- TransformRegistry: A modular registry of OSINT adapters (Shodan, Hunter.io, etc.).
- Transforms: Concrete implementations that communicate with external APIs to discover new entities and properties.
- Graph Management:
- Built on JavaFX SmartGraph, providing a dynamic, force-directed graph environment.
- GraphManager encapsulates graph logic, custom styling, and layout physics.
- Data Access Layer (Repositories):
- Uses the Repository Pattern with JDBC for database interactions.
- Handles CRUD operations for investigations, entities, and relationships.
- Entity Models:
- Plain Java Objects (POJOs) representing the core domain:
Investigation,Entity, andRelationship.
- Plain Java Objects (POJOs) representing the core domain:
- Persistence Layer:
- SQL Server database with a relational schema optimized for entity-relationship mapping.
- DatabaseManager handles automated schema initialization and connectivity.
We welcome contributions! Please see our Contributing Guidelines for details on how to fork the repository, set up your .env file, compile the project using mvn javafx:run, and submit Pull Requests.
Thanks to these wonderful people for contributing to ReConan!