
인가된 침투 테스트를 위한 교육용 Python 툴킷: 스레드 기반 포트 스캐너, 서브도메인 및 디렉터리 열거, 배너 그래버 및 호스트 검색, 풍부한 CLI 제공.
권한이 부여된 침투 테스트에서 사용되는 일반적인 정찰 및 열거 작업을 자동화하는 가볍고 교육용인 Python 툴킷입니다. 사이버보안 / 윤리적 해킹 실습을 위한 학습 프로젝트로 제작되었습니다.
이 툴킷은 능동 스캐닝 및 열거를 수행합니다. 본인이 소유하지 않았거나 테스트에 대한 명시적인 서면 허가가 없는 시스템을 대상으로 실행하는 것은 대부분의 관할 지역에서 범죄에 해당할 수 있습니다.
제작자는 오용에 대해 어떠한 책임도 지지 않습니다.
| 명령어 | 수행 작업 |
|---|---|
portscan | 호스트에 대한 동시 TCP connect 스캔 |
banner | 열린 포트에서 서비스 배너 수집 |
dirscan | 워드리스트를 사용한 웹 경로 열거 |
subdomains | 후보 서브도메인 확인 |
netscan | CIDR 범위에서 활성 호스트 탐색 |
httpprobe | HTTP 응답 검사 (상태, 헤더, 미리보기) |
logincheck | 취약/기본 자격 증명 위험에 대한 실습 전용 데모 (속도 제한) |
v1 → v2 변경 사항: 모듈화된 패키지, 서브커맨드를 갖춘 argparse CLI, 스레드 기반 스캐너, rich 기반 UI (ASCII 배너, 실시간 진행 표시줄 및 결과 테이블), 입력 검증, 권한 부여 게이트, 단위 테스트 및 GitLab CI 파이프라인.
# install virtualenv and activate
python3 -m venv venv
. venv/bin/activate
# install packages
pip3 install -r requirements.txt
# run (always from the project root)
python3 main.py --help
python -m venv venv
. .\venv\Scripts\activate # (PowerShell)
. venv/scripts/activate # (Git Shell)
pip install -r requirements.txt
python main.py --help
항상 프로젝트 루트에서 python main.py …를 통해 실행하십시오 (src 패키지에는 http와 dir이라는 이름의 모듈이 포함되어 있어, src/ 내부에서 스크립트를 실행하면 표준 라이브러리를 가릴 수 있습니다).
# Port scan with a custom port set / range
python main.py portscan 192.168.1.10 --ports 22,80,443
python main.py portscan 192.168.1.10 --ports 1-1024
# Banner grab
python main.py banner 192.168.1.10 22
# Directory enumeration (default or custom wordlist)
python main.py dirscan http://target.local
python main.py dirscan http://target.local --wordlist admin login backup api
# Subdomain discovery
python main.py subdomains example.com
# Live-host discovery on a subnet
python main.py netscan 192.168.1.0/24
# HTTP response inspection
python main.py httpprobe http://target.local
# Credential test against a lab login form (authorization required)
python main.py logincheck http://target.local/login \
--users admin user --passwords admin 1234 password
# Global options
python main.py --threads 100 --timeout 1.5 -v portscan 192.168.1.10
# Skip the interactive prompt in scripted, pre-scoped engagements
python main.py --i-am-authorized netscan 10.0.0.0/24
pip install -r requirements-dev.txt # runtime + pytest + ruff
pytest -v # run tests
ruff check . # lint
런타임 의존성은 requirements.txt에 있고, 테스트/린트 도구는 requirements-dev.txt에 있습니다 (런타임 의존성도 함께 포함됨). 따라서 최종 사용자는 pytest를 설치하지 않습니다.
GitLab 파이프라인 (.gitlab-ci.yml)은 모든 푸시에서 린트 + 테스트를 실행합니다.
simple-pentesting/
├── main.py # entry point (run from here)
├── src/ # the package
│ ├── __init__.py
│ ├── cli.py # argparse CLI
│ ├── config.py # defaults & Settings
│ ├── utils.py # validation helpers
│ ├── ui.py # rich UI: banner, progress, tables, auth prompt
│ ├── port_scanner.py # one file per feature ↓
│ ├── banner.py
│ ├── dir.py
│ ├── subdomain.py
│ ├── netscan.py
│ ├── http.py
│ └── login_check.py
├── tests/ # offline unit tests
├── .gitlab-ci.yml
├── requirements.txt # runtime deps
├── requirements-dev.txt # + pytest, ruff
├── LICENSE
└── .gitignore