Создание сетевого сканера на Python

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь создавать сканер сети с использованием Python. Сканер сети будет использовать командную строку nmap для сканирования указанного IP-адреса и отображения результатов в графическом интерфейсе пользователя (GUI) с помощью библиотеки Tkinter.

Пример GUI сканера сети

🎯 Задачи

В этом проекте вы научитесь:

  • Настраивать проект и устанавливать необходимые библиотеки
  • Импортировать необходимые библиотеки для GUI и выполнения командной строки nmap
  • Определять функцию сканирования для получения введенного пользователем IP-адреса и сканирования сети
  • Создавать главное окно GUI
  • Добавлять поле ввода для IP-адреса и кнопку "Сканировать сеть"
  • Создавать текстовую область для отображения результатов сканирования
  • Запускать проект и выполнять сканирование сети

🏆 Достижения

После завершения этого проекта вы сможете:

  • Настраивать проект на Python и устанавливать библиотеки
  • Импортировать библиотеки и использовать их в скрипте Python
  • Создавать GUI с использованием Tkinter
  • Обрабатывать пользовательский ввод и запускать функции
  • Использовать командную строку 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
✨ Проверить решение и практиковаться

Импорт необходимых библиотек

В начале файла импортируйте необходимые библиотеки: tkinter для GUI и subprocess для выполнения командной строки nmap.

import tkinter as tk
import subprocess
✨ Проверить решение и практиковаться

Определение функции сканирования

Определите функцию с именем 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.")
✨ Проверить решение и практиковаться

Создание главного окна

Создайте главное окно GUI с использованием класса Tk() из библиотеки Tkinter.

window = tk.Tk()
window.title("Network Scanner")
✨ Проверить решение и практиковаться

Добавление поля ввода и кнопки сканирования

Создайте метку и поле ввода, чтобы пользователь мог ввести IP-адрес. Затем создайте кнопку "Сканировать сеть", которая вызовет функцию 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()
✨ Проверить решение и практиковаться

Добавление текстовой области для результатов

Создайте текстовую область с использованием класса Text() из библиотеки Tkinter. Эта текстовая область будет отображать результаты сканирования.

result_text = tk.Text(window)
result_text.pack()
✨ Проверить решение и практиковаться

Запуск главного цикла

Добавьте следующую строку в конце файла, чтобы запустить основной цикл GUI:

window.mainloop()
✨ Проверить решение и практиковаться

Запуск проекта

Сохраните файл и запустите его с помощью интерпретатора Python. Появится окно GUI.

cd ~/project
python network_scanner.py

Введите IP-адрес, который вы хотите сканировать, в поле ввода и нажмите кнопку "Сканировать сеть". Сетевое сканирование будет выполнено с использованием nmap, и результаты будут отображены в текстовой области.

Окно GUI сканера сети
✨ Проверить решение и практиковаться

Резюме

В этом проекте вы научились создавать сетевой сканер на Python с использованием библиотеки Tkinter. Сетевой сканер использует командную строку nmap для сканирования указанного IP-адреса. Результаты отображаются в графическом интерфейсе пользователя, что позволяет пользователям легко выполнять сетевые сканирования и просматривать вывод. Вы можете дальнейшим образом улучшить сетевой сканер, добавив больше функций и улучшив пользовательский интерфейс в соответствии с вашими требованиями.