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

PythonBeginner
지금 연습하기

소개

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

Network scanner GUI example

🎯 과제

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

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

🏆 성과

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

  • Python 프로젝트를 설정하고 라이브러리를 설치합니다.
  • 라이브러리를 가져와 Python 스크립트에서 사용합니다.
  • Tkinter 를 사용하여 GUI 를 생성합니다.
  • 사용자 입력을 처리하고 함수를 트리거합니다.
  • nmap 명령줄 도구를 사용하여 네트워크 스캔을 수행합니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 73%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

프로젝트 설정

새로운 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) 에 표시되어 사용자가 네트워크 스캔을 쉽게 수행하고 출력을 볼 수 있습니다. 요구 사항에 따라 더 많은 기능을 추가하고 사용자 인터페이스를 개선하여 네트워크 스캐너를 더욱 향상시킬 수 있습니다.