
FOFA API를 쿼리하고, 사용자 지정 필드(IP, port, cert, TLS 등)를 추출하며, 결과를 중복 제거하고 중단된 검색을 재개하는 멀티스레드 Python 도구입니다.
FOFA(Fofa.so) API를 조회하고 선택한 필드를 추출하며, 지능적인 형식으로 고유한 결과를 저장하는 강력한 멀티스레드 Python 도구입니다.
ip, port, title, cert.*, tls.*, …)domains_*.txt, ips_*.txt)list 명령은 모든 유효한 필드를 표시합니다)raw_input을 사용합니다 – Python 3로 쉽게 포팅 가능)requests 라이브러리의존성을 설치합니다:
pip install requests
🔧 구성
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 사용법
다음과 같이 스크립트를 실행하세요:
python fofa_searcher.py
대화형 프롬프트가 표시됩니다:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
각 페이지는 최대 SIZE_DEFAULT 개의 결과를 반환합니다.
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
모든 유효한 필드를 보려면 list를 입력하세요 (기본, 인증서, TLS).
모든 결과는 설명적인 파일 이름과 함께 OUTPUT_DIR에 저장됩니다. 예: results/domains_example_com_20250315_143022.txt
📂 출력 예시
단일 필드 – 라벨이 깔끔하게 표시됨:
IP: 93.184.216.34
Port: 443
Title: Example Domain
여러 필드 – 간결한 형식:
93.184.216.34 | Port:443 | [Example Domain] | {US}
인증서 / TLS 필드 – 명확한 라벨:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 유효한 필드
이 도구는 일반적인 FOFA 필드와 인증서(cert.) 및 TLS(tls.) 필드를 모두 지원합니다.
기본 필드 (일부 목록)
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
인증서 필드
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
TLS 필드
tls.version, tls.ja3s
필드 프롬프트에 list를 입력하면 모든 필드를 볼 수 있습니다.
⚙️ 구성 변수 (스크립트 내부)
변수 기본값 설명 CONCURRENT_THREADS 10 병렬 페이지 요청 수 SIZE_DEFAULT 100 페이지당 결과 수 (FOFA 최대 허용치) OUTPUT_DIR results 출력 파일이 저장되는 디렉터리
📝 중요 참고 사항
· 스크립트는 API 엔드포인트로 en.fofa.info를 사용합니다. · 중복 제거는 첫 번째 필드 값(예: IP 또는 도메인)을 기준으로 하며 대소문자를 구분하지 않습니다. · 긴 문자열(제목, 배너, 헤더)은 가독성을 위해 출력에서 잘립니다. · 스크립트를 중단하면(Ctrl+C) 정상적으로 종료됩니다. · 스크립트는 현재 Python 2 raw_input을 사용합니다. Python 3에서 실행하려면 raw_input을 input으로 바꾸고 print 문을 조정하세요.
❗ 문제 해결
문제 해결 방법 API_KEY가 설정되지 않음 스크립트를 편집하여 키를 추가하세요. 잘못된 필드 스크립트를 실행하고 list를 입력하면 허용된 필드를 확인할 수 있습니다. 결과 없음 FOFA 쿼리 구문과 API 크레딧을 확인하세요. ImportError: No module named requests requests를 pip install requests로 설치하세요. UnicodeEncodeError 스크립트는 이미 UTF‑8 인코딩을 처리합니다. 터미널이 이를 지원하는지 확인하세요.
📄 라이선스
MIT 라이선스 – 자체 정찰 목적으로 자유롭게 사용 및 수정할 수 있습니다. 참고: FOFA API 사용은 FOFA의 서비스 약관을 따릅니다.
🙌 감사의 말
FOFA 검색 엔진을 위해 제작되었습니다. 강력한 IoT 및 자산 검색 플랫폼입니다.
즐거운 사냥 되세요! 🔍