voidaccess 1.4.3__tar.gz → 1.4.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {voidaccess-1.4.3/voidaccess.egg-info → voidaccess-1.4.5}/PKG-INFO +55 -3
- {voidaccess-1.4.3 → voidaccess-1.4.5}/README.md +54 -2
- {voidaccess-1.4.3 → voidaccess-1.4.5}/pyproject.toml +1 -1
- {voidaccess-1.4.3 → voidaccess-1.4.5/voidaccess.egg-info}/PKG-INFO +55 -3
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/adapters/sqlite.py +14 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/investigate.py +48 -3
- {voidaccess-1.4.3 → voidaccess-1.4.5}/LICENSE +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/analysis/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/analysis/opsec.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/analysis/patterns.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/analysis/temporal.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/auth.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/main.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/admin.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/auth.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/entities.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/export.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/investigations.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/monitors.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/search.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/api/routes/settings.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/auth/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/auth/token_blacklist.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/config.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/crawler/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/crawler/dedup.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/crawler/frontier.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/crawler/spider.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/crawler/utils.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/env.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0001_initial_schema.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0002_add_investigation_status_column.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0002_add_missing_tables.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0003_add_canonical_value_and_entity_links.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0004_add_page_posted_at.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0005_add_extraction_method.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0006_add_monitor_alerts.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0007_add_actor_style_profiles.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0008_add_users_table.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0009_add_investigation_id_to_relationships.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0010_add_composite_index_entity_relationships.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0011_add_page_extraction_cache.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0013_add_graph_status.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0015_add_progress_fields.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0016_backfill_graph_status.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0017_add_user_api_keys.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0018_add_user_id_to_investigations.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0019_add_content_safety_log.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0020_add_entity_source_tracking.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/models.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/queries.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/db/session.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/export/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/export/misp.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/export/sigma.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/export/stix.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/llm_extract.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/ner.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/normalizer.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/pipeline.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/extractor/regex_patterns.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/fingerprint/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/fingerprint/profiler.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/fingerprint/stylometry.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/builder.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/export.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/model.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/queries.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/graph/visualize.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/i18n/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/i18n/detect.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/i18n/query_expand.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/i18n/translate.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/_db.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/alerts.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/config.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/diff.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/jobs.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/monitor/scheduler.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/scraper/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/scraper/scrape.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/scraper/scrape_js.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/search/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/search/circuit_breaker.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/search/search.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/setup.cfg +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/blockchain.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/cache.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/cisa.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/dns_enrichment.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/domain_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/email_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/engines.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/enrichment.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/github_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/gitlab_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/hash_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/historical_intel.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/ip_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/paste_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/pastes.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/rss_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/seed_manager.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/seeds.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/shodan.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/telegram.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/sources/virustotal.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_analysis_opsec.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_analysis_stylometry.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_analysis_temporal.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_api.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_api_monitors.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_blockchain.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_config.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_crawler.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_db.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_dns_enrichment.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_domain_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_email_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_fingerprint.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_github_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_gitlab_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_graph.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_hash_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_i18n.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_ip_reputation.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_llm.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_llm_utils.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_model_singleton.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_monitor.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_pagination.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_paste_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_rss_scraper.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_scrape_js.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_settings.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_sources.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_sources_enrichment_new.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/tests/test_vector.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/async_utils.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/content_safety.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/defang.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/encryption.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/ioc_freshness.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/utils/user_keys.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/vector/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/vector/embedder.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/vector/model_singleton.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/vector/search.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/vector/store.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess/llm.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess/llm_utils.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess.egg-info/SOURCES.txt +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess.egg-info/dependency_links.txt +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess.egg-info/entry_points.txt +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess.egg-info/requires.txt +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess.egg-info/top_level.txt +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/adapters/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/browser.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/__init__.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/configure.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/enrich.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/export.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/commands/show.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/config.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/display.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/main.py +0 -0
- {voidaccess-1.4.3 → voidaccess-1.4.5}/voidaccess_cli/tor_detect.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voidaccess
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.5
|
|
4
4
|
Summary: Dark web OSINT CLI — automated threat intelligence from query to report
|
|
5
5
|
Author: VoidAccess
|
|
6
6
|
License-Expression: MIT
|
|
@@ -65,6 +65,58 @@ Commercial threat intelligence platforms often charge prohibitive annual fees fo
|
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
|
+
## Quick Start
|
|
69
|
+
|
|
70
|
+
### Option A - CLI (no Docker, 30 seconds)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pip install voidaccess
|
|
74
|
+
voidaccess configure
|
|
75
|
+
voidaccess investigate "LockBit ransomware"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Requires local Tor for dark web sources:
|
|
79
|
+
|
|
80
|
+
- https://torproject.org
|
|
81
|
+
- Use `--no-tor` for clearnet-only investigations
|
|
82
|
+
|
|
83
|
+
The CLI stores config in `~/.voidaccess/config.json` and writes results to `~/.voidaccess/results/`.
|
|
84
|
+
|
|
85
|
+
### Option B - Docker (full stack, 5 minutes)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
git clone https://github.com/KatrielMoses/voidaccess
|
|
89
|
+
cd voidaccess
|
|
90
|
+
bash setup.sh
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The Docker stack includes PostgreSQL, Tor, FastAPI, and Next.js.
|
|
94
|
+
|
|
95
|
+
### CLI Commands
|
|
96
|
+
|
|
97
|
+
| Command | Description |
|
|
98
|
+
|---|---|
|
|
99
|
+
| `voidaccess investigate` | Run an investigation |
|
|
100
|
+
| `voidaccess show` | Interactive entity browser |
|
|
101
|
+
| `voidaccess export` | Export STIX/MISP/Sigma/CSV/MD |
|
|
102
|
+
| `voidaccess enrich` | Re-enrich saved results |
|
|
103
|
+
| `voidaccess list` | List saved investigations |
|
|
104
|
+
| `voidaccess status` | Config and API key status |
|
|
105
|
+
| `voidaccess configure` | Setup wizard |
|
|
106
|
+
|
|
107
|
+
### CLI vs Docker
|
|
108
|
+
|
|
109
|
+
| Feature | CLI | Docker |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| Install time | 30 seconds | 5 minutes |
|
|
112
|
+
| Dark web scraping | Requires local Tor | Built-in |
|
|
113
|
+
| Graph visualization | Terminal TUI | sigma.js |
|
|
114
|
+
| Monitoring/alerts | No | Yes |
|
|
115
|
+
| Multi-user | No | Yes |
|
|
116
|
+
| Persistence | SQLite (`~/.voidaccess`) | PostgreSQL |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
68
120
|
## Visual Walkthrough
|
|
69
121
|
|
|
70
122
|
### 1. Intuitive Dashboard
|
|
@@ -213,7 +265,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
213
265
|
|
|
214
266
|
---
|
|
215
267
|
|
|
216
|
-
##
|
|
268
|
+
## Recent Updates
|
|
217
269
|
|
|
218
270
|
- **10 new enrichment sources**: GreyNoise (scanner suppression), AbuseIPDB, Feodo Tracker, C2IntelFeeds, crt.sh, URLScan.io, Wayback Machine, Hybrid Analysis, HaveIBeenPwned, EmailRep
|
|
219
271
|
- **4 new clearnet collection sources**: paste sites, GitHub code search, GitLab code search, and 20 curated RSS security feeds
|
|
@@ -228,7 +280,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
228
280
|
|
|
229
281
|
---
|
|
230
282
|
|
|
231
|
-
##
|
|
283
|
+
## Docker Setup
|
|
232
284
|
|
|
233
285
|
### Prerequisites
|
|
234
286
|
- Docker and Docker Compose
|
|
@@ -19,6 +19,58 @@ Commercial threat intelligence platforms often charge prohibitive annual fees fo
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### Option A - CLI (no Docker, 30 seconds)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install voidaccess
|
|
28
|
+
voidaccess configure
|
|
29
|
+
voidaccess investigate "LockBit ransomware"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Requires local Tor for dark web sources:
|
|
33
|
+
|
|
34
|
+
- https://torproject.org
|
|
35
|
+
- Use `--no-tor` for clearnet-only investigations
|
|
36
|
+
|
|
37
|
+
The CLI stores config in `~/.voidaccess/config.json` and writes results to `~/.voidaccess/results/`.
|
|
38
|
+
|
|
39
|
+
### Option B - Docker (full stack, 5 minutes)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
git clone https://github.com/KatrielMoses/voidaccess
|
|
43
|
+
cd voidaccess
|
|
44
|
+
bash setup.sh
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The Docker stack includes PostgreSQL, Tor, FastAPI, and Next.js.
|
|
48
|
+
|
|
49
|
+
### CLI Commands
|
|
50
|
+
|
|
51
|
+
| Command | Description |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `voidaccess investigate` | Run an investigation |
|
|
54
|
+
| `voidaccess show` | Interactive entity browser |
|
|
55
|
+
| `voidaccess export` | Export STIX/MISP/Sigma/CSV/MD |
|
|
56
|
+
| `voidaccess enrich` | Re-enrich saved results |
|
|
57
|
+
| `voidaccess list` | List saved investigations |
|
|
58
|
+
| `voidaccess status` | Config and API key status |
|
|
59
|
+
| `voidaccess configure` | Setup wizard |
|
|
60
|
+
|
|
61
|
+
### CLI vs Docker
|
|
62
|
+
|
|
63
|
+
| Feature | CLI | Docker |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| Install time | 30 seconds | 5 minutes |
|
|
66
|
+
| Dark web scraping | Requires local Tor | Built-in |
|
|
67
|
+
| Graph visualization | Terminal TUI | sigma.js |
|
|
68
|
+
| Monitoring/alerts | No | Yes |
|
|
69
|
+
| Multi-user | No | Yes |
|
|
70
|
+
| Persistence | SQLite (`~/.voidaccess`) | PostgreSQL |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
22
74
|
## Visual Walkthrough
|
|
23
75
|
|
|
24
76
|
### 1. Intuitive Dashboard
|
|
@@ -167,7 +219,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
167
219
|
|
|
168
220
|
---
|
|
169
221
|
|
|
170
|
-
##
|
|
222
|
+
## Recent Updates
|
|
171
223
|
|
|
172
224
|
- **10 new enrichment sources**: GreyNoise (scanner suppression), AbuseIPDB, Feodo Tracker, C2IntelFeeds, crt.sh, URLScan.io, Wayback Machine, Hybrid Analysis, HaveIBeenPwned, EmailRep
|
|
173
225
|
- **4 new clearnet collection sources**: paste sites, GitHub code search, GitLab code search, and 20 curated RSS security feeds
|
|
@@ -182,7 +234,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
182
234
|
|
|
183
235
|
---
|
|
184
236
|
|
|
185
|
-
##
|
|
237
|
+
## Docker Setup
|
|
186
238
|
|
|
187
239
|
### Prerequisites
|
|
188
240
|
- Docker and Docker Compose
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voidaccess
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.5
|
|
4
4
|
Summary: Dark web OSINT CLI — automated threat intelligence from query to report
|
|
5
5
|
Author: VoidAccess
|
|
6
6
|
License-Expression: MIT
|
|
@@ -65,6 +65,58 @@ Commercial threat intelligence platforms often charge prohibitive annual fees fo
|
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
|
+
## Quick Start
|
|
69
|
+
|
|
70
|
+
### Option A - CLI (no Docker, 30 seconds)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pip install voidaccess
|
|
74
|
+
voidaccess configure
|
|
75
|
+
voidaccess investigate "LockBit ransomware"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Requires local Tor for dark web sources:
|
|
79
|
+
|
|
80
|
+
- https://torproject.org
|
|
81
|
+
- Use `--no-tor` for clearnet-only investigations
|
|
82
|
+
|
|
83
|
+
The CLI stores config in `~/.voidaccess/config.json` and writes results to `~/.voidaccess/results/`.
|
|
84
|
+
|
|
85
|
+
### Option B - Docker (full stack, 5 minutes)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
git clone https://github.com/KatrielMoses/voidaccess
|
|
89
|
+
cd voidaccess
|
|
90
|
+
bash setup.sh
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The Docker stack includes PostgreSQL, Tor, FastAPI, and Next.js.
|
|
94
|
+
|
|
95
|
+
### CLI Commands
|
|
96
|
+
|
|
97
|
+
| Command | Description |
|
|
98
|
+
|---|---|
|
|
99
|
+
| `voidaccess investigate` | Run an investigation |
|
|
100
|
+
| `voidaccess show` | Interactive entity browser |
|
|
101
|
+
| `voidaccess export` | Export STIX/MISP/Sigma/CSV/MD |
|
|
102
|
+
| `voidaccess enrich` | Re-enrich saved results |
|
|
103
|
+
| `voidaccess list` | List saved investigations |
|
|
104
|
+
| `voidaccess status` | Config and API key status |
|
|
105
|
+
| `voidaccess configure` | Setup wizard |
|
|
106
|
+
|
|
107
|
+
### CLI vs Docker
|
|
108
|
+
|
|
109
|
+
| Feature | CLI | Docker |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| Install time | 30 seconds | 5 minutes |
|
|
112
|
+
| Dark web scraping | Requires local Tor | Built-in |
|
|
113
|
+
| Graph visualization | Terminal TUI | sigma.js |
|
|
114
|
+
| Monitoring/alerts | No | Yes |
|
|
115
|
+
| Multi-user | No | Yes |
|
|
116
|
+
| Persistence | SQLite (`~/.voidaccess`) | PostgreSQL |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
68
120
|
## Visual Walkthrough
|
|
69
121
|
|
|
70
122
|
### 1. Intuitive Dashboard
|
|
@@ -213,7 +265,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
213
265
|
|
|
214
266
|
---
|
|
215
267
|
|
|
216
|
-
##
|
|
268
|
+
## Recent Updates
|
|
217
269
|
|
|
218
270
|
- **10 new enrichment sources**: GreyNoise (scanner suppression), AbuseIPDB, Feodo Tracker, C2IntelFeeds, crt.sh, URLScan.io, Wayback Machine, Hybrid Analysis, HaveIBeenPwned, EmailRep
|
|
219
271
|
- **4 new clearnet collection sources**: paste sites, GitHub code search, GitLab code search, and 20 curated RSS security feeds
|
|
@@ -228,7 +280,7 @@ Free with Groq, OpenRouter free models, or Ollama. Under $0.50 per investigation
|
|
|
228
280
|
|
|
229
281
|
---
|
|
230
282
|
|
|
231
|
-
##
|
|
283
|
+
## Docker Setup
|
|
232
284
|
|
|
233
285
|
### Prerequisites
|
|
234
286
|
- Docker and Docker Compose
|
|
@@ -22,6 +22,8 @@ import uuid
|
|
|
22
22
|
from datetime import datetime, timezone
|
|
23
23
|
from typing import Any, Optional
|
|
24
24
|
|
|
25
|
+
from sqlalchemy import text
|
|
26
|
+
|
|
25
27
|
|
|
26
28
|
def init_db() -> None:
|
|
27
29
|
"""Create all tables on the SQLite file if missing. Idempotent."""
|
|
@@ -30,6 +32,18 @@ def init_db() -> None:
|
|
|
30
32
|
engine = get_engine()
|
|
31
33
|
Base.metadata.create_all(engine)
|
|
32
34
|
|
|
35
|
+
# Create page_extraction_cache table if missing
|
|
36
|
+
with engine.connect() as conn:
|
|
37
|
+
conn.execute(text("""
|
|
38
|
+
CREATE TABLE IF NOT EXISTS page_extraction_cache (
|
|
39
|
+
page_hash TEXT PRIMARY KEY,
|
|
40
|
+
entities_json TEXT NOT NULL,
|
|
41
|
+
extracted_at TIMESTAMP NOT NULL,
|
|
42
|
+
expires_at TIMESTAMP NOT NULL
|
|
43
|
+
)
|
|
44
|
+
"""))
|
|
45
|
+
conn.commit()
|
|
46
|
+
|
|
33
47
|
|
|
34
48
|
def _serialize_dt(dt: Optional[datetime]) -> Optional[str]:
|
|
35
49
|
if dt is None:
|
|
@@ -27,7 +27,13 @@ from typing import Any, Optional
|
|
|
27
27
|
import typer
|
|
28
28
|
from rich.console import Console
|
|
29
29
|
|
|
30
|
+
# Import reputation enrichment sources (used in Step 6.2–6.4)
|
|
31
|
+
from sources.domain_reputation import enrich_domain_entities
|
|
32
|
+
from sources.email_reputation import enrich_email_entities
|
|
33
|
+
from sources.hash_reputation import enrich_hash_entities
|
|
34
|
+
|
|
30
35
|
console = Console()
|
|
36
|
+
logger = logging.getLogger(__name__)
|
|
31
37
|
|
|
32
38
|
|
|
33
39
|
# ---------------------------------------------------------------------------
|
|
@@ -333,6 +339,45 @@ async def _run_investigation(
|
|
|
333
339
|
except Exception as ip_exc:
|
|
334
340
|
console.print(f"[grey50]ip_reputation skipped: {ip_exc}[/grey50]")
|
|
335
341
|
|
|
342
|
+
# Step 6.2 — Domain reputation
|
|
343
|
+
try:
|
|
344
|
+
extraction_results = await enrich_domain_entities(
|
|
345
|
+
extraction_results, inv_uuid
|
|
346
|
+
)
|
|
347
|
+
display.update_step(
|
|
348
|
+
"Enriching domains",
|
|
349
|
+
"done",
|
|
350
|
+
f"{sum(1 for e in extraction_results if e.get('entity_type') == 'DOMAIN')} domains enriched",
|
|
351
|
+
)
|
|
352
|
+
except Exception as e:
|
|
353
|
+
logger.debug(f"Domain enrichment: {e}")
|
|
354
|
+
|
|
355
|
+
# Step 6.3 — Hash reputation
|
|
356
|
+
try:
|
|
357
|
+
extraction_results = await enrich_hash_entities(
|
|
358
|
+
extraction_results, inv_uuid
|
|
359
|
+
)
|
|
360
|
+
display.update_step(
|
|
361
|
+
"Enriching hashes",
|
|
362
|
+
"done",
|
|
363
|
+
"",
|
|
364
|
+
)
|
|
365
|
+
except Exception as e:
|
|
366
|
+
logger.debug(f"Hash enrichment: {e}")
|
|
367
|
+
|
|
368
|
+
# Step 6.4 — Email reputation
|
|
369
|
+
try:
|
|
370
|
+
extraction_results = await enrich_email_entities(
|
|
371
|
+
extraction_results, inv_uuid
|
|
372
|
+
)
|
|
373
|
+
display.update_step(
|
|
374
|
+
"Enriching emails",
|
|
375
|
+
"done",
|
|
376
|
+
"",
|
|
377
|
+
)
|
|
378
|
+
except Exception as e:
|
|
379
|
+
logger.debug(f"Email enrichment: {e}")
|
|
380
|
+
|
|
336
381
|
sources_used["enrichment"] = {"status": "ok", "count": len(enrichment_pages)}
|
|
337
382
|
display.update_step("Enriching intelligence", "ok", f"{len(enrichment_pages)} pages added")
|
|
338
383
|
except Exception as exc:
|
|
@@ -367,10 +412,10 @@ async def _run_investigation(
|
|
|
367
412
|
if llm is not None:
|
|
368
413
|
try:
|
|
369
414
|
from voidaccess.llm import generate_summary
|
|
370
|
-
|
|
371
|
-
if
|
|
415
|
+
pages_to_summarize = scraped_pages[:10]
|
|
416
|
+
if pages_to_summarize:
|
|
372
417
|
summary_text = await asyncio.to_thread(
|
|
373
|
-
generate_summary, llm, refined,
|
|
418
|
+
generate_summary, llm, refined, pages_to_summarize, "threat_intel"
|
|
374
419
|
)
|
|
375
420
|
display.update_step("Generating summary", "ok")
|
|
376
421
|
except Exception as exc:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0002_add_investigation_status_column.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0007_add_actor_style_profiles.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0011_add_page_extraction_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0018_add_user_id_to_investigations.py
RENAMED
|
File without changes
|
|
File without changes
|
{voidaccess-1.4.3 → voidaccess-1.4.5}/db/migrations/versions/0020_add_entity_source_tracking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|