mirror of
https://github.com/nox-project/nox-framework.git
synced 2026-06-08 16:07:17 +00:00
14 KiB
14 KiB
Changelog
All notable changes to NOX are documented here.
[1.0.4] — 2026-04-22
Engine
- Fixed:
_build_ssl_context— custom TLS context had zero CA certificates loaded, causingSSLCertVerificationErroron all HTTPS connections. CA bundle now loaded viacertifiwithload_default_certs()fallback. - Fixed:
_NOISE_REin reporting —ssl.,aiohttp.,asyncio.were substring-matched, silently zeroing legitimate emails and domains (e.g.user@ssl.example.com). Patterns now anchored to start-of-string or whitespace. - Fixed:
COMBO_REinScrapeEngine— multiline greedy match produced credentials with embedded newlines in email/password fields. Pattern now excludes newlines from both capture groups. - Fixed:
_in_flightdict inAvalancheScanner— entries were never removed after processing, causing unbounded memory growth on deep scans. Entry is now popped in thefinallyblock after the future resolves. - Fixed:
DorkingEngine.__init__—ProxyManager.get_proxies()was called eagerly on everyOrchestratorinstantiation, triggering a proxy fetch and OPSEC warning even for local-only commands (--crack,--list-sources,--analyze). Proxy fetch is now lazy. - Fixed:
ScrapeEngine._fetch_content— IntelX paste content fetch usedDB.get_key("intelx")which does not readapikeys.json. Replaced withVault.get("INTELX_API_KEY")for consistent key resolution. - Fixed:
AsyncSource._recandRiskEngine.score— pluginconfidencevalues were stored inNoxSourceProvider._confidencebut never transferred toRecord.source_confidence. All 124 plugin records received a flat0.5confidence regardless of their declared value._rec()now injectsself._confidenceinto the record;RiskEngine.score()usesrecord.source_confidenceas fallback when the source is not in_SRC_CONFIDENCE. - Fixed:
ConfigManager.get_key—Noneresults were cached, preventing env vars set after the first lookup from being detected in the same session. Only positive values are now cached. - Fixed: Recursive Avalanche Engine — identifiers extracted from paste content (
paste["patterns"]) were not being harvested as pivot seeds. Allscrape_res["pastes"]pattern matches are now fed into_extract_ids_from_text.
Sources
- Fixed:
circl_hashlookup— endpoint hardcoded to/lookup/md5/{target}butinput_type=hashaccepts SHA1/SHA256. SHA1 and SHA256 backup endpoints added; engine now routes each hash type to the correct path. - Updated:
crt_sh—reliability_scorelowered from 5 to 3,is_volatile=trueadded to reflect documented intermittent availability.
[1.0.3] — 2026-04-15
Engine
- Fixed: Recursive Avalanche Engine — identifiers extracted from paste content (
paste["patterns"]) were not being harvested as pivot seeds. Bare emails and other identifiers found in IntelX paste bodies that lacked a:passwordseparator were silently dropped from the pivot queue. Allscrape_res["pastes"]pattern matches are now fed into_extract_ids_from_textand reinjected consistently withcredentials,telegram, anddork_misconfigs.
[1.0.2] — 2026-04-14
Sources
- Fixed:
misp_search—MISP_URLadded toapi_key_slotsso the instance base URL is resolved at runtime;health_check_urlcorrected from unresolvable placeholder tohttps://misp.local - Fixed:
threatconnect_search— removed unresolvable{TC_SIGNATURE}HMAC placeholder from theAuthorizationheader;reliability_scorelowered to2,is_volatileset totrue - Fixed:
spycloud_breach— endpoint corrected frombreach/data/emailstobreach/catalog/emails(standard breach lookup tier) - Fixed:
duckduckgo_api— primary instance updated tosearch.sapti.me; 5 backup SearXNG instances added tobackup_endpoints(now consumed by the engine) - Fixed:
gravatar— endpoint now MD5-hashes the email before URL substitution via newquery_transform: md5_lowerfield; raw email was returning 404 on every query - Replaced:
bgpview_ip→ripestat_ip(RIPE Stat prefix-overview API) — BGPView free API decommissioned January 2025; RIPE Stat is free, keyless, and stable (reliability_score: 5) - Fixed:
twitter_v2— markedis_volatile=true,confidencelowered to0.1; free-tier bearer tokens receive HTTP 403 since February 2024 - Fixed:
fofa_info—qbase64parameter now receivesbase64(domain="<target>")viaquery_transform: fofa_domain; raw domain was producing malformed queries - Fixed:
pipl_search— Pipl shut down public REST API in Q3 2024;reliability_scorelowered to2,confidenceto0.3,is_volatile=true - Fixed:
spyonweb— API confirmed unreachable;reliability_scorelowered to1,confidenceto0.1,is_volatile=true - Fixed:
hudsonrock_osint—is_volatile=true;rate_limitraised from5.0to30.0to respect Cavalier API throttling (~10 req/hour free tier) - Fixed:
mailboxlayer,numverify,ipstack,ipinfodb— endpoints andhealth_check_urlmigrated fromhttp://tohttps://; API keys were being transmitted in cleartext before the server-side redirect - Added:
xposedornotplugin (free, public breach analytics) - Added:
MISP_URLto service registry andapikeys.json— back-filled automatically on first run after upgrade - Source count: 123 → 124
Config
- Fixed: Duplicate
xposedornotentry removed fromSERVICE_REGISTRYinconfig_handler.py
Engine
- Fixed:
_parse_retry_afterhelper added —int()on an HTTP-dateRetry-Afterheader raisedValueError, causing the retry loop to abort as a hard failure; all 5 call sites in_get,_post,Session.get, andSession.postupdated - Fixed:
_random_headers—Sec-CH-UAClient Hints were emitted even when a Firefox UA was passed via theextraoverride; guard now evaluates the finalUser-Agentafter overrides are applied - Fixed:
HashEngine._hashmob— Hashmob API v2 changed request field from"hash"to"hashes"(array) and response schema from{found, result}to{data: [{plaintext}]} - Fixed:
DeHashEngine— both_lookupand the sync fallback were calling the deprecated/search(v1) endpoint; updated to/v2/search - Fixed:
DorkEngine.run— results were labelled with the requested engine name (google/bing/ddg) instead ofSearXNGwhich is the actual backend; the 3× request multiplication (one pass per engine name, all hitting the same SearXNG pool) is eliminated - Fixed:
DB.close()— background event loop was stopped but never closed, leaving the loop object open on process exit - Fixed:
NoxSourceProvider._fetch—backup_endpointsdefined in source plugins were parsed but never consumed; primary endpoint failure now falls through to backups in order - Fixed:
_local_crack_sync_blocking—hashlib.md5/sha1now called withusedforsecurity=Falseto prevent hard crash on FIPS-enabled systems (RHEL 9, hardened Kali); Python 3.8 compat guard included
Codebase
- All internal tracking comments replaced with clean prose throughout
nox.py,build_sources.py, and all helper modules
Build
BUILD_DATEupdated to2026-04-14pyproject.tomlversion bumped to1.0.2;requestsminimum pin aligned to>=2.32.3
[1.0.1] — 2026-04-13
Sources
- Removed:
cit0day(HTML fingerprint challenge, no JSON response),vigilante_pw(redirects to dehashed.com),scylla_sh_search(domain parked, permanently unreachable) - Restored:
proxynova_comb(live, returns valid JSON — was incorrectly removed) - Fixed:
leak_lookupnow requires API key (LEAK_LOOKUP_API_KEY) — provider removed unauthenticated access - Fixed:
intelx_searchtwo-phase poll implemented — plugin previously submitted the search job but never polled for results, returning 0 records for all queries - Fixed:
hudsonrock_osintmissingUser-Agentheader added — endpoint returns 403 without a browser UA - Removed:
HASHES_API_KEYregistry entry — hashes.org shut down in 2023;HASHES_COM_API_KEYis the correct active slot - Added:
LEAK_LOOKUP_API_KEYto service registry
Engine
- Fixed:
bypass_requiredfield in source plugins now enforced at runtime — sources declaring["cloudflare"]bypass are skipped whencurl_cffiis absent (previously the field was parsed but never read) - Fixed: Guardian proxy auto-fetch updated to ProxyScrape v3 API (v2 deprecated Q1 2026);
proxy-list.downloadreplaced withproxiflyfree list
Dependencies
- Updated:
requests>=2.32.3(CVE fixes)
README
- Source count updated: 123 active plugins
Dependencies
- Updated:
aiohttpminimum pin raised to>=3.13.5(connection-pool stability fixes under high concurrency) - Added:
zstandard>=0.23.0— enables native zstd decompression in aiohttp for Cloudflare/Fastly CDN responses
Engine
- Updated:
Accept-Encodingheader now includeszstd(gzip, deflate, br, zstd) to match Chrome 124+ behaviour
[1.0.1] — 2026-04-11
Sources
- Added 9 new sources:
proxynova_comb(COMB breach search, free),shodan_internetdb(IP intel, free),circl_hashlookup(NSRL hash lookup, free),ipapi_is(IP geolocation, free),threatfox(abuse.ch IOC database),urlhaus(abuse.ch malware URLs),malwarebazaar(abuse.ch hash lookup),fullhunt_subdomains(attack surface),netlas_search(internet scanner) - Removed 7 dead sources:
threatcrowd_email,threatcrowd_domain(DNS dead),spyse_domain,spyse_ip(API shut down),hashes_org(DNS dead),leakstats_pw(DNS dead),checkleaked(endpoint gone) - Fixed:
dehashedendpoint migrated from/searchto/v2/search - Fixed:
hudsonrock_osintendpoint corrected tosearch-by-emailwithinput_type: email(wassearch-by-loginwithinput_type: username) - Fixed:
scylla_sh_searchmigrated from deadscylla.shto activescylla.so - Fixed:
emailrep_ionow requires API key (EMAILREP_API_KEY) — free unauthenticated tier removed by provider - Fixed:
duckduckgo_apirepurposed from dead DDG Instant Answer API to SearXNG JSON search
Engine
- Fixed: POST 429
Retry-Aftercap was 4s (should be 30s, matching GET path) - Fixed: Linear retry backoff replaced with exponential backoff + jitter in all 4 retry paths (
_get,_post,Session.get,Session.post) - Fixed:
--reset-sourcesnow removes orphaned plugins from~/.nox/sources/in addition to copying new ones - Fixed: DDG HTML scraper replaced with SearXNG JSON API across all call sites — DDG HTML endpoint bot-blocked since 2025
- Fixed: SearXNG instance pool updated:
searx.be(403),search.bus-hit.me(DNS dead),searxng.site(SSL error) replaced with 6 active instances; pool extracted to module-level_SEARX_INSTANCESconstant - Fixed: All 11 dead paste site APIs removed from
ScrapeEngine.PASTE_SITES; paste intelligence now routed through SearXNG dorks and IntelX
WAF Resilience
- Updated: User-Agent pool updated to Chrome/135, Firefox/136, Edge/135 (was Chrome/131, Firefox/133)
- Added:
Sec-CH-UA,Sec-CH-UA-Mobile,Sec-CH-UA-PlatformClient Hints headers for Chromium-based UAs - Fixed:
_CH_UA_MAPordering — Edge UA now correctly gets"Microsoft Edge"brand (was getting"Google Chrome"due to dict iteration order) - Fixed:
_search()sync method no longer passesuse_cloudscraper=Trueto SearXNG JSON API calls
Hash Cracking
- Removed 6 dead/paywalled cracker APIs: nitrxgen (DNS dead), hash.help (DNS dead), hashkiller (403), hashes.com free path (404), md5decrypt (403), cmd5 (paywalled — returns
CMD5-ERROR:-1for all hashes) - Added: Local rockyou wordlist as primary crack path (no external calls, no rate limits, no data leakage)
- Added:
hashes.comkeyed API as external fallback (HASHES_COM_API_KEY)
Dependencies
- Added:
brotli>=1.1.0— required for aiohttp to decompressbr-encoded responses
Config
- Added 7 new API key slots:
EMAILREP_API_KEY,HASHES_COM_API_KEY,THREATFOX_API_KEY,URLHAUS_API_KEY,MALWAREBAZAAR_API_KEY,FULLHUNT_API_KEY,NETLAS_API_KEY
[1.0.0] — 2026-04-02
Initial Release
- 124 Pydantic v2-validated JSON source plugins across breach, network, OSINT, and threat-intel categories
- Fully async execution engine (
asyncio+aiohttp) with JA3 TLS fingerprinting and per-request jitter --autoscanpipeline: breach scan → recursive identity pivot (depth 2) → Google/DDG dorking → paste/Telegram scraping--fullscan: breach scan + pivot only--scan/ REPLscan: breach sources only- Guardian Proxy Engine: automatic proxy rotation with fail-safe kill-switch
- Risk scoring engine (0–100) with time-decay, source confidence weighting, persistence multipliers, and HVT detection
- Recursive Avalanche Engine: every discovered asset re-injected as a new scan seed across breach, dork, and scrape concurrently
- Union-Find identity clustering across all breach records
- Forensic PDF/HTML/JSON/CSV/Markdown reporting with Executive Summary dashboard
- Hash identification and multi-engine cracking (dictionary + mutations + online rainbow tables)
- Deep password strength analysis with entropy, leet-speak detection, and crack-time estimates
- Interactive REPL with full feature parity with the CLI
- Full audit logging: all scan events mirrored to
~/.nox/logs/nox.log - Isolated
.debpackaging for Kali Linux (PEP 668 compliant — zero system pollution) ~/.config/nox-cli/apikeys.jsoncredential store (chmod 0600)