Форум сайта python.su
Доброго времени!
Вместо вступления :
Python3.
Задаем диапазон IP-адресов для сканирования, перебираем IP-адреса в заданном диапазоне, пытаемся подключиться к серверу по указанным портам, получаем версию программы, Если версия программы устарела предлагаем обновить.
Сам код:
import socket # Задаем диапазон IP-адресов для сканирования start_ip = input("Введите начальный IP-адрес: ") end_ip = input("Введите конечный IP-адрес: ") # Переводим IP-адреса в числовой формат start_ip = socket.inet_aton(start_ip) end_ip = socket.inet_aton(end_ip) # Перебираем IP-адреса в заданном диапазоне while start_ip <= end_ip: # Преобразуем числовой IP-адрес обратно в строку current_ip = socket.inet_ntoa(start_ip) # Пытаемся подключиться к серверу по указанным портам for port in range(1540, 1595): # Проверяем порты от 1 до 1024 try: # Создаем сокет и подключаемся к серверу s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(0.5) # Устанавливаем таймаут на подключение к серверу result = s.connect_ex((current_ip, port)) # Если подключение успешно, получаем версию программы if result == 0: version = s.recv(1024).decode("utf-8").strip() # Если версия программы устарела, предлагаем обновить if version < "8.3.22.1851": print(f"Обнаружена устаревшая версия программы на сервере {current_ip}:{port}.") print("Рекомендуется обновить программу.") # Закрываем соединение s.close() except (socket.error, socket.timeout): pass # Увеличиваем IP-адрес для следующей итерации start_ip = socket.inet_aton(socket.inet_ntoa(start_ip)) + 1
Введите начальный IP-адрес: 10.15.10.1 Введите конечный IP-адрес: 10.15.10.120 Traceback (most recent call last): File "E:\Pyton\temp\Sc1cv1.py", line 40, in <module> start_ip = socket.inet_aton(socket.inet_ntoa(start_ip)) + 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ TypeError: can't concat int to bytes Process finished with exit code 1
Отредактировано MAVR (Июль 6, 2023 12:56:13)
Офлайн
MAVR
На выходе получаю такую ошибку.
Подскажите куда копать, сам я новичок еще в Python.
Благодарен буду за любую подсказку.
>>> b'\x00' + 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't concat int to bytes >>>
>>> b = bytearray(b'\x01\x02\x03\x04') >>> b bytearray(b'\x01\x02\x03\x04') >>> >>> b[-1] += 1 >>> b bytearray(b'\x01\x02\x03\x05') >>> >>> b[3] += 2 >>> b bytearray(b'\x01\x02\x03\x07') >>> >>> import socket >>> >>> socket.inet_ntoa(b) '1.2.3.7' >>>
Офлайн
MAVRДовольно хреновасто это смотрится всё. Куча комментариев тебе потребовалось делать, чтобы просто не запутаться в собственной программе. А ведь комментариев вообще быть не должно ни одного и при этом должно быть всё понятно в коде.
Задаем диапазон IP-адресов для сканирования, перебираем IP-адреса в заданном диапазоне, пытаемся подключиться к серверу по указанным портам, получаем версию программы, Если версия программы устарела предлагаем обновить.
Отредактировано py.user.next (Июль 6, 2023 18:48:45)
Офлайн
py.user.next
Куча комментариев тебе потребовалось делать
Отредактировано xam1816 (Июль 7, 2023 21:05:20)
Офлайн
xam1816Имеешь в виду вот эти нескладушки?
так пишет gpt chat, он код приводит с объяснением
MAVRДа так все пишут новички. Масло масляное. Комментируют то, что и так понятно из кода, и не комментируют то, что действительно требует комментариев - причины, цели, задачи фрагментов.for port in range(1540, 1595): # Проверяем порты от 1 до 1024
xam1816Лучше не тратить своё время на ChatGPT. Это просто хайпотема, у которой есть время жизни. Обычно оно короткое, как у Кликхауса или Нанотехнологий.
поэтому вариантов у него немного, либо учить все по хорошему, либо просить gpt, чтобы он исправлял свои ошибки
Отредактировано py.user.next (Июль 8, 2023 12:50:39)
Офлайн
Я уже понял что халявного сыра не бывает)
Спасибо что откликнулись.
Буду
py.user.next
учить все по хорошему
Офлайн