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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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

🎯 Задачи

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

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

🏆 Достижения

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

  • Настраивать проект на Python и устанавливать библиотеки
  • Импортировать библиотеки и использовать их в скрипте Python
  • Создавать GUI с использованием Tkinter
  • Обрабатывать пользовательский ввод и запускать функции
  • Использовать командную строку nmap для сканирования сети

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/NetworkingGroup(["Networking"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/ControlFlowGroup -.-> python/while_loops("While Loops") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") python/NetworkingGroup -.-> python/networking_protocols("Networking Protocols") subgraph Lab Skills python/while_loops -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/function_definition -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/importing_modules -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/using_packages -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/standard_libraries -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/classes_objects -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/catching_exceptions -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/os_system -.-> lab-298855{{"Создание сетевого сканера на Python"}} python/networking_protocols -.-> lab-298855{{"Создание сетевого сканера на Python"}} end

Настройка проекта

Создайте новый файл 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-адреса. Результаты отображаются в графическом интерфейсе пользователя, что позволяет пользователям легко выполнять сетевые сканирования и просматривать вывод. Вы можете дальнейшим образом улучшить сетевой сканер, добавив больше функций и улучшив пользовательский интерфейс в соответствии с вашими требованиями.