IOCForge
Offline threat indicator extraction and normalization for incident responders, threat-intelligence analysts, and OSINT workflows.
Features: extracts IPv4 addresses, domains, HTTP(S) URLs, MD5, SHA-1, and SHA-256 hashes; refangs common hxxp, [.], (.), and [:] notation; deduplicates; exports JSON, CSV, and basic STIX 2.1 Indicator bundles. Does not make network requests, scan hosts, or enrich indicators.
Installation
Python 3.10+:
python -m pip install -e ".[dev]"
Examples
iocforge extract report.txt
iocforge extract report.txt --format csv --output indicators.csv
iocforge extract report.txt --format stix --output indicators.stix.json
cat report.txt | iocforge extract - --include-private
python -m iocforge extract report.txt
Library API
from iocforge import extract, export_json
print(export_json(extract("Observed hxxps://bad[.]example/path and 8.8.8.8")))
Development
python -m pytest -q
ruff check .
python -m build
Security and limitations
- Only process reports you have permission to handle. Reports may contain sensitive URLs or identifiers; review output before sharing.
- No automatic threat verdict: a matched indicator is not proof of malicious activity.
- Domain parsing is heuristic (not Public Suffix List-aware). IPv6, emails, and nested URL artifacts are not supported in v0.1.0.
- URLs containing embedded credentials are skipped. URL fragments are removed.
- By default, non-global IPv4 addresses are excluded;
--include-privateincludes them. - STIX output is a minimal Indicator bundle, not a complete threat-intelligence knowledge model. Consumers should validate it against their own STIX tooling.
- Extracted indicators are never queried or contacted by IOCForge.
Publishing
Choose an available PyPI distribution name (currently configured as iocforge-cli), update project metadata, and configure PyPI Trusted Publishing for your repository. The release workflow publishes only on GitHub Releases.
Copyright © 2026 Noir Stack LLC. Licensed under the Proprietary Software License — Free Use, No Modification.
Metadata
Release files for iocforge-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| iocforge_cli-0.1.0.tar.gz | 6.5 kB | Without provenance | Details for iocforge_cli-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| iocforge_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for iocforge_cli-0.1.0-py3-none-any.whl |
Total release size: 13.6 kB
Release files / iocforge_cli-0.1.0.tar.gz
| Download URL | iocforge_cli-0.1.0.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c8271927691a6962bbcfc810a342066dabc18d0c2861f9b21751adcc55251633
|
|
BLAKE2b-256 checksum How to use checksums |
02cf94aeae85a6efa9e9acee0afd7e4ac41cf9f1238eeb0c46a379faf4bbe08d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / iocforge_cli-0.1.0-py3-none-any.whl
| Download URL | iocforge_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e83c841bac53626e2483bcc0dc371fad7bd53822b06b9b2c0b680c9f5e4129d2
|
|
BLAKE2b-256 checksum How to use checksums |
8b81f171f3b78d13cb9f7137a940b4b76f0cc4a174cd083d0d9e5fd312d86ca9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for iocforge-cli 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.