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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DivideAndScan — 전체 포트 스캔 결과를 분할하여 타겟 Nmap 실행에 사용합니다. | Kitploit
도구/GitHubGitHub/snovvcrash/divideandscan
Vulnerability ScannersNetwork MappingPort ScanningScripting & AutomationPenetration Testing
GitHubsnovvcrash/divideandscan

DivideAndScan

전체 포트 스캔 결과를 분할하여 타겟 Nmap 실행에 사용합니다.

저장소 보기
33349412년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DivideAndScan

Divide Et Impera And Scan (그리고 스캔 결과도 병합)

version python codacy pypi docker

추천 프로젝트

NixOSNixOSoffsec.tools
NixOSoffsec.tools

DivideAndScan은 포트 스캐닝 작업을 3단계로 나누어 효율적으로 자동화하는 데 사용됩니다:

  1. 여러 대상에 대해 열린 포트를 찾습니다.
  2. 각 대상에 대해 Nmap을 개별적으로 실행하여 버전 확인 및 NSE 스크립트를 적용합니다.
  3. 결과를 단일 Nmap 보고서(다양한 형식 지원)로 병합합니다.

1단계에서는 빠른 포트 스캐너*가 사용되며, 출력은 파싱되어 단일 파일 데이터베이스(TinyDB)에 저장됩니다. 그 다음 2단계에서는 데이터베이스 정보에 따라 각 대상의 열린 포트 집합에 대해 개별 Nmap 스캔이 시작됩니다(멀티프로세싱 지원). 마지막 3단계에서는 분리된 Nmap 출력이 nMap_Merger를 사용하여 단일 보고서( XML / HTML / 일반 텍스트 / grepable)로 병합됩니다. 시각화는 DrawNmap이 제공합니다.

잠재적 사용 사례:

  • 대규모 범위를 열거해야 하는 침투 테스트 계약 / 레드 팀 활동
  • 사이버 보안 워게임 / 교육용 CTF 연구실
  • OSCP 인증 시험

* 사용 가능한 포트 스캐너:

  • Nmap
  • Masscan
  • RustScan
  • Naabu
  • NimScan
  • sx

면책 조항. 이 저장소에 포함된 모든 정보는 교육 및 연구 목적으로만 제공됩니다. 작성자는 이 도구의 불법적인 사용에 대해 책임을 지지 않습니다.

작동 방식

how-it-works.png

설치 방법

사전 요구 사항

divide and scan을 성공적으로 수행하려면 몇 가지 좋은 포트 스캐닝 도구가 필요합니다(아래 예시에서는 GitHub 릴리스를 eget을 통해 가져옵니다).

📑 참고: 호스트 OS에서 의존성 문제를 겪고 싶지 않다면, Docker 부분으로 건너뛰세요.

Nmap

root@kitploit:~
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb

Masscan

root@kitploit:~
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*

RustScan

root@kitploit:~
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml

Naabu

root@kitploit:~
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu

NimScan

root@kitploit:~
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan

sx

root@kitploit:~
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx

dnsx

root@kitploit:~
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx

설치

DivideAndScan은 PyPI에 divideandscan으로 제공되지만, 항상 최신 버전을 사용하기 위해 pipx로 GitHub에서 설치하는 것을 권장합니다:

root@kitploit:~
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das

shiv로 패키징된 릴리스도 있습니다 (파일 크기가 크지만):

root@kitploit:~
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz

디버깅 목적으로 poetry로 개발 환경을 설정할 수 있습니다:

root@kitploit:~
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das

📑 참고: DivideAndScan은 모든 포트 스캐너를 실행하기 위해 sudo를 사용하므로, 스캔 명령어가 실행될 때 비밀번호를 요청합니다.

Docker에서 사용

dockeri.co

Docker 컨테이너에서 DivideAndScan을 다음과 같이 실행할 수 있습니다:

root@kitploit:~
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan

이 도구는 입력 데이터가 필요하고 출력 데이터를 생성하므로, 현재 작업 디렉토리를 컨테이너 내 /app에 마운트 포인트로 지정해야 합니다. 또한 호스트에 8050 포트를 게시하면 Nmap 보고서 시각화에 사용되는 Dash 앱에 접근할 수 있습니다.

기본 명령어를 더 짧게 만들기 위해 별칭을 설정할 수 있습니다:

root@kitploit:~
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

사용 방법

how-to-use.png

1. DB 채우기

add 모듈에 빠른 포트 스캐너 명령어를 제공하여 원하는 범위에서 열린 포트를 찾습니다.

⚠️ 경고: 거의 모든 포트 스캐닝 도구는 잘못 사용하면 테스트 중인 시스템을 손상시킬 수 있으므로, 자신이 무엇을 하고 있는지 반드시 이해하시기 바랍니다.

root@kitploit:~
# Nmap, 정확한 파싱을 위해 -v 플래그가 항상 필요합니다!
~$ das add nmap '-v -n -Pn -e eth0 --min-rate 1000 -T4 -iL hosts.txt -p1-65535 --open'
# Masscan
~$ das add masscan '--rate 1000 -iL hosts.txt -p1-65535 --open'
# RustScan
~$ das add rustscan '-b 1000 -t 2000 -u 5000 -a hosts.txt -r 1-65535 -g --no-config'
# Naabu
~$ das add naabu '-rate 1000 -iL hosts.txt -p - -silent -s s'
# NimScan
~$ das add nimscan '192.168.1.0/24 -vi -p:1-65535 -f:500'
# sx
~$ sudo sx arp -i eth0 192.168.1.0/24 --json | tee arp.cache
~$ das add sx 'tcp syn -a arp.cache -i eth0 --rate 1000/s 192.168.1.0/24 -p 445,3389'

모듈이 작업을 시작하면 ~/.das/db 디렉토리가 생성되고, 모듈 루틴이 완료되면 데이터베이스 파일과 원시 스캔 결과가 이 디렉토리에 저장됩니다.

2. 대상 스캔

scan 모듈로 대상 Nmap 스캔을 시작합니다. -hosts 또는 -ports 옵션으로 스캔 대상을 조정할 수 있습니다:

root@kitploit:~
# 호스트별 스캔
~$ das scan -hosts all -oA report1
~$ das scan -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das scan -hosts hosts.txt -oA report1
# 포트별 스캔
~$ das scan -ports all -oA report2
~$ das scan -ports 22,80,443,445 -oA report2
~$ das scan -ports ports.txt -oA report2

여러 프로세스에서 Nmap을 동시에 시작하려면 -parallel 스위치를 지정하고 -proc 옵션으로 작업자 수를 설정합니다(값을 제공하지 않으면 시스템의 프로세서 수로 기본 설정됩니다):

root@kitploit:~
~$ das scan -hosts all -oA report -parallel [-proc 4]

출력 형식은 -oX, -oN, -oG, -oA 옵션으로 각각 XML+HTML 형식, 일반 텍스트 형식, grepable 형식, 모든 형식으로 선택됩니다. 모듈이 완료되면 Nmap 원시 스캔 보고서가 포함된 ~/.das/nmap_<DB_NAME> 디렉토리가 생성됩니다.

또한 스캔을 실제로 시작하기 전에 -show 옵션으로 데이터베이스 내용을 검사할 수 있습니다:

root@kitploit:~
~$ das scan -hosts all -show

3 (선택 사항). 보고서 병합

scan 모듈과 별도로 보고서를 생성하려면 report 모듈을 사용해야 합니다. 이 모듈은 ~/.das/nmap_<DB_NAME> 디렉토리에서 Nmap 원시 스캔 보고서를 검색하고 -hosts 또는 -ports 옵션을 기준으로 처리 및 병합합니다:

root@kitploit:~
# 호스트별 출력 병합
~$ das report -hosts all -oA report1
~$ das report -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das report -hosts hosts.txt -oA report1
# 포트별 출력 병합
~$ das report -ports all -oA report2
~$ das report -ports 22,80,443,445 -oA report2
~$ das report -ports ports.txt -oA report2

📑 참고: report 모듈은 -hosts 또는 -ports 옵션을 처리할 때 DB를 검색하지 않고, 대신 ~/.das/nmap_<DB_NAME> 디렉토리에서 직접 Nmap 원시 보고서를 찾는다는 점을 명심하세요. 즉, -hosts 127.0.0.1 인수 값은 ~/.das/nmap_<DB_NAME>/127-0-0-1.* 파일이 존재하는 경우에만 성공적으로 해석되며, -ports 80 인수 값은 ~/.das/nmap_<DB_NAME>/port80.* 파일이 존재하는 경우에만 성공적으로 해석됩니다.

🔥 예제 🔥

Hack The Box의 모든 라이브 머신에 대해 열린 포트를 열거해 보겠습니다.

  1. Masscan으로 데이터베이스에 "호스트 ⇄ 열린 포트" 매핑을 추가합니다. 데모 목적으로 불필요한 항목을 피하기 위해 -p1-49151를 사용하여 동적 포트 범위를 제외하겠습니다. 두 번째 스크린샷에서는 호스트별 및 포트별로 스캔 결과를 검토하고 있습니다:
root@kitploit:~
~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'

example-1.png

root@kitploit:~
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show

example-2.png

  1. 각 대상에 대해 관심 있는 포트(열린 포트)만 열거하도록 Nmap 프로세스를 시작합니다. 두 번째 스크린샷에서는 동일한 작업을 수행하지만 Nmap 프로세스를 동시에 시작하고 있습니다:
root@kitploit:~
~$ das -db htb scan -hosts all -oA report

example-3.png

root@kitploit:~
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel

example-4.png

  1. 결과적으로 익숙한 모든 Nmap 형식(일반 텍스트, grepable, XML)의 단일 보고서와 예쁜 HTML 보고서가 생성됩니다.

example-5.png

나만의 스캐너 가져오기!

DivideAndScan에 자신이 선호하는 포트 스캐너를 연결하려면 das/parsers/DUMMY_SCANNER.py에서 그 출력에 대한 단일 parse 메소드를 구현하면 됩니다(masscan에 대한 예제 참조):

root@kitploit:~
from das.parsers import IAddPortscanOutput


class AddPortscanOutput(IAddPortscanOutput):
    """DUMMY_SCANNER 출력 처리를 위한 자식 클래스."""

    def parse(self):
        """
        DUMMY_SCANNER 원시 출력 파서.

        :return: (포트스캔 원시 출력 파일 이름, DB에 추가된 호스트 수) 값의 쌍
        :rtype: tuple
        """
        hosts = set()
        for line in self.portscan_raw:
            # DUMMY_SCANNER 파서 구현
            pass

        return (self.portscan_out, len(hosts))

도움말

root@kitploit:~
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...

 -----------------------------------------------------------------------------------------------
|  ________  .__      .__    .___        _____              .____________                       |
|  \______ \ |__|__  _|__| __| _/____   /  _  \   ____    __| _/   _____/ ____ _____    ____    |
|   |    |  \|  \  \/ /  |/ __ |/ __ \ /  /_\  \ /    \  / __ |\_____  \_/ ___\\__  \  /    \   |
|   |    `   \  |\   /|  / /_/ \  ___//    |    \   |  \/ /_/ |/        \  \___ / __ \|   |  \  |
|  /_______  /__| \_/ |__\____ |\___  >____|__  /___|  /\____ /_______  /\___  >____  /___|  /  |
|          \/                 \/    \/        \/     \/      \/       \/     \/     \/     \/   |
|  {@snovvcrash}            {https://github.com/snovvcrash/DivideAndScan}             {vX.Y.Z}  |
 -----------------------------------------------------------------------------------------------

positional arguments:
  {db,add,scan,dns,report,parse,draw,tree,help}
    db                  수동 DB 조작을 위한 유틸리티
    add                 전체 포트 스캔을 실행하고 출력을 DB에 추가
    scan                DB의 호스트 및 포트를 대상으로 Nmap 스캔 실행
    dns                 입력 파일의 도메인 이름을 DB의 해당 IP 주소에 매핑
    report              별도의 Nmap 출력을 단일 보고서로 병합 (https://github.com/CBHue/nMap_Merger)
    parse               원시 Nmap XML 보고서를 서비스 이름으로 파싱하고 {service}://{host}:{port} 형식으로 항목 출력
    draw                Nmap XML 보고서 시각화 (https://github.com/jor6PS/DrawNmap)
    tree                tree를 사용하여 ~/.das/ 디렉토리 내용 표시
    help                선택한 포트 스캐너의 내장 --help 대화상자 표시

options:
  -h, --help            이 도움말 메시지를 표시하고 종료
  -db DB                작업할 DB 이름

Psst, 친구야... 체계적인 포트 스캔 좀 해볼래?

ToDo

  • projectdiscovery/naabu 파서 추가
  • elddy/NimScan 파서 추가
  • sx 파서 추가
  • ZMap 파서 추가
  • 호스트 이름(있는 경우)을 IP 값 옆에 저장
  • 웹 디렉토리 퍼징 자동화를 위한 fuff 스위치 추가 (parse 모듈 추가됨)
도구 다운로드