Сетевой сканер — PythonPython

Программы на Python
Ответить
Anonymous
 Сетевой сканер — Python

Сообщение Anonymous »

Я работаю над проектом по созданию сетевого сканера. target_network_input.py — это скрипт, который просит пользователя ввести диапазон целевой сети. Он выводит на консоль все возможные сети вместе с количеством сетей.
В active_networks.py я пытаюсь принять список сетей, возвращенный файлом target_network_input.py, и прокрутите его по всему списку сетей, чтобы проверить, отвечает ли на него какой-либо из запросов ICMP, UDP, TCP, ARP. Если это так, добавьте его в пустой список, и как только список будет исчерпан, распечатайте действующие хосты, но он покажет просто пустой список

Код: Выделить всё

# target_network_input.py

#!/usr/local/bin/python3
import ipaddress
def process_network():
n = input('Enter the target network range (e.g., 192.168.1.0/24):  ')
try:
net = ipaddress.IPv4Network(n, strict = False)
net_list = list(net.hosts())
net_num = net.num_addresses
print(f'Usable hosts: {net_list}\n')
print(f'Total number of addresses (including network and broadcast): {net_num}')
return net_list
except ValueError:
print('Invalid IP network range')

if __name__ == '__main__':
#Standalone execution logic(if needed)
print('This script is used to process network ranges')
process_network()

#active_networks.py

#!/usr/local/bin/python3
from scapy.all import IP, ICMP, TCP, UDP, ARP, sr1, srp, Ether
import target_network_input
import logging

logging.basicConfig(level = logging.DEBUG)

net_list = target_network_input.process_network()

#Main function to find active hosts
def active_hosts(net_list):
live_hosts = []
for ip in net_list:
if icmp_ping(ip):
live_hosts.append(ip)
elif tcp_ping(ip):
live_hosts.append(ip)
elif udp_ping(ip):
live_hosts.append(ip)
elif arp_ping(ip):
live_hosts.append(ip)
else:
continue
print(live_hosts)
return live_hosts

#Identify networks through ICMP requests
def icmp_ping(ip):
try:
packet = IP(dst = ip) / ICMP()
response = sr1(packet, timeout = 1, verbose = 0)
return response is not None
except Exception as e:
return False

#Identify networks through TCP requests
def tcp_ping(ip, port = 80):
try:
packet = IP(dst = ip) / TCP(dport = port, flags = 'S')
response = sr1(packet, timeout = 1, verbose = 0)
return response and response.haslayer(TCP) and response[TCP].flags == 'SA'
except Exception as e:
return False

#Identify networks through UDP requests
def udp_ping(ip, port = 53):
try:
packet = IP(dst = ip) / UDP(dport = port)
response = sr1(packet, timeout = 1, verbose = 0)
return response is not None
except Exception as e:
return False

#Identify networks through ARP requests
def arp_ping(ip):
try:
arp_request = ARP(pdst = ip)
broadcast = Ether(dst = 'ff:ff:ff:ff:ff:ff')
packet = broadcast / arp_request
response = srp(packet, timeout = 1, verbose = 0)[0]
return len(response) > 0
except Exception as e:
return False

active_hosts(net_list)

Я ожидал, что он должен принять диапазон сети в качестве входных данных, отобразить возможные сети в диапазоне, а затем проверить наличие каждой сети в списке, отправив разные запросы, если они активны. или нет, и если они активны, добавьте их в пустой список, но он просто вернет пустой список

Подробнее здесь: https://stackoverflow.com/questions/793 ... ner-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»