
wafw00f의 지문. Go 속도. 파이프라인 네이티브. 라이브 HTTP 및 오프라인 캡처에서의 WAF 탐지.
wafw00f의 지문. Go의 속도. 파이프라인 네이티브.
172개의 WAF 제품 식별, wafw00f의 지문을 기반으로 구축.
실시간 HTTP 및 오프라인 저장 응답 분석을 위한 Go CLI 및 라이브러리.
빠른 시작 · wafw00f에서 이전하기 · 벤치마크 · 문서
wafmeow는 Go로 작성된 WAF 탐지를 위한 wafw00f 대안으로, 업스트림 프로젝트의 지문 작업을 기반으로 구축되었습니다. 대규모로 WAF를 탐지해야 하는 팀을 위해 빠른 WAF 지문 인식을 동시성 구조화 파이프라인에 도입합니다.
jq, 알림 도구 또는 데이터베이스로 스트리밍하면서
사람이 읽는 진단은 stderr에 유지합니다.# Set AUTHORIZED_DOMAIN to a domain you own or are authorized to test.
set -o pipefail
subfinder -d "${AUTHORIZED_DOMAIN:?set an authorized domain}" -silent |
httpx -silent |
wafmeow --target-file - --fast --jsonl --silent
이 파이프라인은 발견된 각 URL에 대한 빠른 활성 스캔을 위해 --fast를 사용합니다.
기존 httpx 응답 내보내기의 경우
오프라인 가져오기 파이프라인을 사용하세요.
보안 패치가 적용된 툴체인을 사용하여 Go 1.26 이상으로 빌드하세요. 릴리스 빌드는 Go 1.27.3을 사용합니다.
git clone https://github.com/Lu1sDV/wafmeow.git
cd wafmeow
go build -o wafmeow ./cmd/wafmeow
./wafmeow --help
프로덕션 환경에서는 릴리스 검증 게이트를 통과한 릴리스를 사용하십시오. v1.0.0 다운로드는 이 소스 트리의 보안 강화 이전에 만들어진 것입니다.
사전 빌드된 바이너리, Go 모듈 및 Homebrew 설치는 릴리스 및 설치에 있습니다:
go install github.com/Lu1sDV/wafmeow/v3/cmd/wafmeow@latest
brew install Lu1sDV/tap/wafmeow
/v3 Go 설치 명령은 게시된 v3 릴리스가 필요합니다. 해당 릴리스 전에는
위의 소스 체크아웃에서 빌드하십시오. Homebrew는 계속해서 최신 게시된
안정 버전을 설치합니다.
# Use your own local HTTP server on port 8080.
./wafmeow --target http://127.0.0.1:8080 --fast
사람이 읽을 수 있는 결과를 출력합니다. URL에는 --target / -t를 사용하고, 여러 URL의 경우 반복해서 지정합니다. URL 목록이 담긴 파일에는 --target-file PATH를, 표준 입력에는 --target-file -을 사용합니다.
--input PATH와 -I PATH는 --target-file PATH와 동일한 표기입니다.
하나의 입력 소스를 선택하세요. 저장된 응답은 오프라인 분석을 위해 --evidence를 사용합니다.
| 목표 | 선택 | 수집 |
|---|---|---|
| 빠른 능동 핑거프린팅 | --fast | 일반, user-agent 없음 및 결합 프로브 |
| 더 넓은 능동 프로빙 | --deep | 선택된 8가지 요청 유형이며, 모드를 지정하지 않았을 때의 기본값이기도 함 |
| 일반 응답만 검사 | --baseline | 능동 프로브 없이 일반 요청 하나 |
| 저장된 응답 재사용 | --evidence FILE | 새 요청 없이 오프라인 분류 |
--baseline은 일반 응답에 이미 존재하는 핑거프린트를 찾을 수 있습니다. 능동 프로브 없이 일반 HTTP 검사를 원할 때 사용하세요. --fast 또는 --deep을 위한 준비 단계가 아닙니다. 세 가지 라이브 모드는 상호 배타적이며, 리다이렉트와 예산은 실제 요청 수에 영향을 줍니다. 트레이드오프는 수집 모드 및 페이로드를 참조하세요.
# Discover URLs, then send new wafmeow requests:
httpx -l authorized-hosts.txt -silent |
./wafmeow --target-file - --fast --jsonl --silent
# Classify exported responses without additional requests:
httpx -l authorized-hosts.txt -silent -json -irr -probe -rstr 1048576 -rsts 1048576 |
./wafmeow --evidence - --evidence-format httpx --jsonl --silent
The importer targets httpx v1.12.0. Exported bodies lack completeness proof:
content matching stays unknown, while faithful status/header/cookie evidence can
match. This is not equivalent to active acquisition or proof of WAF absence.
Use set -o pipefail when upstream process failures must fail the shell pipeline.
Encoding, limitations, limits and downstream recipes.
The Go library uses module github.com/Lu1sDV/wafmeow/v3. Result JSON uses
schema 1; module and report versions are separate contracts.
# targets.txt: one authorized URL per line.
./wafmeow --target-file targets.txt --fast --jsonl --output results.json --strict
--jsonl은 결과를 stdout으로 스트리밍합니다. --output / -O는 원자적 보고서를 작성합니다. .json, .jsonl, .csv 또는 .txt를 사용하여 형식을 선택하세요. 다른 파일 이름은 TXT를 생성합니다. 사람이 읽는 진단 메시지는 stderr로 전달됩니다. --strict는 증거 품질을 검사합니다. 불완전하거나 실패했거나 진단된 결과를 게시한 후 2로 종료되며, 단순히 WAF가 일치했다는 이유로 종료되지 않습니다. 구성, 입력 및 출력 실패는 1로 종료되고, 취소는 130으로 종료됩니다. 보고서에는 결과가 포함되며, 재생 가능한 응답 캡처는 포함되지 않습니다. 출력 계약 및 속도 및 기한 조정을 참조하세요.
이 역사적 측정에서 더 넓은 프로브 모드는 full로 표시되었으며, 현재는 --deep입니다. 아래 수치는 이름 변경을 위해 다시 실행되지 않았습니다.
600개의 라이브 HTTP/HTTPS 대상 — Tranco 상위 10,000개에서 샘플링한 500개의 비CDN 대상과 100개의 알려진 CDN 대상 — 에 대한 중앙값 경과 시간으로, 구성당 세 번의 실행을 Hetzner Helsinki VPS(4 vCPU, 7.6 GiB RAM)에서 2026년 10월 31일에 완료했습니다. 낮을수록 좋습니다.