├── .env.example
├── .github
├── ISSUE_TEMPLATE
│ └── bug_report.md
└── pull_request_template.md
├── .gitignore
├── .replit
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── README_WEBAPP.md
├── client
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
│ ├── index.html
│ └── manifest.json
├── src
│ ├── App.js
│ ├── components
│ │ ├── AnalysisView.js
│ │ ├── ResultsList.js
│ │ └── SearchForm.js
│ ├── index.css
│ └── index.js
└── tailwind.config.js
├── dotenv.py
├── fix_dependencies.bat
├── fix_linux_dotenv.sh
├── fix_windows_dotenv.bat
├── generated-icon.png
├── main.py
├── osint_assistant.py
├── osint_web_app.py
├── package-lock.json
├── package.json
├── pyproject.toml
├── replit.nix
├── requirements.txt
├── run.sh
├── run_windows.bat
└── uv.lock
/.env.example:
--------------------------------------------------------------------------------
1 | # OSINT Assistant API Keys
2 | # Add your API key here for AI capabilities
3 | PERPLEXITY_API_KEY=your_api_key_here
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Run command '...'
16 | 2. Use query '....'
17 | 3. See error
18 |
19 | **Expected behavior**
20 | A clear and concise description of what you expected to happen.
21 |
22 | **Screenshots**
23 | If applicable, add screenshots to help explain your problem.
24 |
25 | **Environment (please complete the following information):**
26 | - OS: [e.g. Ubuntu 20.04]
27 | - Python Version: [e.g. 3.8.5]
28 | - Tool Version [e.g. 1.0.0]
29 |
30 | **Additional context**
31 | Add any other context about the problem here.
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## Description
2 | Please include a summary of the change and which issue is fixed. Include relevant motivation and context.
3 |
4 | Fixes # (issue)
5 |
6 | ## Type of change
7 | - [ ] Bug fix (non-breaking change which fixes an issue)
8 | - [ ] New feature (non-breaking change which adds functionality)
9 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
10 | - [ ] Documentation update
11 |
12 | ## Checklist
13 | - [ ] My code follows the style guidelines of this project
14 | - [ ] I have performed a self-review of my own code
15 | - [ ] I have commented my code, particularly in hard-to-understand areas
16 | - [ ] I have made corresponding changes to the documentation
17 | - [ ] My changes generate no new warnings
18 | - [ ] Any sensitive API keys or credentials have been removed
19 | - [ ] The .env file has not been committed
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Environment variables
2 | .env
3 |
4 | # Python
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 | *.so
9 | .Python
10 | build/
11 | develop-eggs/
12 | dist/
13 | downloads/
14 | eggs/
15 | .eggs/
16 | lib/
17 | lib64/
18 | parts/
19 | sdist/
20 | var/
21 | wheels/
22 | *.egg-info/
23 | .installed.cfg
24 | *.egg
25 |
26 | # Jupyter Notebook
27 | .ipynb_checkpoints
28 |
29 | # Virtual Environment
30 | venv/
31 | ENV/
32 | env/
33 | virtualenv/
34 |
35 | # IDE files
36 | .idea/
37 | .vscode/
38 | *.swp
39 | *.swo
40 |
41 | # OSINT Assistant output files
42 | osint_data*.json
43 | *_results.json
44 |
45 | # Distribution / packaging
46 | .Python
47 | build/
48 | develop-eggs/
49 | dist/
50 | downloads/
51 | eggs/
52 | .eggs/
53 | lib/
54 | lib64/
55 | parts/
56 | sdist/
57 | var/
58 | wheels/
59 | share/python-wheels/
60 | *.egg-info/
61 | .installed.cfg
62 | *.egg
63 | MANIFEST
64 |
65 | # PyInstaller
66 | # Usually these files are written by a python script from a template
67 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
68 | *.manifest
69 | *.spec
70 |
71 | # Installer logs
72 | pip-log.txt
73 | pip-delete-this-directory.txt
74 |
75 | # Unit test / coverage reports
76 | htmlcov/
77 | .tox/
78 | .nox/
79 | .coverage
80 | .coverage.*
81 | .cache
82 | nosetests.xml
83 | coverage.xml
84 | *.cover
85 | *.py,cover
86 | .hypothesis/
87 | .pytest_cache/
88 | cover/
89 |
90 | # Translations
91 | *.mo
92 | *.pot
93 |
94 | # Django stuff:
95 | *.log
96 | local_settings.py
97 | db.sqlite3
98 | db.sqlite3-journal
99 |
100 | # Flask stuff:
101 | instance/
102 | .webassets-cache
103 |
104 | # Scrapy stuff:
105 | .scrapy
106 |
107 | # Sphinx documentation
108 | docs/_build/
109 |
110 | # PyBuilder
111 | .pybuilder/
112 | target/
113 |
114 | # IPython
115 | profile_default/
116 | ipython_config.py
117 |
118 | # pyenv
119 | # For a library or package, you might want to ignore these files since the code is
120 | # intended to run in multiple environments; otherwise, check them in:
121 | # .python-version
122 |
123 | # pipenv
124 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
125 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
126 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
127 | # install all needed dependencies.
128 | #Pipfile.lock
129 |
130 | # poetry
131 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
132 | # This is especially recommended for binary packages to ensure reproducibility, and is more
133 | # commonly ignored for libraries.
134 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
135 | #poetry.lock
136 |
137 | # pdm
138 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
139 | #pdm.lock
140 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
141 | # in version control.
142 | # https://pdm.fming.dev/#use-with-ide
143 | .pdm.toml
144 |
145 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
146 | __pypackages__/
147 |
148 | # Celery stuff
149 | celerybeat-schedule
150 | celerybeat.pid
151 |
152 | # SageMath parsed files
153 | *.sage.py
154 |
155 | # Environments
156 | .env
157 | .venv
158 | env/
159 | venv/
160 | ENV/
161 | env.bak/
162 | venv.bak/
163 |
164 | # Spyder project settings
165 | .spyderproject
166 | .spyproject
167 |
168 | # Rope project settings
169 | .ropeproject
170 |
171 | # mkdocs documentation
172 | /site
173 |
174 | # mypy
175 | .mypy_cache/
176 | .dmypy.json
177 | dmypy.json
178 |
179 | # Pyre type checker
180 | .pyre/
181 |
182 | # pytype static type analyzer
183 | .pytype/
184 |
185 | # Cython debug symbols
186 | cython_debug/
187 |
188 | # PyCharm
189 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
190 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
191 | # and can be added to the global gitignore or merged into this file. For a more nuclear
192 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
193 | #.idea/
--------------------------------------------------------------------------------
/.replit:
--------------------------------------------------------------------------------
1 | entrypoint = "main.py"
2 | modules = ["nodejs-20", "python-3.11"]
3 |
4 | [nix]
5 | channel = "stable-24_05"
6 |
7 | [unitTest]
8 | language = "python3"
9 |
10 | [gitHubImport]
11 | requiredFiles = [".replit", "replit.nix"]
12 |
13 | [deployment]
14 | run = ["python3", "main.py"]
15 | deploymentTarget = "cloudrun"
16 |
17 | [[ports]]
18 | localPort = 5000
19 | externalPort = 80
20 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to OSINT Assistant
2 |
3 | First off, thank you for considering contributing to OSINT Assistant! It's people like you that make this tool better for everyone.
4 |
5 | ## Code of Conduct
6 |
7 | By participating in this project, you are expected to uphold our Code of Conduct, which is to treat everyone with respect and courtesy.
8 |
9 | ## How Can I Contribute?
10 |
11 | ### Reporting Bugs
12 |
13 | This section guides you through submitting a bug report. Following these guidelines helps maintainers understand your report and reproduce the issue.
14 |
15 | Before creating bug reports, please check the issue list as you might find that the bug has already been reported. When you are creating a bug report, please include as many details as possible.
16 |
17 | **How Do I Submit A Bug Report?**
18 |
19 | Bugs are tracked as GitHub issues. Create an issue and provide the following information:
20 |
21 | * Use a clear and descriptive title
22 | * Describe the exact steps to reproduce the problem with as much detail as possible
23 | * Provide specific examples to demonstrate the steps
24 | * Describe the behavior you observed after following the steps
25 | * Explain which behavior you expected to see instead and why
26 | * Include screenshots if possible
27 | * Include details about your environment
28 |
29 | ### Suggesting Enhancements
30 |
31 | This section guides you through submitting an enhancement suggestion, including completely new features and minor improvements to existing functionality.
32 |
33 | **How Do I Submit An Enhancement Suggestion?**
34 |
35 | Enhancement suggestions are tracked as GitHub issues. Create an issue and provide the following information:
36 |
37 | * Use a clear and descriptive title
38 | * Provide a detailed description of the suggested enhancement
39 | * Provide specific examples to demonstrate how the suggestion would work
40 | * Describe the current behavior and explain which behavior you expected to see instead and why
41 | * Include screenshots if possible
42 |
43 | ### Pull Requests
44 |
45 | * Fill in the required template
46 | * Do not include issue numbers in the PR title
47 | * Follow the style guides
48 | * Update documentation as needed
49 | * End all files with a newline
50 | * Avoid platform-dependent code
51 |
52 | ## Style Guides
53 |
54 | ### Git Commit Messages
55 |
56 | * Use the present tense ("Add feature" not "Added feature")
57 | * Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
58 | * Limit the first line to 72 characters or less
59 | * Reference issues and pull requests liberally after the first line
60 |
61 | ### Python Style Guide
62 |
63 | * Follow PEP 8
64 | * Use 4 spaces for indentation
65 | * Use docstrings for all public modules, functions, classes, and methods
66 | * Keep line length to a maximum of 100 characters
67 | * Use meaningful variable names
68 |
69 | ### Documentation Style Guide
70 |
71 | * Use Markdown for documentation
72 | * Keep documentation updated when you change code
73 | * Include examples when appropriate
74 |
75 | ## Additional Notes
76 |
77 | ### Security
78 |
79 | If you find a security vulnerability, do NOT open an issue. Email the maintainers directly.
80 |
81 | ### API Keys and Credentials
82 |
83 | * Never commit any API keys, tokens, or credentials
84 | * Always use environment variables or configuration files for sensitive information
85 | * Include sample configuration files with placeholders
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 OSINT Assistant Contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OSINT Assistant
2 |
3 | An AI-enhanced OSINT (Open Source Intelligence) tool for gathering, analyzing, and reporting on information from various web sources. This tool leverages the power of Perplexity AI to provide deeper insights and more accurate analysis.
4 |
5 | This project includes both a command-line interface and a full-featured web application for easier interaction.
6 |
7 | ## Features
8 |
9 | - 🔍 **Web Search:** Collect information from multiple sources based on specific queries
10 | - 🧠 **AI-Powered Analysis:** Use Perplexity AI for enhanced content analysis
11 | - 📊 **Entity Recognition:** Identify key people, organizations, and concepts from collected data
12 | - 🔗 **Connection Analysis:** Map relationships between identified entities
13 | - 📈 **Pattern Recognition:** Identify trends and patterns in the collected data
14 | - 📝 **Comprehensive Reporting:** Generate structured reports with visualizations and actionable insights
15 | - 📤 **Data Export:** Save results in JSON format with proper serialization using Pydantic
16 |
17 | ## Installation
18 |
19 | ### Prerequisites
20 |
21 | - Python 3.8+
22 | - pip package manager
23 | - Node.js 14+ and npm (for web application)
24 |
25 | ### Setup
26 |
27 | 1. Clone the repository:
28 | ```bash
29 | git clone https://github.com/AXRoux/OSINT-Assistant.git
30 | cd OSINT-Assistant
31 | ```
32 |
33 | 2. Install dependencies:
34 | ```bash
35 | pip install -r requirements.txt
36 | ```
37 |
38 | 3. Set up your environment variables:
39 | ```bash
40 | cp .env.example .env
41 | ```
42 |
43 | 4. Edit the `.env` file and add your Perplexity API key:
44 | ```
45 | PERPLEXITY_API_KEY=your_api_key_here
46 | ```
47 |
48 | ## Usage
49 |
50 | ### Command Line Interface
51 |
52 | Run a search query:
53 | ```bash
54 | python osint_assistant.py --query "quantum computing advances"
55 | ```
56 |
57 | ### Web Application
58 |
59 | Start the web application:
60 |
61 | #### Linux/Mac
62 | ```bash
63 | bash run.sh
64 | ```
65 | or make it executable first:
66 | ```bash
67 | chmod +x run.sh
68 | ./run.sh
69 | ```
70 |
71 | #### Windows
72 | ```
73 | run_windows.bat
74 | ```
75 |
76 | The web application will automatically:
77 | 1. Install required dependencies
78 | 2. Set up the environment file if not present
79 | 3. Build the React frontend if needed
80 | 4. Start the Flask server
81 |
82 | On Windows, the script will automatically open your browser to http://localhost:5000.
83 | On Linux/Mac, you'll need to open your browser and navigate to http://localhost:5000 manually.
84 |
85 | ### Advanced Options
86 |
87 | Save the results to a file:
88 | ```bash
89 | python osint_assistant.py --query "quantum computing advances" --save
90 | ```
91 |
92 | Specify the number of results to collect:
93 | ```bash
94 | python osint_assistant.py --query "quantum computing advances" --results 15
95 | ```
96 |
97 | Output results as JSON:
98 | ```bash
99 | python osint_assistant.py --query "quantum computing advances" --json
100 | ```
101 |
102 | Override the API key from environment file:
103 | ```bash
104 | python osint_assistant.py --query "quantum computing advances" --api-key "your-api-key"
105 | ```
106 |
107 | ### Command Line Arguments
108 |
109 | | Argument | Short | Description |
110 | |----------|-------|-------------|
111 | | `--query` | `-q` | The search query to investigate |
112 | | `--results` | `-r` | Number of results to collect (default: 10) |
113 | | `--save` | `-s` | Save the collected data to a file |
114 | | `--api-key` | `-k` | Perplexity API key (overrides .env file) |
115 | | `--json` | `-j` | Output results as JSON |
116 |
117 | ## API Key Setup
118 |
119 | This tool uses the Perplexity AI API for enhanced intelligence gathering and analysis. To use this feature:
120 |
121 | 1. Sign up for an account at [Perplexity AI](https://www.perplexity.ai/)
122 | 2. Navigate to the API section to generate an API key
123 | 3. Add the key to your `.env` file or use the `--api-key` command line argument
124 |
125 | Note: The tool will still function without an API key, but will fall back to simulated data rather than real AI-powered analysis.
126 |
127 | ## Data Models
128 |
129 | The tool uses Pydantic models for data validation and serialization:
130 |
131 | - `SearchResult`: Represents a single search result with title, URL, snippet, etc.
132 | - `ContentAnalysis`: Contains analysis of a specific URL including credibility, entities, and sentiment
133 | - `OSINTReport`: The complete report with all collected data and analyses
134 |
135 | ## Contributing
136 |
137 | Contributions are welcome! Please feel free to submit a Pull Request.
138 |
139 | 1. Fork the repository
140 | 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
141 | 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
142 | 4. Push to the branch (`git push origin feature/amazing-feature`)
143 | 5. Open a Pull Request
144 |
145 | ### Development Guidelines
146 |
147 | When contributing to this project, please:
148 |
149 | 1. Ensure code follows PEP 8 style guide for Python code
150 | 2. Write unit tests for new features
151 | 3. Update documentation as needed
152 | 4. Make sure not to commit any API keys or sensitive information
153 | 5. Verify that all tests pass before submitting a PR
154 |
155 | ## Troubleshooting
156 |
157 | ### Windows Users
158 |
159 | #### "No module named 'dotenv'" Error
160 | If you encounter this error when running the application:
161 | ```
162 | ModuleNotFoundError: No module named 'dotenv'
163 | ```
164 |
165 | There are several ways to fix this issue:
166 |
167 | 1. **Run the diagnostic script** (most comprehensive):
168 | ```
169 | fix_windows_dotenv.bat
170 | ```
171 | This script will:
172 | - Diagnose your Python environment
173 | - Try multiple installation methods
174 | - Provide detailed troubleshooting guidance
175 |
176 | 2. **Use the included standalone module**:
177 | No installation required - we've included a standalone `dotenv.py` file directly in the project folder. This will work even if pip fails.
178 |
179 | 3. **Manual installation methods**:
180 | ```
181 | pip install python-dotenv
182 | ```
183 | or
184 | ```
185 | python -m pip install python-dotenv
186 | ```
187 | or
188 | ```
189 | pip install --user python-dotenv
190 | ```
191 |
192 | 4. **Administrator privileges**:
193 | Run Command Prompt as Administrator, then try:
194 | ```
195 | pip install python-dotenv
196 | ```
197 |
198 | 5. **Multiple Python installations**:
199 | If you have multiple Python versions, specify the version:
200 | ```
201 | py -3.9 -m pip install python-dotenv
202 | ```
203 |
204 | #### Browser Not Opening Automatically
205 | When running the application directly with `python osint_web_app.py`, the browser may not open automatically. Use `run_windows.bat` instead to automatically open the browser with the application.
206 |
207 | ### Linux/Mac Users
208 |
209 | #### "No module named 'dotenv'" or "module 'dotenv' has no attribute" Errors
210 | If you encounter either of these errors when running the application:
211 | ```
212 | ModuleNotFoundError: No module named 'dotenv'
213 | ```
214 | or
215 | ```
216 | AttributeError: module 'dotenv' has no attribute 'dotenv_values'
217 | ```
218 |
219 | There are several ways to fix this issue:
220 |
221 | 1. **Run the diagnostic script** (recommended):
222 | ```bash
223 | ./fix_linux_dotenv.sh
224 | ```
225 | or if it's not executable:
226 | ```bash
227 | bash fix_linux_dotenv.sh
228 | ```
229 | This script will:
230 | - Diagnose your Python environment
231 | - Try multiple installation methods
232 | - Check if the installed module has all required functions
233 | - Provide Linux-specific troubleshooting guidance
234 |
235 | 2. **Use the included standalone module**:
236 | No installation required - we've included a standalone `dotenv.py` file directly in the project folder that implements all necessary functions including `dotenv_values`.
237 |
238 | 3. **Manual installation methods**:
239 | ```bash
240 | pip install python-dotenv
241 | ```
242 | or
243 | ```bash
244 | pip3 install python-dotenv
245 | ```
246 | or
247 | ```bash
248 | sudo pip install python-dotenv
249 | ```
250 |
251 | For general dependency issues, you can also run:
252 | ```bash
253 | pip install -r requirements.txt
254 | ```
255 |
256 | ## Security Notes
257 |
258 | ⚠️ **IMPORTANT**: This tool requires API keys to function properly.
259 |
260 | - Never commit your `.env` file with real API keys to GitHub
261 | - Always use the `.env.example` file as a template
262 | - Consider using GitHub Secrets for CI/CD workflows if adding automation
263 |
264 | ## License
265 |
266 | This project is licensed under the MIT License - see the LICENSE file for details.
267 |
268 | ## Disclaimer
269 |
270 | This tool is for educational and research purposes only. Always ensure you comply with relevant laws and regulations when conducting OSINT research. The authors are not responsible for any misuse of this tool.
271 |
--------------------------------------------------------------------------------
/README_WEBAPP.md:
--------------------------------------------------------------------------------
1 | # OSINT Assistant Web Application
2 |
3 | This repository contains both the OSINT Assistant core functionality and a web application interface built with Flask and React.
4 |
5 | ## Project Structure
6 |
7 | - `osint_assistant.py` - Core OSINT functionality
8 | - `osint_web_app.py` - Flask backend server
9 | - `client/` - React frontend application
10 | - `requirements.txt` - Python dependencies
11 |
12 | ## Features
13 |
14 | - 🔍 **Web Search:** Collect information from multiple sources based on specific queries
15 | - 🧠 **AI-Powered Analysis:** Use Perplexity AI for enhanced content analysis
16 | - 📊 **Entity Recognition:** Identify key people, organizations, and concepts
17 | - 🔗 **Connection Analysis:** Map relationships between identified entities
18 | - 📊 **Modern UI:** React and TailwindCSS frontend for easy interaction
19 | - 🌐 **API Access:** RESTful API endpoints for programmatic access
20 |
21 | ## Installation
22 |
23 | ### Prerequisites
24 |
25 | - Python 3.8+
26 | - Node.js 14+ and npm
27 | - pip package manager
28 |
29 | ### Backend Setup
30 |
31 | 1. Install Python dependencies:
32 | ```bash
33 | pip install -r requirements.txt
34 | ```
35 |
36 | 2. Set up your environment variables:
37 | ```bash
38 | cp .env.example .env
39 | ```
40 |
41 | 3. Edit the `.env` file and add your Perplexity API key:
42 | ```
43 | PERPLEXITY_API_KEY=your_api_key_here
44 | ```
45 |
46 | ### Frontend Setup
47 |
48 | 1. Navigate to the client directory:
49 | ```bash
50 | cd client
51 | ```
52 |
53 | 2. Install Node.js dependencies:
54 | ```bash
55 | npm install
56 | ```
57 |
58 | 3. Build the frontend:
59 | ```bash
60 | npm run build
61 | ```
62 |
63 | ## Running the Application
64 |
65 | ### Development Mode
66 |
67 | Run the backend server:
68 | ```bash
69 | python osint_web_app.py
70 | ```
71 |
72 | In a separate terminal, run the React development server:
73 | ```bash
74 | cd client
75 | npm start
76 | ```
77 |
78 | Access the application at http://localhost:3000
79 |
80 | ### Production Mode
81 |
82 | 1. Build the React frontend:
83 | ```bash
84 | cd client
85 | npm run build
86 | ```
87 |
88 | 2. Run the Flask server, which will serve both the API and the built React frontend:
89 | ```bash
90 | python osint_web_app.py
91 | ```
92 |
93 | 3. Access the application at http://localhost:5000
94 |
95 | ## API Documentation
96 |
97 | The web application exposes the following API endpoint:
98 |
99 | ### POST /api/search
100 |
101 | Performs an OSINT search and analysis based on a query.
102 |
103 | **Request Body:**
104 | ```json
105 | {
106 | "query": "your search query",
107 | "num_results": 10,
108 | "api_key": "optional_api_key"
109 | }
110 | ```
111 |
112 | **Response:**
113 | ```json
114 | {
115 | "collected_data": [...],
116 | "analysis_results": {...},
117 | "query_info": {
118 | "query": "your search query",
119 | "results_requested": 10,
120 | "results_found": 3
121 | }
122 | }
123 | ```
124 |
125 | ## Contributing
126 |
127 | Contributions are welcome! Please feel free to submit a Pull Request.
128 |
129 | ## License
130 |
131 | This project is licensed under the MIT License - see the LICENSE file for details.
132 |
133 | ## Disclaimer
134 |
135 | This tool is for educational and research purposes only. Always ensure you comply with relevant laws and regulations when conducting OSINT research.
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "osint-assistant-client",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "react": "^18.2.0",
7 | "react-dom": "^18.2.0",
8 | "autoprefixer": "^10.4.17",
9 | "postcss": "^8.4.35",
10 | "tailwindcss": "^3.4.1"
11 | },
12 | "scripts": {
13 | "start": "react-scripts start",
14 | "build": "react-scripts build",
15 | "test": "react-scripts test",
16 | "eject": "react-scripts eject"
17 | },
18 | "eslintConfig": {
19 | "extends": [
20 | "react-app",
21 | "react-app/jest"
22 | ]
23 | },
24 | "browserslist": {
25 | "production": [
26 | ">0.2%",
27 | "not dead",
28 | "not op_mini all"
29 | ],
30 | "development": [
31 | "last 1 chrome version",
32 | "last 1 firefox version",
33 | "last 1 safari version"
34 | ]
35 | },
36 | "devDependencies": {
37 | "react-scripts": "5.0.1"
38 | },
39 | "proxy": "http://localhost:5000"
40 | }
--------------------------------------------------------------------------------
/client/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
--------------------------------------------------------------------------------
/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
876 |
877 | {% if selected_analysis.connections and selected_analysis.connections|length > 0 %}
878 |
879 |
880 |
881 |
Entity Connections
882 |
883 |
884 |
885 |
886 |
887 |
From
888 |
Relationship
889 |
To
890 |
891 |
892 |
893 | {% for connection in selected_analysis.connections %}
894 |
895 |
{{ connection.from }}
896 |
{{ connection.relationship }}
897 |
{{ connection.to }}
898 |
899 | {% endfor %}
900 |
901 |
902 |
903 |
904 | {% endif %}
905 |
906 |
907 | {% else %}
908 |
909 |
910 |
911 |
912 |
913 | {% if results %}
914 | Select a result to view analysis
915 | {% else %}
916 | Start your intelligence search
917 | {% endif %}
918 |
919 |
920 | {% if results %}
921 | Click on any search result from the list to view detailed analysis and insights.
922 | {% else %}
923 | Enter your search query above to begin gathering open-source intelligence data.
924 | {% endif %}
925 |
OSINT Assistant is a powerful tool for gathering and analyzing open-source intelligence.
966 |
967 |
968 |
Basic Search
969 |
Enter your query in the search box and click "Search" to begin. The tool will gather relevant information from various sources.
970 |
971 |
972 |
973 |
Advanced Options
974 |
Click on "Advanced Options" to customize your search with your own API key or adjust the number of results returned.
975 |
976 |
977 |
978 |
Analysis
979 |
Click on any search result to view detailed analysis including source credibility, sentiment analysis, and entity relationships.
980 |
981 |
982 |
983 |
Theme Toggle
984 |
Use the toggle switch in the header to switch between dark and light modes based on your preference.
985 |
986 |
987 |
988 |
989 |
990 |
991 |
992 |
993 |
994 |
995 |
996 | About OSINT Assistant
997 |
998 |
1001 |
1002 |
1003 |
OSINT Assistant is an AI-enhanced tool designed for intelligence professionals, researchers, and security analysts.
1004 |
1005 |
1006 |
Features
1007 |
1008 |
Web scraping and data collection from multiple sources
1009 |
AI-powered content analysis
1010 |
Source credibility assessment
1011 |
Entity extraction and relationship mapping
1012 |
Sentiment analysis
1013 |
1014 |
1015 |
1016 |
1017 |
Privacy & Security
1018 |
All searches are conducted securely. No personal data is stored permanently. API keys, when provided, are used only for the current session and are not saved.