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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mitmproxy2swagger — 트래픽 캡처를 통해 REST API를 자동으로 리버스 엔지니어링 | Kitploit
도구/GitHubGitHub/alufers/mitmproxy2swagger
Reverse EngineeringInformation GatheringWeb SecurityAPI Security
GitHubalufers/mitmproxy2swagger

mitmproxy2swagger

트래픽 캡처를 통해 REST API를 자동으로 리버스 엔지니어링

저장소 보기
9.6k3701개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

mitmproxy2swagger

PyPI version Arch Linux repository

https://user-images.githubusercontent.com/5400940/168086818-c48f60ab-3f95-42eb-b435-c8b1a6326b81.mp4

mitmproxy 캡처를 OpenAPI 3.0 사양으로 자동 변환하는 도구입니다. 즉, 앱을 실행하고 트래픽을 캡처하기만 하면 REST API를 자동으로 리버스 엔지니어링할 수 있습니다.


🆕 새 기능!

브라우저 DevTools에서 내보낸 HAR 파일 처리 지원이 추가되었습니다. 자세한 내용은 사용법 - HAR을 참조하세요.


설치

먼저 python3와 pip3가 필요합니다.

root@kitploit:~
$ pip install mitmproxy2swagger
# ... 또는 ...
$ pip3 install mitmproxy2swagger
# ... 또는 ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger .

그런 다음 저장소를 클론하고 아래 예제와 같이 mitmproxy2swagger를 실행하세요.

사용법

Mitmproxy

HTTP 트래픽을 검사하여 사양을 생성하려면 다음 단계를 따르세요.

  1. mitmproxy 도구를 사용하여 트래픽을 캡처합니다. 개인적으로는 mitmproxy에 내장된 웹 인터페이스인 mitmweb을 사용하는 것을 추천합니다.

    root@kitploit:~
    $ mitmweb
    Web server listening at http://127.0.0.1:8081/
    Proxy server listening at http://*:9999
    ...
    

    중요

    클라이언트가 mitmproxy가 노출하는 프록시를 사용하도록 구성하는 방법은 mitmproxy 문서를 참조하세요.

  2. 트래픽을 흐름 파일로 저장합니다.

    mitmweb에서는 "File" 메뉴의 "Save" 옵션을 사용하여 저장할 수 있습니다:

    파일 메뉴에서 "저장" 옵션의 위치를 보여주는 스크린샷

  3. mitmproxy2swagger의 첫 번째 패스를 실행합니다:

    root@kitploit:~
    $ mitmproxy2swagger -i <mitmproxy_flow_경로> -o <출력_스키마_경로> -p <api_접두사>
    # ... 또는 ...
    $ docker run -it -v $PWD:/app mitmproxy2swagger mitmproxy2swagger -i <mitmproxy_flow_경로> -o <출력_스키마_경로> -p <api_접두사>
    

    기존 스키마를 사용할 수 있으며, 이 경우 기존 스키마가 새 데이터로 확장됩니다. 여러 번 실행하여 다른 흐름 캡처를 추가할 수 있으며, 캡처된 데이터는 안전하게 병합됩니다.

    <api_접두사>는 리버스 엔지니어링하려는 API의 기본 URL입니다. mitmproxy에서 요청을 관찰하여 이 값을 알아내야 합니다.

    예를 들어 앱이 다음과 같은 요청을 보낸 경우:

    root@kitploit:~
    https://api.example.com/v1/login
    https://api.example.com/v1/users/2
    https://api.example.com/v1/users/2/profile
    

    접두사는 https://api.example.com/v1일 가능성이 높습니다.

  4. 첫 번째 패스를 실행하면 스키마 파일에 다음과 같은 섹션이 생성됩니다:

    root@kitploit:~
    x-path-templates:
      # 엔드포인트를 생성하려면 ignore: 접두사를 제거하세요.
      # 위쪽에 가까운 줄이 우선 적용되며, 매칭은 탐욕적입니다.
      - ignore:/addresses
      - ignore:/basket
      - ignore:/basket/add
      - ignore:/basket/checkouts
      - ignore:/basket/coupons/attach/{id}
      - ignore:/basket/coupons/attach/104754
    

HAR

  1. 브라우저 DevTools에서 트래픽을 캡처하고 내보냅니다.

    브라우저 DevTools의 네트워크 탭에서 "Export HAR" 버튼을 클릭합니다.

    HAR 내보내기 버튼의 위치를 보여주는 스크린샷

  2. mitmproxy 덤프와 동일한 방식으로 진행합니다. mitmproxy2swagger가 HAR 파일을 자동으로 감지하여 처리합니다.

예제 출력

예제를 참조하세요. 생성된 스키마와 (redoc-cli를 통해 생성된) 문서 HTML 파일이 있습니다.

생성된 HTML 파일을 확인하세요.

개발 및 기여

이 프로젝트는 다음을 사용합니다:

  • uv - 의존성 관리
  • prek - 코드 포매팅 및 린팅
  • pytest - 단위 테스트

의존성 설치:

root@kitploit:~
uv sync

린터 실행:

root@kitploit:~
uv run prek run --all-files

prek 훅 설치:

root@kitploit:~
uv run prek install

테스트 실행:

root@kitploit:~
uv run pytest

커버리지와 함께 테스트 실행:

root@kitploit:~
uv run pytest --cov=mitmproxy2swagger

라이선스

MIT

도구 다운로드

텍스트 편집기로 스키마 파일을 열고, 생성하려는 경로에서 ignore: 접두사를 제거해야 합니다. 경로에 나타나는 매개변수도 조정할 수 있습니다.

  • mitmproxy2swagger의 두 번째 패스를 실행합니다:

    root@kitploit:~
    $ mitmproxy2swagger -i <mitmproxy_flow_경로> -o <출력_스키마_경로> -p <api_접두사> [--examples]
    # ... 또는 ...
    $ docker run -it -v $PWD:/app mitmproxy2swagger mitmproxy2swagger -i <mitmproxy_flow_경로> -o <출력_스키마_경로> -p <api_접두사> [--examples]
    

    동일한 스키마 파일로 명령을 두 번째 실행합니다. 이전에 편집한 줄을 인식하여 엔드포인트 설명을 생성합니다.

    mitmproxy2swagger는 기존 엔드포인트 설명을 덮어쓰지 않습니다. 덮어쓰려면 두 번째 패스를 실행하기 전에 해당 설명을 삭제하면 됩니다.

    --examples를 전달하면 요청과 응답에 예제 데이터가 추가됩니다. 이 옵션을 사용할 때는 주의하세요. 스키마에 토큰, 비밀번호, 개인 정보 등의 민감한 데이터가 포함될 수 있습니다. --headers를 전달하면 요청과 응답에 헤더 데이터가 추가됩니다. 이 옵션을 사용할 때는 주의하세요. 스키마에 토큰, 비밀번호, 개인 정보 등의 민감한 데이터가 포함될 수 있습니다.