로컬 네트워크 스캐너
로컬 IPv4 네트워크를 스캔(ARP + nmap 프로빙)하고 장치를 표시하며, 전체 포트 스캔을 실행하고 결과를 내보낼 수 있는 Tkinter GUI 애플리케이션입니다.
빠른 개요
- LAN에 있는 장치를 검색하기 위한 ARP 스캔
- 호스트 이름, 제조사, 오픈 포트, OS 추측, 지연 시간에 대한 개선된 nmap 프로브
- 선택한 장치에 대해 집중적인 nmap 스캔을 실행하는 전체 포트 버튼
- 탐지된 오픈 포트를 기반으로 한 스마트 위험 점수(낮음/중간/높음/심각)
- 실시간 대시보드 통계(총 장치 수, 오픈 포트 호스트, 고위험 호스트, 평균 지연 시간)
- 빠른 분류를 위한 실시간 필터링/검색 및 정렬 가능한 테이블 열
- 선택 재스캔, IP 복사, 네트워크 인사이트(로컬/공용 IP 및 플랫폼 세부 정보)
- CSV 또는 JSON으로 결과 내보내기
요구 사항
- Windows 10/11 (테스트 완료)
- Python 3.9+ (3.10+ 권장)
- Nmap이 설치되어 PATH에 있어야 함 (https://nmap.org/에서 다운로드)
- Npcap 설치 필요 (Windows에서 scapy에 필요) — 제공 시 "WinPcap 호환 모드" 선택
- 완전한 기능(ARP, raw 소켓, 일부 nmap 기능)을 위해 관리자 권한으로 스크립트 실행
Python 패키지(requirements.txt를 통해 설치):
- scapy
- python-nmap
- tqdm
- requests
설치
- PowerShell을 엽니다 (편의상 관리자로 실행 권장)
- 가상 환경 생성 및 활성화 (선택 사항이지만 권장)
- python -m venv .venv
- ..venv\Scripts\Activate.ps1
- 패키지 설치
- pip install -r requirements.txt
nmap.exe가 설치되어 PATH에 있는지 확인합니다 (nmap --version 실행하여 확인).
GUI 실행
권장(Windows):
- Visual Studio Code를 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택한 후 프로젝트를 열고 F5를 눌러 디버그 또는 실행합니다.
- 또는 관리자 PowerShell을 열고 다음을 실행합니다:
참고:
- 프로그램 시작 시 권한 상승을 요청합니다(ShellExecute). VS Code에서 실행하는 경우 VS Code를 관리자로 시작하여 통합 디버거가 올바르게 권한을 가지고 실행되도록 하십시오.
- UAC 프롬프트를 수락한 후 GUI가 나타나지 않으면 상승된 PowerShell에서 직접 스크립트를 실행하여 확인하십시오.
VS Code 설정
디버그 구성을 추가하려면 .vscode/launch.json을 만듭니다 (예시):
{
"version": "0.2.0",
"configurations": [
{
"name": "Network Scanner (Admin)",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/app.py",
"console": "integratedTerminal",
"args": []
}
]
}
중요: Windows에서는 디버그 구성을 실행하기 전에 VS Code 자체를 관리자로 실행하는 것이 더 간단합니다 (마우스 오른쪽 버튼 → 관리자 권한으로 실행).
GUI 사용법
- IP 범위 입력 방식:
- CIDR:
192.168.1.0/24
- 단일 IP:
192.168.1.10
- 하이픈 범위:
192.168.1.1-254 또는 192.168.1.10-192.168.1.20
- 와일드카드:
192.168.1.*
- 쉼표 목록:
192.168.1.1,192.168.1.5,192.168.1.100
- 버튼:
- 스캔 시작 — ARP 발견 + 가벼운 프로브
- 전체 포트 스캔 — 행을 선택하고 클릭하여 해당 IP에 대한 집중적인 nmap 스캔 실행
- 선택 재스캔 — 현재 선택된 호스트의 세부 정보만 새로 고침
- IP 복사 — 선택된 호스트 IP를 클립보드에 복사
- 네트워크 인사이트 — 로그 패널에 로컬/공용 네트워크 메타데이터 출력
- 중지 — 스캔 중지 요청
- CSV 내보내기 / JSON 저장 — 수집된 장치 정보 저장
- 종료 — 앱 닫기
- 실시간 장치 필터링 (IP, 호스트 이름, 제조사, OS 또는 위험도로 검색) 및 선택적으로 오픈 포트가 있는 호스트만 표시
- 열 머리글을 클릭하여 행 정렬
- 장치 행을 클릭하여 사용자 친화적인 요약 및 하단 패널의 원시 구조화된 데이터 표시. IP가 있는 경우 로그의 줄을 클릭하여 장치를 자동 선택할 수 있습니다.
동작 및 제한 사항
- ARP 스캔은 로컬 이더넷/LAN 세그먼트에서만 작동합니다.
- 전체 포트 스캔 및 OS 탐지는 관리자 권한이 필요할 수 있으며 호스트당 몇 분이 소요될 수 있습니다.
- 하이픈/와일드카드 확장에는 우발적인 대규모 스캔을 방지하기 위한 제한이 있습니다 (방어적).
- Nmap은 별도로 설치해야 합니다 — python-nmap은 단지 래퍼일 뿐입니다.
문제 해결
- "관리자 승인" UAC 대화상자가 나타나지만 GUI가 열리지 않는 경우:
- VS Code가 관리자로 시작되었는지 확인하거나(권장) 관리자 PowerShell에서 스크립트를 실행하십시오.
- 동일한 환경에서
nmap --version이 작동하는지 확인하십시오.
- 디버거를 사용하는 경우 상승된 VS Code 인스턴스에서 디버그 세션을 실행하십시오.
- Windows에서 scapy가 실패하는 경우: Npcap이 설치되었는지 확인하고 가상 환경이 동일한 Python 인터프리터를 사용하는지 확인하십시오.
보안 및 법적 고지
소유하거나 테스트할 명시적 권한이 있는 네트워크 및 장치만 스캔하십시오. 무단 스캔은 불법이거나 혼란을 초래할 수 있습니다.
로드맵
스캐너 개선 사항
인터페이스
보안 기능
플랫폼 지원