Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/noptrix/httpgrep
ReconnaissanceVulnerability ScannersInformation GatheringWeb SecurityPenetration TestingCrawler
GitHubnoptrix/httpgrep

httpgrep

호스트, 포트, CIDR/범위 및 TLS 인증서 vhost에서 응답 본문과 헤더를 문자열 또는 정규식으로 grep하는 비동기 HTTP(S) 스캐너입니다.

저장소 보기
36716일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

설명

HTTP(S) 서버를 스캔하고 HTTP 응답 본문과 헤더에서 문자열 또는 정규식 패턴을 grep하는 빠르고 비동기적인 Python 도구입니다.

단일 호스트, URL, CIDR 범위, IP 범위 또는 파일을 대상으로 하며; 대상별로 여러 포트를 스캔합니다(단일, 쉼표 목록 또는 범위, 포트별 TLS/일반 자동 감지); TLS 인증서에서 이름 기반 (v)host를 직접 가져와 스캔할 수 있으며; 일치 항목을 터미널에 실시간으로 스트리밍하고; 결과를 텍스트, CSV 또는 JSONL 로그 파일로 기록할 수 있습니다.

대규모 스캔을 위해 설계되었습니다: 비동기 코어가 수천 개의 동시 연결을 구동하고, TCP 사전 점검이 죽은 포트를 저비용으로 건너뛰며, 호스트별 및 전체 타임아웃이 느리거나 죽은 대상에 걸려 멈추지 않게 하고, 중단된 실행은 재개할 수 있습니다.

요구 사항

  • POSIX 시스템(Linux, *BSD, macOS - termios 및 asyncio의 Unix 시그널 처리를 사용)의 Python 3.11+
  • httpx - pip install -r requirements.txt (또는 pip install httpx)
  • 선택 사항, 있으면 자동 사용: uvloop(더 빠른 이벤트 루프), aiodns (-r용 비차단 DNS), h2(-2용 HTTP/2), httpx[socks] / socksio (SOCKS 프록시)

httpgrep은 단일 자체 포함 스크립트입니다 - 그냥 ./httpgrep.py를 실행하세요.

사용법

root@kitploit:~
$ httpgrep -H
    __    __  __
   / /_  / /_/ /_____  ____ _________  ____
  / __ \/ __/ __/ __ \/ __ `/ ___/ _ \/ __ \
 / / / / /_/ /_/ /_/ / /_/ / /  /  __/ /_/ /
/_/ /_/\__/\__/ .___/\__, /_/   \___/ .___/
             /_/    /____/         /_/

     --== [ by nullsecurity.net ] ==--

사용법

  httpgrep -h <arg> -s <arg> [opts] | <misc>

대상 옵션

  -h <hosts|file>   - 단일 호스트/URL 또는 호스트-/CIDR 범위 또는 호스트가 포함된
                      파일 또는 URL이 포함된 파일, 예: foobar.net,
                      192.168.0.1-192.168.0.254, 192.168.0.0/24, /tmp/hosts.txt
                      쉼표로 구분된 호스트 목록도 작동합니다, 예:
                      1.2.3.4,foo.net,10.0.0.0/24
                      참고: 호스트는 명령줄 또는 파일에서 ': <ports>'도 포함할 수
                      있으며, 여기서 <ports>는 단일 포트, 쉼표 목록 또는 범위입니다, 예:
                      foo.net:8080, foo.net:80,443, 10.0.0.1:1-1024
  -p <ports|file>   - 연결할 포트: 단일 포트, 쉼표로 구분된 목록, 범위, 또는 줄당
                      하나의 사양이 있는 파일, 예: 80,
                      80,443,8080, 8000-8100, /tmp/ports.txt
                      (기본값: 80, 또는 -t가 주어지면 443)
  -t                - 모든 포트에 TLS/SSL 강제 적용. 기본적으로 스킴은 포트별로
                      자동 감지됩니다(일반 http, 포트가 TLS를 사용하면 TLS로 전환)
  -u <URI|file>     - 지정된 문자열을 검색할 URI 또는 쉼표로 구분된 URI 또는 URI가
                      있는 파일(줄당 하나), 예: /foobar/,
                      /foo.html, /admin,/login, /tmp/paths.txt (기본값: /)
  -r                - 스캔된 IPv4의 역방향 DNS(PTR) 이름을 라벨로 표시; IP는
                      스캔 대상으로 유지됩니다(범위 이탈 없음).
                      aiodns 패키지로 비차단 동작

http 옵션

  -X <method>       - 사용할 HTTP 요청 메서드, 대소문자 무관 (기본값: get).
                      사용 가능한 메서드를 나열하려면 '?'를 사용하세요.
  -a <user:pass>    - http 인증 자격 증명 (형식: 'user:pass')
  -U <UA>           - 사용자 정의 User-Agent 설정 (기본값: 최신 ms edge, windows)
  -A                - 요청마다 임의의 user-agent 사용
  -R <headers>      - 사용자 정의 헤더 설정 (형식: 'foo=bar;lol=lulz;...')
  -C <cookies>      - 쿠키 설정 (형식: 'foo=bar;lol=lulz;...')
  -F                - HTTP 리다이렉트를 따르지 않음
  -L <num>          - 따라갈 최대 리다이렉트 수 (기본값: 10; -F와 함께 사용 시 무시됨)
  -E                - TLS/SSL 인증서 검증 (기본값: 검증 안 함)
  -P <proxy>        - 프록시 사용 (형식: '[http|https|socks4|socks5]://host:port')
                      (socks는 'httpx[socks]' / socksio 패키지 필요)
  -f <codes>        - 주어진 HTTP 상태 코드의 응답만 보고, 예: '200', '200,301,302'
  -e <codes>        - 주어진 HTTP 상태 코드의 응답 제외, 예: '404', '403,404,500'
  -2                - HTTP/2 시도 (TLS에서 ALPN 협상, 1.1로 폴백;
                      일반 http는 1.1 유지). 'h2' 패키지 필요

검색 옵션

  -s <str|file>     - HTTP 응답 본문과 헤더에서 찾을 단일 문자열/정규식 또는 파일의
                      여러 문자열/정규식 (-w 참조), 예: 'tomcat 8',
                      '/tmp/igot0daysforthese.txt'
  -S <str|file>     - 반전 (grep -v): 이 문자열/정규식(또는 파일)이 본문 또는
                      헤더 어디에든 나타나면 해당 응답의 모든 일치 항목을 버립니다,
                      예를 들어 동적 오류 / 404 페이지를 걸러낼 때
  -w <where>        - 검색 위치: headers, body 또는 headers,body
                      (기본값: headers,body)
  -b <bytes>        - 본문 일치에서 표시할 컨텍스트 바이트 수 (기본값: 64)
  -m <size>         - 읽고 검색할 최대 본문 크기; 접미사 b/kb/mb, 접미사 없음 = kb,
                      예: 512, 1mb, 262144b (기본값: 256kb)
  -i                - 대소문자 구분 없는 검색 사용
  -I                - 대소문자 구분 없는 반전 사용 (-S용)

스캔 옵션

  -x <num>          - 최대 동시 연결 수 (비동기; 기본값: 300). 매우 높은 값의 경우
                      ulimit -n을 그에 맞게 올리세요
  -c <seconds>      - 호스트별 읽기 타임아웃(초), 본문 읽기 시간도 제한합니다.
                      tcp 사전 점검은 무조건 2초로 제한되므로 필터링되거나
                      죽은 호스트는 슬롯을 빠르게 비웁니다 (기본값: 3.0)
  -G <seconds>      - 전체 타임아웃: N초 후 전체 스캔을 강제 중지
                      (어떤 멈춤에 대한 안전망; 기본값: 없음)
  -y <num>          - 실패한 프로브를 최대 <num>회 재시도 (기본값: 0).
                      대규모에서 불안정한 호스트에 도움이 됩니다; 작게 유지하세요
  -1                - 호스트에 일치 항목이 있으면 아직 시작되지 않은 프로브를 건너뜁니다
                      (최선 노력; 진행 중인 요청은 여전히 완료되므로 높은 -x에서는
                      호스트당 몇 개의 일치 항목이 여전히 보일 수 있음)
  -z <size>         - 메모리 제한이 있는 <size> RAM 창 내에서 스캔 대상을 임의 순서로
                      처리 (접미사 b/kb/mb/gb), 예: -z 1gb.
                      거대한 범위/파일이 메모리를 소진하지 않게 합니다
  -Z <num>          - -z 창을 <num>개 대상으로 제한 (기본값 2000000,
                      각각 약 140바이트로 ~267mb). 더 크면 거대한 범위에서
                      더 넓은 혼합이 가능하지만 RAM과 시작 버퍼링 비용이 듭니다
  -W                - 저장/재개: ctrl+c 시 진행 상태를 httpgrep.session에 기록;
                      -W로 다시 실행하면 재개합니다 (그렇지 않으면 새로 시작)
  -T <0|1>          - 직접 스캔에 더해 인증서 (v)host(CN + SAN)도 추가 요청으로
                      프로브합니다. 0 = 동일 IP의 Host 헤더를 통해 (범위 내);
                      1 = DNS 이름/SNI로도 (범위를 벗어날 수 있음).
                      TLS 필요 (https url, -t 또는 *443 포트)

출력 옵션

  -l <file>         - 선택한 -O 형식에 따라 찾은 일치 항목을 <file>.<fmt>로 기록
                      (예: -l out -O csv,jsonl => out.csv, out.jsonl)
  -O <formats>      - 로그 파일 형식, 쉼표 목록: txt, csv, jsonl
                      (기본값: txt; '?'를 사용하여 목록 확인). 터미널 출력은 항상
                      사람이 읽을 수 있는 형태로 유지됩니다.
  -v                - 자세히: 각 URL을 스캔할 때마다 출력
  -7                - 터미널 출력의 비ASCII를 \xNN으로 이스케이프하여 악의적인
                      응답 본문이 터미널을 손상시키지 못하게 합니다 (로그는 원본 유지)

기타 옵션

  -H                - 도움말 출력
  -V                - 버전 정보 출력

예시

  # 단일 호스트의 헤더와 본문에서 'apache' grep
  $ httpgrep -h foobar.net -s apache

  # CIDR 범위의 포트 8080 스캔, 본문에서만 'tomcat' 검색
  $ httpgrep -h 192.168.0.0/24 -p 8080 -s tomcat -w body

  # 여러 포트와 포트 범위에서 'jenkins' 검색
  $ httpgrep -h 192.168.0.10 -p 80,443,8080,8000-8100 -s jenkins -i

  # 호스트 목록 스캔, 문자열 파일 검색, 일치 항목 기록 (-> /tmp/out.txt)
  $ httpgrep -h /tmp/hosts.txt -s /tmp/strings.txt -x 200 -l /tmp/out

  # TLS를 통해 여러 URI에서 'admin' 대소문자 구분 없이 grep
  $ httpgrep -h foobar.net -t -u /admin,/login,/dashboard -s admin -i

  # IP 범위 스캔, 역방향 DNS, 200 응답만 보고
  $ httpgrep -h 10.0.0.1-10.0.0.254 -s 'powered by' -r -f 200

  # 헤더만 검색, 리다이렉트를 따르지 않음, 자세한 출력
  $ httpgrep -h foobar.net -s 'X-Powered-By' -w headers -F -v

  # 'admin' grep, 하지만 동적 오류 페이지 제외 (반전, 대소문자 구분 없음)
  $ httpgrep -h 192.168.0.0/24 -s admin -i -S 'error|not found' -I

  # 프록시 경유, 사용자 정의 UA, 버전 문자열 검색
  $ httpgrep -h /tmp/hosts.txt -s 'nginx/1\.' -P http://127.0.0.1:8080 -U 'curl/8.0'

  # 대규모 재개 가능 스캔: ctrl+c로 상태 저장, -W로 계속 실행; 또한
  # 전체 실행을 멈춤 안전망으로 1시간으로 제한
  $ httpgrep -h 10.0.0.0/16 -p 80,443 -s admin -W -G 3600

출력

일치 항목은 줄당 하나씩 실시간으로 출력됩니다:

root@kitploit:~
[*] <url> | [vhost] | <status> | <type> | <match>
  • <url> - 스캔된 URL (scheme://host:port/uri).
  • <vhost> - -T(Host 헤더를 통해 시도된 인증서 (v)host) 또는 -r(스캔된 ip의 PTR 이름)과 함께 표시; 직접 스캔에서는 비어 있음.
  • <status> - HTTP 응답 상태 코드 (리다이렉트 후).
  • <type> - body 또는 header.
  • <match> - 본문 적중: 일치 지점의 짧은 repr 창 (-b 바이트); 헤더 적중: name: value.

터미널에는 항상 이 사람이 읽을 수 있는 형태가 표시됩니다. -l <base>를 사용하면 동일한 일치 항목이 각 -O 형식에 대해 <base>.<fmt>로 미러링됩니다 - txt(이 줄들), csv(url,vhost,status,type,match 행과 헤더 포함), jsonl(일치 항목당 JSON 객체 하나).

다중 대상 스캔에서는 실시간 상태 줄이 표시됩니다 (tty에서는 하단에 고정, 리다이렉트 시 일반 줄):

root@kitploit:~
[+] wait bitch, scanning: <targets> | <scanned>/<total> | <pct>% | <n> hits

<total>은 대상 수입니다 (cidr/범위는 계산됨, 확장되지 않음); <n> hits는 지금까지 출력된 일치 줄의 누적 수입니다.

저자

noptrix

참고 사항

  • quick'n'dirty 코드
  • httpgrep은 이미 패키징되어 BlackArch Linux에서 사용 가능합니다
  • 제 master 브랜치는 항상 안정적입니다; dev 브랜치는 현재 작업을 위해 생성됩니다.
  • 제가 공개하는 모든 공개 자료는 nullsecurity.net을 통해 공식적으로 발표되고 게시됩니다.

라이선스

docs/LICENSE를 확인하세요.

면책 조항

우리는 nullsecurity.net에서 찾을 수 있는 해킹 관련 자료가 오직 교육 목적으로만 제공된다는 점을 여기서 강조합니다. 우리는 어떤 손해에 대해서도 책임을 지지 않습니다. 여러분은 자신의 행동에 책임이 있습니다.

도구 다운로드