Python 으로 네트워크 스캐너 구축하기

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 Python 을 사용하여 네트워크 스캐너를 구축하는 방법을 배우게 됩니다. 네트워크 스캐너는 nmap 명령줄 도구를 활용하여 지정된 IP 주소를 스캔하고, Tkinter 라이브러리를 사용하여 그래픽 사용자 인터페이스 (GUI) 에 결과를 표시합니다.

Network scanner GUI example

🎯 과제

이 프로젝트에서는 다음을 배우게 됩니다:

  • 프로젝트를 설정하고 필요한 라이브러리를 설치하는 방법
  • GUI 및 nmap 명령줄 도구를 실행하기 위해 필요한 라이브러리를 가져오는 방법
  • 사용자가 입력한 IP 주소를 가져와 네트워크를 스캔하는 스캔 함수를 정의하는 방법
  • GUI 의 메인 윈도우를 생성하는 방법
  • IP 주소 입력 필드와 "Scan Network" 버튼을 추가하는 방법
  • 스캔 결과를 표시할 텍스트 영역을 생성하는 방법
  • 프로젝트를 실행하고 네트워크 스캔을 수행하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Python 프로젝트를 설정하고 라이브러리를 설치합니다.
  • 라이브러리를 가져와 Python 스크립트에서 사용합니다.
  • Tkinter 를 사용하여 GUI 를 생성합니다.
  • 사용자 입력을 처리하고 함수를 트리거합니다.
  • nmap 명령줄 도구를 사용하여 네트워크 스캔을 수행합니다.

프로젝트 설정

새로운 Python 파일을 생성하고 network_scanner.py로 이름을 지정합니다. 원하는 코드 편집기에서 파일을 엽니다.

cd ~/project
touch network_scanner.py

그런 다음, 다음 명령을 사용하여 nmap, tkinter, 그리고 python-nmap 명령줄 도구를 설치합니다:

sudo apt update
sudo apt-get install nmap -y
sudo apt-get install python3-tk -y
sudo pip install python-nmap

필요한 라이브러리 가져오기

파일 시작 부분에서 필요한 라이브러리를 가져옵니다: GUI 를 위한 tkinternmap 명령줄 도구를 실행하기 위한 subprocess.

import tkinter as tk
import subprocess

스캔 함수 정의

"Scan Network" 버튼을 클릭했을 때 실행될 scan_network라는 함수를 정의합니다. 이 함수는 사용자가 입력한 IP 주소를 가져오고, 결과 텍스트 영역을 지운 다음, 네트워크를 스캔하기 위해 nmap 명령을 실행합니다.

def scan_network():
    ip_address = entry_ip.get()
    result_text.delete(1.0, tk.END)
    result_text.insert(tk.END, f"Scanning network: {ip_address}\n\n")

    try:
        output = subprocess.check_output(["nmap", "-F", ip_address])
        result_text.insert(tk.END, output.decode("utf-8"))
    except subprocess.CalledProcessError:
        result_text.insert(tk.END, "An error occurred while scanning the network.")

메인 윈도우 생성

Tkinter 의 Tk() 클래스를 사용하여 GUI 의 메인 윈도우를 생성합니다.

window = tk.Tk()
window.title("Network Scanner")

입력 필드 및 스캔 버튼 추가

사용자가 IP 주소를 입력할 수 있도록 레이블과 입력 필드를 생성합니다. 그런 다음, 클릭 시 scan_network 함수를 호출하는 "Scan Network" 버튼을 생성합니다.

label_ip = tk.Label(window, text="Enter IP Address:")
label_ip.pack()
entry_ip = tk.Entry(window)
entry_ip.pack()
scan_button = tk.Button(window, text="Scan Network", command=scan_network)
scan_button.pack()

결과 텍스트 영역 추가

Tkinter 의 Text() 클래스를 사용하여 텍스트 영역을 생성합니다. 이 텍스트 영역은 스캔 결과를 표시합니다.

result_text = tk.Text(window)
result_text.pack()

메인 루프 시작

GUI 의 메인 루프를 시작하기 위해 파일 끝에 다음 줄을 추가합니다.

window.mainloop()

프로젝트 실행

파일을 저장하고 Python 인터프리터를 사용하여 실행합니다. GUI 창이 나타납니다.

cd ~/project
python network_scanner.py

스캔하려는 IP 주소를 입력 필드에 입력하고 "Scan Network" 버튼을 클릭합니다. 네트워크 스캔은 nmap을 사용하여 수행되며, 결과는 텍스트 영역에 표시됩니다.

Network scanner GUI window

요약

이 프로젝트에서는 Tkinter 라이브러리를 사용하여 Python 으로 네트워크 스캐너를 구축하는 방법을 배웠습니다. 네트워크 스캐너는 지정된 IP 주소를 스캔하기 위해 nmap 명령줄 도구를 활용합니다. 결과는 그래픽 사용자 인터페이스 (GUI) 에 표시되어 사용자가 네트워크 스캔을 쉽게 수행하고 출력을 볼 수 있습니다. 요구 사항에 따라 더 많은 기능을 추가하고 사용자 인터페이스를 개선하여 네트워크 스캐너를 더욱 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습