github Python re-analysis due

OpenOSINT/OpenOSINT

v2.29.0
github

AI-powered OSINT agent with interactive REPL, MCP server, and CLI. 20 tools. Works with Claude, GPT-4, or local models. For authorized security research only.

maintainer
OpenOSINT
licence
MIT
first seen
2026-06-01
last seen
2026-09-18
releases · 30d
14
short id

Drift inferred · capture-to-capture

tool count over time

06-01 20:33 now
26t
0t
capabilities 16 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 16 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • generate_dorks
  • search_abuseipdb
  • search_breach
  • search_censys
  • search_dns
  • search_domain
  • search_email
  • search_github
  • search_ip
  • search_ip2location
  • search_paste
  • search_phone
  • search_shodan
  • search_username
  • search_virustotal
  • search_whois
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 0ffe217 · analyzer v33 · 2d ago

danger signals3

code evidence vv2.28.2 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 179

filesystem 25

  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/demo/seed_demo.py :24 import shutil
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :37 import shutil
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/media/record_demo.py :25 import shutil
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/cli.py :964 threading.Timer(1.5, lambda: webbrowser.open(url)).start()
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/env.py :40 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/db_path.py :14 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/graph_store.py :23 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/multi_target.py :17 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/pdf_report.py :15 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/playbooks/loader.py :7 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/playbooks/runner.py :9 import shutil
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/repl.py :21 from pathlib import Path
show 13 more
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/session_history.py :15 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/sponsors.py :11 from pathlib import Path
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/utils.py :15 import shutil
  • fs OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :26 import shutil
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/record_web_demo.py :5 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/render_sponsors.py :30 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :35 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_docs_consistency.py :10 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_mcp_server_dotenv.py :36 import shutil
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_playbooks.py :14 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsor_metrics.py :9 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsors.py :9 from pathlib import Path
  • fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_tools.py :52 import shutil

shell / exec 6

  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :38 import subprocess
  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/media/record_demo.py :26 import subprocess
  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_env_loading.py :23 import subprocess
  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_mcp_server_dotenv.py :37 import subprocess
  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsor_metrics.py :7 import subprocess
  • shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsors.py :6 import subprocess

network 25

  • net (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :42 import urllib.request
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/cli.py :68 import socket
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/proxy.py :22 from urllib.parse import urlsplit, urlunsplit
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/generate_dorks.py :13 import urllib.parse
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/scrape_url.py :31 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_abuseipdb.py :17 import aiohttp
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_breach.py :16 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_dorks_live.py :27 import urllib.parse
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_footprint.py :30 import urllib.parse
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_gdelt_geo.py :23 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_github.py :18 import aiohttp
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip.py :16 import requests
show 13 more
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip2location.py :20 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_paste.py :14 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_virustotal.py :25 import requests
  • net OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :27 import socket
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :37 import requests
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_brightdata.py :106 with patch("openosint.tools.search_dorks_live.requests.post", return_value=mock_resp):
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_cloud.py :25 from httpx import ASGITransport, AsyncClient
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_footprint.py :107 "openosint.tools.search_footprint.requests.post", return_value=mock_resp
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_graph_web_routes.py :31 from httpx import ASGITransport, AsyncClient # noqa: E402
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_tools.py :346 with patch("openosint.tools.search_gdelt_geo.requests.get", return_value=mock_response):
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_v2140.py :8 import aiohttp
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :18 from httpx import ASGITransport, AsyncClient
  • net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server_ssrf.py :31 from httpx import ASGITransport, AsyncClient

secrets 19

  • secrets OpenOSINT-OpenOSINT-0ffe217/cloud/config.py :19 GITHUB_CLIENT_SECRET = os.environ.get("GITHUB_CLIENT_SECRET", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/cloud/keys.py :37 raw_key = os.environ.get("CONFIG_ENCRYPTION_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/agent.py :671 api_key=api_key or os.environ.get("ANTHROPIC_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/repl.py :287 self._api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/scrape_url.py :119 api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_abuseipdb.py :89 resolved_key = api_key or os.environ.get("ABUSEIPDB_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_breach.py :107 resolved_key = api_key or os.environ.get("HIBP_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_censys.py :138 api_secret = _k.get("CENSYS_SECRET") or os.environ.get("CENSYS_SECRET", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_dorks_live.py :269 api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_footprint.py :203 api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_github.py :136 token = api_key or os.environ.get("GITHUB_TOKEN") or None
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip.py :38 token = api_key or os.environ.get("IPINFO_TOKEN", "")
show 7 more
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip2location.py :160 resolved_key = api_key or os.environ.get("IP2LOCATION_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_shodan.py :98 resolved_key = api_key or os.environ.get("SHODAN_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_virustotal.py :281 resolved_key = api_key or os.environ.get("VIRUSTOTAL_API_KEY", "")
  • secrets OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :335 expected = os.environ.get("OPENOSINT_SETUP_TOKEN", "").strip()
  • secrets (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :295 token = os.environ.get("GITHUB_TOKEN")
  • secrets (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_env_loading.py :47 "print(json.dumps({'BRIGHTDATA_API_KEY': os.environ.get('BRIGHTDATA_API_KEY')}))\n"
  • secrets (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :559 os.environ["SHODAN_API_KEY"] = backup

database 3

  • db OpenOSINT-OpenOSINT-0ffe217/cloud/db.py :29 import asyncpg # type: ignore
  • db OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/graph_store.py :20 import sqlite3
  • db (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_graph_store_schema.py :10 import sqlite3 # noqa: E402

tool registrations 22

  • search_ip OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :114
  • search_ip2location OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :123
  • search_abuseipdb OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :132
  • search_dns OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :141
  • search_domain OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :149
  • search_virustotal OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :160
  • search_email OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :81
  • search_username OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :92
  • search_breach OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :103
  • search_whois OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :114
  • search_ip OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :125
  • search_domain OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :132
show 10 more
  • generate_dorks OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :143
  • search_paste OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :154
  • search_phone OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :165
  • search_shodan OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :176
  • search_virustotal OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :192
  • search_censys OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :207
  • search_ip2location OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :223
  • search_abuseipdb OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :235
  • search_github OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :247
  • search_dns OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :263

declared dependencies 32

  • mcp@>=1.0.0,<2
  • anthropic@>=0.40.0
  • requests@>=2.31.0
  • python-whois@>=0.9.0
  • rich@>=13.0.0
  • prompt_toolkit@>=3.0.0
  • python-dotenv@>=1.0.0
  • aiohttp@>=3.9.0
  • dnspython@>=2.6.0
  • fastapi@>=0.110.0
  • uvicorn@>=0.29.0
  • sse-starlette@>=1.8.0
show 20 more
  • httpx@>=0.27.0
  • asyncpg@>=0.29.0
  • cryptography@>=41.0.0
  • pyyaml@>=6.0
  • reportlab@>=4.0
  • authlib@>=1.3.0
  • itsdangerous@>=2.1.0
  • pytest@>=7.0
  • pytest-asyncio@>=0.21
  • pytest-cov@>=7.1.0
  • ruff@>=0.1.0
  • shodan@>=1.31.0
  • ollama@>=0.3.0
  • openai@>=1.40.0
  • censys@>=2.2.0
  • PySocks@>=1.7.1
  • aiohttp-socks@>=0.8.4
  • followthemoney@>=4.10.0
  • nomenklatura@>=4.14.0; python_version>=
  • playwright@>=1.40.0

transport_posture 2

  • binds all interfaces (0.0.0.0) OpenOSINT-OpenOSINT-0ffe217/cloud/main.py :77 uvicorn.run("cloud.main:app", host="0.0.0.0", port=port, reload=False)
  • binds all interfaces (0.0.0.0) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :937 app = ws.create_app(host="0.0.0.0")