5 шагов: как написать сканер сети на python 🚀🔎
Чтобы написать сканер сети на Python, можно использовать библиотеку Scapy. Вот пример кода:
import scapy.all as sc
def scan_network(ip):
arp_request = sc.ARP(pdst=ip)
ether = sc.Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp_request
result = sc.srp(packet, timeout=3, verbose=False)[0]
devices = []
for sent, received in result:
devices.append({"IP": received.psrc, "MAC": received.hwsrc})
return devices
network_ip = "192.168.0.1/24"
devices_found = scan_network(network_ip)
for device in devices_found:
print("IP:", device["IP"], "MAC:", device["MAC"])
В этом примере мы используем библиотеку Scapy для отправки ARP-запросов на заданный диапазон IP-адресов. Мы получаем ответы от устройств в сети и выводим информацию об их IP-адресах и MAC-адресах.
Детальный ответ
Как написать сканер сети на Python
Python предлагает простой и эффективный способ написания сканера сети. В этой статье мы рассмотрим, как использовать Python для создания сканера сети, который может обнаруживать активные узлы в сети и сканировать порты на этих узлах. Давайте начнем!
Импорт библиотеки
Первым шагом является импорт необходимых библиотек. Для написания сканера сети на Python мы будем использовать библиотеку socket, которая предоставляет возможности взаимодействия сетевых приложений. Для импорта библиотеки можно использовать следующий код:
import socket
Функция сканирования портов
Далее создадим функцию, которая будет сканировать указанный диапазон портов на определенном IP-адресе. Вот пример кода для создания такой функции:
def scan_ports(ip, start_port, end_port):
for port in range(start_port, end_port + 1):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
if result == 0:
print(f"Порт {port} открыт")
sock.close()
В этой функции мы используем цикл, чтобы перебрать все порты в указанном диапазоне. Для каждого порта мы создаем сокет, устанавливаем таймаут в 1 секунду, и пытаемся подключиться к указанному IP-адресу и порту. Если результат подключения равен 0, это означает, что порт открыт, и мы выводим соответствующее сообщение. Наконец, мы закрываем сокет.
Главная функция
Теперь создадим главную функцию, которая будет запрашивать IP-адрес и диапазон портов у пользователя, а затем вызывать функцию сканирования портов. Вот пример кода для создания такой функции:
def main():
ip = input("Введите IP-адрес: ")
start_port = int(input("Введите начальный порт: "))
end_port = int(input("Введите конечный порт: "))
scan_ports(ip, start_port, end_port)
if __name__ == "__main__":
main()
В этой функции мы используем функцию input для получения от пользователя IP-адреса, начального и конечного порта. Затем мы вызываем функцию scan_ports, передавая полученные значения. Это позволяет пользователю указать необходимые параметры для сканирования.
Запуск сканера
Чтобы запустить сканер, достаточно вызвать главную функцию main. После запуска программа будет запрашивать IP-адрес и диапазон портов, а затем начнет сканирование. Ниже приведены примеры запуска сканера:
Введите IP-адрес: 192.168.0.1
Введите начальный порт: 1
Введите конечный порт: 100
Порт 22 открыт
Порт 80 открыт
В этом примере сканер находит открытые порты 22 и 80 на IP-адресе 192.168.0.1 в диапазоне от 1 до 100.
Заключение
Теперь вы знаете, как написать сканер сети на Python. Используя библиотеку socket и создав несколько функций, мы можем легко сканировать порты на указанном IP-адресе. Не забывайте изучать дополнительные возможности и экспериментировать с кодом для достижения желаемых результатов. Удачи в ваших проектах!