
Ferramenta Python multi‑thread para consultar a API FOFA, extrair campos personalizados (IP, port, cert, TLS, etc.), deduplicar resultados e retomar pesquisas interrompidas.
Uma ferramenta Python multi‑thread poderosa para consultar a API FOFA (Fofa.so), extrair campos selecionados e salvar resultados únicos com formatação inteligente.
ip, port, title, cert.*, tls.*, …)domains_*.txt, ips_*.txt)list mostra todos os campos válidos)raw_input – facilmente portável para Python 3)requestsInstale a dependência:
pip install requests
🔧 Configuração
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 Uso
Execute o script:
python fofa_searcher.py
Você será solicitado interativamente:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
Cada página retorna até SIZE_DEFAULT resultados.
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
Digite list para ver todos os campos válidos (básicos, certificado, TLS).
Todos os resultados são salvos em OUTPUT_DIR com um nome de arquivo descritivo, ex.: results/domains_example_com_20250315_143022.txt
📂 Exemplos de Saída
Campo único – bem rotulado:
IP: 93.184.216.34
Port: 443
Title: Example Domain
Múltiplos campos – formato compacto:
93.184.216.34 | Port:443 | [Example Domain] | {US}
Campos de certificado / TLS – rótulos claros:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 Campos Válidos
Esta ferramenta suporta todos os campos FOFA comuns, além dos campos de certificado (cert.*) e TLS (tls.*).
Campos básicos (lista parcial)
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
Campos de certificado
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
Campos TLS
tls.version, tls.ja3s
Digite list durante o prompt de campos para ver todos.
⚙️ Variáveis de Configuração (dentro do script)
Variável Padrão Descrição CONCURRENT_THREADS 10 Número de solicitações de página paralelas SIZE_DEFAULT 100 Resultados por página (máx. permitido pela FOFA) OUTPUT_DIR results Diretório onde os arquivos de saída são salvos
📝 Notas Importantes
· O script usa en.fofa.info como endpoint da API. · A deduplicação é baseada no valor do primeiro campo (ex.: IP ou domínio) e não diferencia maiúsculas de minúsculas. · Strings longas (títulos, banners, cabeçalhos) são truncadas na saída para facilitar a leitura. · Se você interromper o script (Ctrl+C), ele encerra de forma graciosa. · O script atualmente usa raw_input do Python 2. Para executar com Python 3, substitua raw_input por input e ajuste as declarações print.
❗ Solução de Problemas
Problema Solução API_KEY não definida Edite o script e adicione sua chave. Campo(s) inválido(s) Execute o script e digite list para ver os campos permitidos. Sem resultados Verifique a sintaxe da consulta FOFA e seus créditos de API. ImportError: No module named requests Instale requests com pip install requests. UnicodeEncodeError O script já lida com a codificação UTF‑8; certifique-se de que seu terminal a suporte.
📄 Licença
Licença MIT – livre para usar e modificar para suas próprias necessidades de reconhecimento. Nota: O uso da API FOFA está sujeito aos termos de serviço da FOFA.
🙌 Agradecimentos
Construída para o mecanismo de busca FOFA – uma poderosa plataforma de busca de IoT e ativos.
Boa caçada! 🔍