
Strumento Python multi-threaded per interrogare l'API FOFA, estrarre campi personalizzati (IP, porta, certificato, TLS, ecc.), deduplicare i risultati e riprendere le ricerche interrotte.
Un potente strumento Python multi-thread per interrogare l'API FOFA (Fofa.so), estrarre campi selezionati e salvare risultati unici con formattazione intelligente.
ip, port, title, cert.*, tls.*, …)domains_*.txt, ips_*.txt)list mostra tutti i campi validi)raw_input – facilmente portabile a Python 3)requestsInstalla la dipendenza:
pip install requests
🔧 Configurazione
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 Utilizzo
Esegui lo script:
python fofa_searcher.py
Ti verranno richiesti interattivamente i seguenti dati:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
Ogni pagina restituisce fino a SIZE_DEFAULT risultati.
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
Digita list per vedere tutti i campi validi (base, certificato, TLS).
Tutti i risultati vengono salvati in OUTPUT_DIR con un nome di file descrittivo, es. results/domains_example_com_20250315_143022.txt
📂 Esempi di Output
Campo singolo – ben etichettato:
IP: 93.184.216.34
Port: 443
Title: Example Domain
Campi multipli – formato compatto:
93.184.216.34 | Port:443 | [Example Domain] | {US}
Campi certificato / TLS – etichette chiare:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 Campi Validi
Lo strumento supporta tutti i campi FOFA comuni più i campi certificato (cert.) e TLS (tls.).
Campi di base (elenco parziale)
ip, port, protocol, base_protocol, host, domain, title, server, country, region, city, os, asn, org, banner, header, body, cname, icp, jarm, icon, fid, status_code, product
Campi certificato
cert, cert.sn, cert.not_after, cert.not_before, cert.domain, cert.subject.org, cert.subject.cn, cert.issuer.org, cert.issuer.cn, cert.is_valid, cert.is_match, cert.is_equal
Campi TLS
tls.version, tls.ja3s
Durante il prompt dei campi, digita list per vederli tutti.
⚙️ Variabili di Configurazione (all'interno dello script)
| Variable | Default | Description | | CONCURRENT_THREADS | 10 | Numero di richieste di pagine parallele | | SIZE_DEFAULT | 100 | Risultati per pagina (massimo consentito da FOFA) | | OUTPUT_DIR | results | Directory in cui vengono salvati i file di output |
📝 Note Importanti
· Lo script usa en.fofa.info come endpoint API. · La deduplicazione si basa sul valore del primo campo (es. IP o dominio) e non distingue tra maiuscole e minuscole. · Le stringhe lunghe (titoli, banner, header) vengono troncate nell'output per una migliore leggibilità. · Se interrompi lo script (Ctrl+C), termina in modo pulito. · Lo script attualmente usa raw_input di Python 2. Per eseguirlo con Python 3, sostituisci raw_input con input e adatta le istruzioni print.
❗ Risoluzione dei Problemi
| Issue | Solution | | API_KEY not set | Modifica lo script e aggiungi la tua chiave. | | Invalid field(s) | Esegui lo script e digita list per vedere i campi consentiti. | | No results | Controlla la sintassi della tua query FOFA e i crediti API. | | ImportError: No module named requests | Installa requests con pip install requests. | | UnicodeEncodeError | Lo script gestisce già la codifica UTF‑8; assicurati che il tuo terminale la supporti. |
📄 Licenza
Licenza MIT – libero da usare e modificare per le tue esigenze di ricognizione. Nota: l'utilizzo dell'API FOFA è soggetto ai termini di servizio di FOFA.
🙌 Riconoscimenti
Realizzato per il motore di ricerca FOFA – una potente piattaforma di ricerca per IoT e asset.
Buona caccia! 🔍