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

🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
- 프로젝트를 설정하고 필요한 라이브러리를 설치하는 방법
- 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 를 위한 tkinter와 nmap 명령줄 도구를 실행하기 위한 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을 사용하여 수행되며, 결과는 텍스트 영역에 표시됩니다.

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



