
OWASP 웹 정찰 및 디렉토리 탐색 플랫폼
# OpenDoor — OWASP 웹 정찰 및 디렉터리 탐색 플랫폼

**OpenDoor**는 승인된 웹 정찰, 디렉터리 탐색, 서브도메인 열거, 핑거프린트, WAF 탐지, 우회 프로빙, 응답 필터링, 리포팅, 오픈 리다이렉트 검사, 제한된 크롤링 및 전송 기반 스캐닝 워크플로를 위한 오픈소스 CLI 정찰 플랫폼입니다.
보안 연구원, 침투 테스터, 버그 바운티 헌터, DevSecOps 엔지니어, 개발자가 노출된 경로, 로그인 패널, 디렉터리 목록, 제한된 리소스, 백업 파일, 웹 셸, 서브도메인 및 기타 잠재적으로 민감한 웹 자산을 식별할 수 있도록 돕습니다.
> OpenDoor는 본인이 소유하거나 명시적으로 테스트 권한을 받은 시스템에서만 사용하십시오.
---
## ✅ 프로젝트 상태
[](https://pypi.org/project/opendoor/)
[](https://formulae.brew.sh/formula/opendoor)

[](https://www.python.org/)
[](https://github.com/stanislav-web/OpenDoor/actions/workflows/docker-image.yml)
[](https://codecov.io/github/stanislav-web/OpenDoor)
[](https://github.com/stanislav-web/OpenDoor/actions/workflows/github-code-scanning/codeql)
[](https://github.com/stanislav-web/OpenDoor/actions/workflows/codacy.yml)
[](https://opendoor.readthedocs.io/)
## 🧪 CI 매트릭스
| 플랫폼 | Python 3.12 | Python 3.13 | Python 3.14 | Python 3.15 |
|---|---|---|---|---|
| Linux | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-linux-py312.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-linux-py313.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-linux-py314.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-linux-py315.yml) |
| macOS | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-macos-py312.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-macos-py313.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-macos-py314.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-macos-py315.yml) |
| Windows | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-windows-py312.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-windows-py313.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-windows-py314.yml) | [](https://github.com/stanislav-web/OpenDoor/actions/workflows/ci-windows-py315.yml) |
---
## 🚀 빠른 링크
- [문서](https://opendoor.readthedocs.io/)
- [빠른 시작](https://opendoor.readthedocs.io/quickstart/)
- [설치 및 업데이트](https://opendoor.readthedocs.io/Installation-and-update/)
- [사용 가이드](https://opendoor.readthedocs.io/Usage/)
- [실용 예제](https://opendoor.readthedocs.io/examples/basic-scans/)
- [변경 로그](https://github.com/stanislav-web/opendoor/blob/master/CHANGELOG.md)
- [PyPI 패키지](https://pypi.org/project/opendoor/)
- [Homebrew formulae](https://formulae.brew.sh/formula/opendoor)
- [Docker 이미지](https://github.com/users/stanislav-web/packages/container/package/opendoor)
- [AUR 패키지](https://aur.archlinux.org/packages/opendoor)
- [BlackArch 패키지](https://blackarch.org/webapp.html)
- [이슈](https://github.com/stanislav-web/OpenDoor/issues)
- [기여자](https://github.com/stanislav-web/OpenDoor/graphs/contributors)
---
## ✨ 기능
- 디렉터리 탐색;
- 재귀적 디렉터리 탐색;
- 제한된 동일 출처 크롤링;
- 리다이렉트 추적;
- 서브도메인 열거;
- 더 빠른 조회를 위한 멀티스레딩 스캔;
- 단일 대상, 대상 파일, stdin, IPv4 CIDR, IPv4 범위 입력 모드;
- 사용자 정의 워드리스트, 접두사, 스캔 패턴과 확장자 필터를 깨기 위한 셔플링, 원격 워드리스트 지원;
- 사용자 정의 요청 헤더, 쿠키 전달, 원시 HTTP 요청 템플릿;
- 상태, 크기, 텍스트, 정규식, 본문 길이별 응답 필터;
- 디렉터리 목록, 빈 응답, 알려진 파일 노출, 활성 섀도 복사본 프로브, 콜레이션, 노출 가능성이 있는 시크릿, 클라이언트에 노출된 엔드포인트, 오류, 노출된 디버그 스택 트레이스, 검증된 오픈 리다이렉트 취약점을 탐지하기 위한 응답 스니퍼;
- 소프트 404, 와일드카드, 캐치올, 시맨틱 응답 차이, DNS 와일드카드 케이스를 위한 스마트 자동 보정;
- CMS, 이커머스 플랫폼, 프레임워크, 런타임 스택, 인프라, HSTS 상태에 대한 기술 핑거프린트 탐지;
- `--fingerprint`에서 가능한 HSTS, ETag/캐시, 슈퍼쿠키 표면을 포함한 수동적 프라이버시 위험 검사.
- 보안 스캐닝 모드에서 수동적 WAF 탐지 및 우회;
- 초기 분류된 응답이 압도적으로 WAF에 의해 차단된 경우 저가치 스캔을 종료하기 위한 WAF 가드 중지 조건;
- 차단된 `401` 및 `403` 리소스에 대한 제어된 헤더 및 경로 우회 프로브;
- 재시도, 연속 실패 보호, 전송 실패 처리, 재개 가능한 세션, 런타임 일시정지/재개 제어를 갖춘 내결함성 스캔 런타임;
- CI/CD 실패 조건 결과 버킷 규칙;
- 이전/현재 JSON 또는 SQLite 보고서에 대한 차분 보고서 비교;
- 터미널, 텍스트, JSON, CSV, HTML, SARIF 및 SQLite 형식의 보고서;
- 프록시, OpenVPN, WireGuard, 레거시 TLS, mTLS 클라이언트 인증서 전송 지원;
- 배치 워크플로를 위한 대상별 순차 전송 로테이션;
- 반복 가능한 스캔 프로필을 위한 구성 마법사;
- 내장 워드리스트 (업데이트 2026-08)
---
## 🧭 OpenDoor는 어디에서 유용한가?
속도만으로는 충분하지 않은 실제 대상, 즉 WAF, CDN, 소프트 404 페이지, 와일드카드 라우트, 제한된 리소스, 인증 영역, 불안정한 네트워크, 다중 대상 배치, 전송 제어 스캔을 위해 설계되었습니다.
2016년 첫 출시 이후 현재까지 OpenDoor는 극적으로 변화하여 원시적인 무차별 대입 도구에서 새로운 적응형 탐색 프레임워크로 성장했습니다. DevOps 및 QA 친화적으로 발전했습니다.
OpenDoor는 무작위 열거 대신 **컨텍스트 인식 탐색**에 중점을 둡니다.
### OpenDoor를 차별화하는 요소
| 기능 | 중요한 이유 |
|---|---|
| **핑거프린트 우선 스캐닝** | OpenDoor는 더 깊은 탐색 전에 가능성 있는 CMS 플랫폼, 프레임워크, 인프라 제공자, WAF 신호를 식별할 수 있습니다. 이를 통해 대상에 일반적인 워드리스트를 무작정 던지는 대신 컨텍스트를 가지고 스캔할 수 있습니다. |
| **WAF 인식 동작** | OpenDoor는 가능성 있는 WAF / 안티봇 동작을 탐지하고 `--waf-safe-mode`로 더 안전한 런타임 프로필로 전환하여 시끄러운 차단 스캔을 줄이고 방어적 응답을 더 쉽게 이해할 수 있게 합니다. |
| **WAF 가드 중지 조건** | OpenDoor는 초기 분류된 응답이 압도적으로 WAF에 의해 차단된 경우 스캔을 조기에 중지할 수 있습니다. 이는 반복적인 엣지/WAF 차단 페이지만 생성하는 워드리스트에 긴 실행 시간을 낭비하는 것을 방지합니다. |
| **제어된 우회 증거** | OpenDoor는 선택적으로 차단된 `401` 및 `403` 리소스를 제어된 헤더 주입 및 경로 조작 변형으로 프로브할 수 있습니다. 전역 스캔 헤더를 변경하지 않고 우회 유형, 헤더 또는 경로 변형, 프로브 값, 원래 상태 코드, 결과 상태 코드와 같은 정확한 증거를 기록합니다. |
| **다중 신호 자동 보정** | OpenDoor는 상태 코드나 응답 크기에만 의존하지 않습니다. 본문 해시, 표시 텍스트, 시맨틱 소프트 404 구문, DOM 토큰 구조, 제목, 리다이렉트, 안정적인 헤더, 단어 수, 줄 수, 텍스트 밀도, 정규화된 동적 토큰, DNS 와일드카드 기준선과 같은 여러 응답 신호를 비교하여 소프트 404 및 와일드카드 오탐을 줄입니다. |
| **제한된 동일 출처 크롤링** | `--crawl`은 이미 스캔된 HTML 응답에서 발견된 원홉 동일 출처 링크로 디렉터리 스캔을 강화할 수 있습니다. 스파이더나 브라우저 렌더러가 되는 대신 기존 스캔 파이프라인, 전역 요청 중복 제거, 버킷별 보고서 중복 제거, 제한된 메모리 상한을 사용합니다. |
| **휴리스틱 스니퍼 플러그인 시스템** | OpenDoor는 시크릿, 스택 트레이스, 디렉터리 목록, 악성코드 지표, 섀도 복사본, 의심스러운 파일, 오픈 리다이렉트, 반복되는 소프트 오류 템플릿과 같은 휴리스틱 스니퍼를 위한 플러그 가능한 응답 분석 계층을 포함합니다. 이를 통해 스캔은 상태 코드와 크기만 보고하는 대신 응답 본문에서 의미 있는 증거를 표면화할 수 있습니다. |
| **전송 수준 워크플로** | OpenDoor는 직접, 프록시, OpenVPN, WireGuard 전송 모드를 지원합니다. 또한 승인된 배치 스캔에서 대상별로 전송 프로필을 로테이션할 수 있으며, 이는 스캐너를 실행하기 전에 수동으로 VPN을 시작하는 것과는 다릅니다. |
| **프록시 풀 지원** | OpenDoor는 `--proxy-list`를 통해 프록시 풀을 사용하고, 스캔 전에 사용 가능한 프록시를 검증하고, 라이브 풀 전체에서 요청을 로테이션할 수 있습니다. 이는 단일 프록시 엔드포인트를 하드코딩하지 않고도 긴 승인 스캔이 불안정한 경로에서 살아남도록 돕습니다. |
| **내결함성 스캔 런타임** | OpenDoor는 불안정한 대상과 신뢰할 수 없는 네트워크에서도 스캔을 유용하게 유지하도록 설계되었습니다. 요청 재시도, 연속 실패 보호, 복구 가능한 전송 오류 처리, 프록시 로테이션, WAF 인식 중지 조건, 체크포인트 세션, 대화형 일시정지/재개 제어를 결합하여 긴 스캔이 조용히 커버리지를 잃는 대신 안전하게 실패할 수 있습니다. |
| **재개 가능한 장기 스캔** | OpenDoor는 스캔 체크포인트를 저장하고 나중에 재개할 수 있습니다. 이는 스캔이 충돌, 불안정한 네트워크, 차단된 경로, 터미널 연결 끊김, 긴 다중 대상 작업으로 인해 중단될 때 중요합니다. |
| **런타임 일시정지/재개** | 스캔 중 `Ctrl+C`를 한 번 누르면 워커가 일시정지되고, 세션 파일을 사용하지 않고 `C`를 선택하여 계속하거나 `E`를 선택하여 중단할 수 있습니다. |
| **차분 보고서 비교** | OpenDoor는 `--diff old:new`로 이전 및 현재 SQLite/JSON 보고서를 비교하여 대상을 다시 스캔하지 않고 추가, 제거, 변경된 발견 사항을 표시할 수 있습니다. 이는 스캔 보고서를 릴리스 간 노출 회귀 검사로 전환합니다. |
| **CI/CD 준비 결과** | OpenDoor는 선택된 결과 버킷이 발견된 경우에만 실패 종료 코드를 반환할 수 있어, 사용자 정의 후처리 스크립트 없이 릴리스 게이트나 노출 회귀 검사로 사용할 수 있습니다. |
| **감사 가능한 엔지니어링** | OpenDoor는 다중 플랫폼 CI, 커버리지 검사, 패키지 검사, 문서 빌드, 대규모 unittest 스위트로 유지 관리되어 감사, 기여, 의존이 더 쉽습니다. |
## 🧬 인식되는 기술
OpenDoor는 가능성 있는 애플리케이션 스택, CMS 플랫폼, 프레임워크, 사이트 빌더, 정적 사이트 도구, 인프라 제공자, HSTS / 프리로드 준비 상태, WAF / 안티봇 시스템을 탐지하기 위한 휴리스틱 핑거프린트 엔진을 포함합니다.
| 카테고리 | 예시 |
|----------------------------|---|
| CMS | WordPress, Drupal, Joomla, TYPO3, GravCMS, Open Journal Systems, InstantCMS, DiafanCMS, CMS.S3 / Megagroup, Discuz!, NetCat |
| 이커머스 | Magento, WooCommerce, Shopify, PrestaShop, OpenCart, Shopware, Webasyst / Shop-Script |
| 프레임워크 / 앱 플랫폼 | Laravel, Symfony, Django, Flask, FastAPI, Express, NestJS, Next.js, Nuxt, Rails, Spring |
| 런타임 / 언어 스택 | PHP, Node.js, JavaScript, Python, Ruby, .NET, Java/JVM, Elixir, 정적 사이트 대상 |
| 사이트 빌더 | Wix, Webflow, Squarespace, Tilda, Duda, Hostinger Website Builder |
| 정적 / 문서 생성기 | MkDocs, Docusaurus, Hugo, Jekyll, VitePress |
| 인프라 / 호스팅 | Cloudflare, AWS, Vercel, Netlify, GitHub Pages, GitLab Pages, Heroku, Azure, Google Cloud, Fastly, Akamai, Hostinger, DDoS-Guard, Tencent Cloud |
| 인프라 / 서버 | Nginx, Apache HTTP Server, Microsoft IIS, Caddy, LiteSpeed, lighttpd, Tornado, Gunicorn, Uvicorn, Hypercorn, Waitress, Apache Tomcat, Eclipse Jetty, Envoy, Traefik |
| WAF / 안티봇 | Cloudflare, AWS WAF, Azure Front Door, Akamai, Imperva, Sucuri, ModSecurity, DataDome, Kasada, BunkerWeb, F5 BIG-IP ASM |
| 보안 헤더 | HSTS 존재, max-age, includeSubDomains, preload 지시문, 로컬 프리로드 준비 상태 |
지원되는 기술의 전체 목록:
[핑거프린팅 기술](https://opendoor.readthedocs.io/detection/fingerprinting)
핑거프린트 탐지 실행:
```bash
opendoor --host https://example.com --fingerprint
```
핑거프린트 단계가 끝나면 OpenDoor는 사전 열거가 시작되기 전에 간결한 사전 스캔 요약을 출력한다:
```text
Fingerprint result: cms/WordPress (95%)
Web stack: WordPress | PHP | Cloudflare
Security posture: HSTS preload-ready
```
Read more:
- [Fingerprinting guide](https://opendoor.readthedocs.io/detection/fingerprinting/)
- [WAF detection guide](https://opendoor.readthedocs.io/detection/waf-detection/)
## 📦 설치
### pipx
대부분의 CLI 사용자에게 권장됩니다:
```bash
pipx install opendoor
```
### pip
```bash
python3 -m pip install --upgrade opendoor
```
### Windows / Chocolatey
OpenDoor는 Chocolatey 커뮤니티 패키지 저장소에서 사용할 수 있습니다:
```powershell
choco install opendoor -y
```
Chocolatey 패키지는 커뮤니티 검토가 완료되는 동안 최신 GitHub/PyPI 릴리스보다 뒤처질 수 있습니다.
### Arch Linux / AUR
OpenDoor는 Arch 사용자 저장소에서 사용할 수 있습니다:
```bash
yay -S opendoor
```
### Homebrew
OpenDoor는 Brew 패키지 관리자에서도 사용할 수 있습니다:
```bash
brew install opendoor
```
### Docker
OpenDoor는 GitHub Container Registry를 통해 공식 프로젝트 Docker 이미지로 제공됩니다.
```bash
docker pull ghcr.io/stanislav-web/opendoor:latest
docker run --rm -it ghcr.io/stanislav-web/opendoor:latest --version
```
호스트에 스캔을 실행하고 보고서를 작성합니다:
```bash
mkdir -p reports
docker run --rm \
-v "$PWD/reports:/work/reports" \
ghcr.io/stanislav-web/opendoor:latest \
--host https://example.com \
--reports json,html \
--reports-dir reports
```
### BlackArch Linux
OpenDoor는 BlackArch Linux에서 사용할 수 있습니다:
```bash
sudo pacman -Syu
sudo pacman -S opendoor
```
### 소스에서
```bash
git clone https://github.com/stanislav-web/OpenDoor.git
cd OpenDoor
python3 -m pip install -r requirements.txt
python3 opendoor.py --help
```
전체 [설치 가이드](https://opendoor.readthedocs.io/Installation-and-update/)를 참조하세요.
---
## 🚀 빠른 사용법
### 기본 디렉터리 스캔
```bash
opendoor --host https://example.com
```
### 동일 출처 링크 크롤링
```bash
opendoor --host https://example.com --crawl
```
`--crawl`은 선택적으로 사용되며 디렉터리 스캔에서만 작동합니다. `GET`을 사용하고, 이미 스캔된 응답에서 보수적인 HTML 속성을 추출하며, 동일 출처 URL만 유지하고, 무시된 확장자를 존중하며, POST 폼과 외부 출처를 건너뛰고, 발견된 URL을 일반 결과 버킷을 통해 보고합니다.
### 서브도메인 스캔
```bash
opendoor --host example.com --scan subdomains
```
### 대상 목록
```bash
opendoor --hostlist targets.txt
```
대상 파일에는 URL, 도메인, IPv4 주소, IPv4 CIDR 블록, 그리고 양 끝을 포함하는 IPv4 범위가 혼합되어 있을 수 있습니다:
```text
https://example.com
app.example.com
192.168.1.10
192.168.1.0/24
192.168.1.10-192.168.1.50
```
### 표준 입력
```bash
cat targets.txt | opendoor --stdin
```
STDIN을 통해서도 동일한 혼합 대상 형식이 지원됩니다.
### 저잡음 스캔
```bash
opendoor \
--host https://example.com \
--method GET \
--auto-calibrate \
--include-status 200-299,301,302,403 \
--exclude-status 404,429,500-599 \
--exclude-size-range 0-256 \
--sniff endpoint,secret,shadow,openredirect,malware,skipempty,collation,indexof,file,stacktrace \
--reports std,json,csv,sarif
```
### 응답 스니퍼
응답 스니퍼는 탐색 과정에서 흥미로운 응답 본문을 분류합니다. 상태 코드와 크기만으로는 발견된 내용을 이해하기에 충분하지 않을 때 유용합니다.
```bash
opendoor \
--host https://example.com \
--method GET \
--sniff endpoint,secret,shadow,openredirect,malware,stacktrace,indexof,file,collation \
--reports std,json,csv,html,sqlite,sarif
```
유용한 스니퍼는 다음과 같습니다:
| 스니퍼 | 목적 |
|---------------------|-------------------------------------------------------------------------------------------------------------------------------------|
| `indexof` | 디렉터리 목록 페이지를 탐지합니다. |
| `file` | 알려진 민감한 파일 노출 패턴을 탐지합니다. |
| `collation` | 오탐을 유발할 수 있는 반복적이거나 리다이렉트와 유사한 대체 응답을 탐지합니다. |
| `skipempty` | 빈 응답을 건너뜁니다. |
| `skipsizes=46` | 알려진 노이즈 크기와 정확히 일치하는 응답을 건너뜁니다. |
| `skipsizes=46:1024` | 노이즈 크기 범위 내의 응답을 건너뜁니다. |
| `stacktrace` | 노출된 디버그/런타임 스택 트레이스 및 내부 오류 세부 정보를 탐지합니다. |
| `secret` | 노출 가능성이 있는 API 키, 토큰, 개인 키 및 자격 증명을 마스킹된 보고서 메타데이터와 함께 탐지합니다. |
| `shadow` | 확인된 `200 OK` 파일 유사 히트에 대해 `.bak`, `.old` 및 경로 템플릿과 같은 제한된 백업/섀도 변형을 능동적으로 프로브합니다. |
| `openredirect` | 제어된 마커 URL로 리다이렉트 유사 쿼리 매개변수를 능동적으로 검증하고 확인된 오픈 리다이렉트 취약점만 보고합니다. |
| `endpoint` | 이미 가져온 응답에서 클라이언트에 노출된 WebSocket, Socket.IO, SSE/EventSource 및 AJAX 엔드포인트를 수동적으로 탐지합니다. |
| `malware` | 가능한 악성 콘텐츠, 웹셸 마커, 주입된 스크립트 또는 난독화된 페이로드를 탐지합니다. |
본문 의존 스니퍼는 구성된 메서드가 `HEAD`일 때 내부적으로 자동으로 `GET`을 강제합니다.
더 읽어보기: [스니퍼 레퍼런스](https://opendoor.readthedocs.io/Sniffers/)
### 원시 요청을 통한 인증 스캔
```bash
opendoor \
--raw-request request.txt \
--scheme https \
--method GET \
--auto-calibrate \
--reports json,html,sqlite,sarif
```
### WAF 안전 스캔
```bash
opendoor \
--host https://example.com \
--waf-safe-mode \
--timeout 60 \
--retries 5 \
--delay 0.5
```
### 내결함성 스캔
불안정한 대상, 느린 네트워크, 일시적인 WAF 차단, 프록시 불안정성 또는 장시간 실행되는 승인된 스캔에는 보다 보수적인 런타임 프로필을 사용하십시오.
```bash
opendoor \
--host https://example.com \
--method GET \
--timeout 60 \
--retries 5 \
--retries-fail-streak 25 \
--auto-calibrate \
--waf-detect \
--waf-guard \
--session-save session.json \
--reports std,json,html
```
이 프로필은 요청당 타임아웃과 재시도 허용 범위를 늘려 스캔을 더 탄력적으로 만들고, 중단을 반복적으로 소진된 경로로 제한하며, 자동 보정으로 소프트 404 및 캐치올 응답을 필터링하고, WAF 차단 응답이 지배적일 때 저가치 스캔을 중단하며, 나중에 재개할 수 있도록 체크포인트 상태를 저장합니다.
나중에 스캔을 재개하세요:
```bash
opendoor --session-load session.json
```
활성 스캔 중에 `Ctrl+C`를 한 번 눌러 워커를 일시 중지한 다음, `C`를 선택하여 계속하거나 `E`를 선택하여 중단합니다.
### 헤더 및 경로 우회 프로브
권한을 부여받아 테스트하는 시스템에서만 이 기능을 사용하십시오. 이 기능은 옵트인 방식이며, 통제된 임시 헤더와 안전한 경로 변형을 사용하여 차단된 리소스를 프로브합니다.
```bash
opendoor \
--host https://example.com \
--method GET \
--waf-detect \
--header-bypass \
--header-bypass-limit 32 \
--reports std,json,csv,sarif,sqlite
```
--header-bypass가 활성화되면 OpenDoor는 먼저 구성된 헤더 주입 변형을 시도한 다음, 후행 슬래시, 점 세그먼트, 세미콜론 접미사, 대소문자 변형, URL 인코딩 세그먼트와 같은 안전한 경로 조작 변형을 시도합니다.
트리거 상태, 신뢰할 수 있는 IP 값, 헤더를 사용자 지정합니다:
```bash
opendoor \
--host https://example.com \
--method GET \
--header-bypass \
--header-bypass-status 401,403 \
--header-bypass-ips 127.0.0.1,10.0.0.1 \
--header-bypass-headers X-Original-URL,X-Rewrite-URL,X-Forwarded-For,X-Real-IP \
--reports json,html,sqlite,sarif,csv
```
### 프록시 라우팅
단일 명시적 프록시 사용:
```bash
opendoor --host https://example.com --proxy socks5://127.0.0.1:9050
```
번들로 제공되는 로테이팅 프록시 풀을 사용하세요:
```bash
opendoor --host https://example.com --proxy-pool
```
사용자 정의 로테이팅 프록시 목록을 사용하세요:
```bash
opendoor --host https://example.com --proxy-list proxies.txt
```
### OpenVPN 전송
```bash
opendoor \
--host https://example.com \
--transport openvpn \
--transport-profile ./profile.ovpn
```
OpenVPN이 `PATH` 외부에 설치되어 있으면 백엔드를 명시적으로 전달하세요:
```bash
opendoor \
--host https://example.com \
--transport openvpn \
--transport-profile ./profile.ovpn \
--transport-bin /opt/homebrew/sbin/openvpn
```
Windows에서 `--transport-bin`은 `C:\Program Files\OpenVPN\bin\openvpn.exe`를 가리킬 수 있습니다. GUI 클라이언트나 기업 VPN 에이전트가 이미 터널을 점유하고 있다면, 해당 VPN을 OpenDoor 외부에서 시작하고 OpenDoor를 직접 모드로 실행하세요.
### WireGuard 전송
```bash
opendoor \
--host https://example.com \
--transport wireguard \
--transport-profile ./profile.conf
```
추가 예시:
- [기본 스캔](https://opendoor.readthedocs.io/examples/basic-scans/)
- [배치 스캔](https://opendoor.readthedocs.io/examples/batch-scans/)
- [인증 스캔](https://opendoor.readthedocs.io/examples/authenticated-scans/)
- [WAF 안전 스캔](https://opendoor.readthedocs.io/examples/waf-safe-scans/)
- [헤더 우회 스캔](https://opendoor.readthedocs.io/examples/header-bypass-scans/)
- [VPN 전송 스캔](https://opendoor.readthedocs.io/examples/vpn-transport-scans/)
- [CI/CD 예시](https://opendoor.readthedocs.io/examples/ci-cd/)
---
### 차분 보고서 비교
OpenDoor는 새 스캔을 실행하지 않고도 정확히 두 개의 이전/현재 보고서를 비교할 수 있습니다. 두 개의 승인된 스캔 결과 사이에서 무엇이 나타났는지, 사라졌는지, 또는 변경되었는지 확인하고 싶을 때 사용하세요.
지원되는 입력 쌍은 SQLite 대 SQLite 및 JSON 대 JSON만 가능합니다. 혼합 형식, 누락된 파일, 유효하지 않은 보고서, 지원되지 않는 보고서 유형은 정상적인 검증 오류와 함께 실패합니다.
```bash
opendoor --diff reports/baseline/example.com.sqlite:reports/current/example.com.sqlite --reports std,json
opendoor --diff reports/baseline/example.com.json:reports/current/example.com.json --reports std,json --reports-dir ./diff
```
### CI/CD용 SARIF 보고서
OpenDoor는 GitHub 코드 스캐닝 및 SARIF 호환 보안 파이프라인을 위해 결과를 SARIF 2.1.0으로 내보낼 수 있습니다.
```bash
opendoor \
--host https://example.com \
--reports sarif,json \
--reports-dir ./reports
```
GitHub Actions 업로드 예시:
```yaml
- name: Upload OpenDoor SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: reports/example.com/example.com.sarif
category: opendoor
```
---
## 🎓 OpenDoor 마스터하기
재현 가능하고 허가된 웹 정찰 워크플로를 통해 OpenDoor를 학습하기 위한 실습 문서 시리즈입니다.

- [Part 1 — Context-Aware Web Recon Beyond Directory Brute Force](https://medium.com/@stanisov/mastering-opendoor-context-aware-web-recon-beyond-directory-brute-force-part-1-cc13eda8cd3d)
- [Part 2 — Low-Noise Recon with Redirects, Endpoint Sniffing, and Bounded Crawl](https://medium.com/@stanisov/mastering-opendoor-low-noise-recon-with-redirects-endpoint-sniffing-and-bounded-crawl-part-2-411b92675d6d)
- [시리즈 동반 페이지](https://opendoor.readthedocs.io/guides/mastering-opendoor/)
## 📚 문서
전체 문서는 ReadTheDocs에서 확인할 수 있습니다:
- [홈](https://opendoor.readthedocs.io/)
- [빠른 시작](https://opendoor.readthedocs.io/quickstart/)
- [설치 및 업데이트](https://opendoor.readthedocs.io/Installation-and-update/)
- [사용 가이드](https://opendoor.readthedocs.io/Usage/)
- [대상 입력](https://opendoor.readthedocs.io/concepts/target-input/)
- [보고서](https://opendoor.readthedocs.io/concepts/reports/)
- [핑거프린팅](https://opendoor.readthedocs.io/detection/fingerprinting/)
- [WAF 탐지 및 안전 모드](https://opendoor.readthedocs.io/detection/waf-detection/)
- [WAF 가드](https://opendoor.readthedocs.io/detection/waf-guard/)
- [헤더 주입 우회](https://opendoor.readthedocs.io/detection/header-bypass/)
- [자동 보정](https://opendoor.readthedocs.io/detection/auto-calibration/)
- [네트워크 전송](https://opendoor.readthedocs.io/transports/overview/)
- [TLS 호환성 및 mTLS](https://opendoor.readthedocs.io/transports/tls/)
- [OpenVPN 전송](https://opendoor.readthedocs.io/transports/openvpn/)
- [WireGuard 전송](https://opendoor.readthedocs.io/transports/wireguard/)
- [실용 예제](https://opendoor.readthedocs.io/examples/basic-scans/)
- [테스트](https://opendoor.readthedocs.io/Testing/)
- [기여](https://opendoor.readthedocs.io/Contribution/)
---
## 🧪 개발
개발 의존성을 설치합니다:
```bash
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements-dev.txt
python -m pip install -e .
```
테스트 실행:
```bash
python -m unittest
```
커버리지 실행:
```bash
coverage run -m unittest discover -s tests -p "test_*.py"
coverage report -m
```
빌드 문서:
```bash
python3 -m venv .docs-venv
source .docs-venv/bin/activate
python -m pip install -r docs/requirements.txt
python -m mkdocs build --strict
```
빌드 패키지 아티팩트:
```bash
python -m build
```
전체 [테스트 가이드](https://opendoor.readthedocs.io/Testing/)와 [기여 가이드](https://opendoor.readthedocs.io/Contribution/)를 참고하세요.
---
## 🔐 보안 및 시크릿 위생
실제 시크릿이나 개인 전송 프로필을 커밋하지 마세요.
다음을 절대 공개하지 마세요:
- 실제 OpenVPN 프로필;
- WireGuard 개인 키;
- mTLS 클라이언트 인증서 및 개인 키;
- auth-user-pass 파일;
- 쿠키;
- 베어러 토큰;
- 고객 대상 목록;
- 비공개 스캔 보고서;
- 민감한 CI 아티팩트.
자리 표시자 예시만 사용하세요.
---
## ⚖️ 책임 있는 사용
OpenDoor는 보안 테스트 도구입니다.
소유하고 있거나 명시적인 테스트 허가를 받은 시스템에만 사용하세요.
WAF 탐지, WAF 안전 스캐닝, 원시 요청 재전송, 전송 프로필, Header Injection Bypass 프로브와 같은 기능은 승인된 보안 테스트, 방어 검증, 노출 회귀 검사를 위한 것입니다.
이 프로젝트는 승인 없이 제3자 시스템, 조직, 상용 서비스 또는 공공 인프라를 스캔할 권한을 부여하지 않습니다.
---
## 🧾 변경 로그
[CHANGELOG.md](https://github.com/stanislav-web/opendoor/blob/master/CHANGELOG.md)와 [GitHub Releases](https://github.com/stanislav-web/OpenDoor/releases)를 참고하세요.
---
## 🤝 기여
풀 리퀘스트를 환영합니다.
기여하기 전에 [기여 가이드](https://opendoor.readthedocs.io/Contribution/)를 읽고 관련 테스트를 실행하세요.
---
[Read more](https://github.com/stanislav-web/opendoor)