Итак, у меня есть 4 маршрутизатора и 1 P C с 4 устройствами, которые подключаются к ближайшему маршрутизатору. Итак, я хочу написать скрипт в python, который работает на P C (Windows) и что P C подключен к 1 основному маршрутизатору, а этот маршрутизатор подключен к трем другим маршрутизаторам.
1 P C -> Основной маршрутизатор (WiFi включен) -> 3 других маршрутизатора (WiFi включен)
Браслет (устройство с поддержкой WiFi) подключится до ближайшего WiFi роутера, доступного из 4 роутеров. Я хочу определить, к какому маршрутизатору подключен этот браслет через скрипт Python. Я также могу сделать IP-адрес браслета Stati c, но я надеялся идентифицировать их по адресу MA C. При необходимости я могу отредактировать конфигурацию маршрутизаторов через веб-страницу.
При необходимости попросите разъяснений.
Надеюсь вскоре услышать.
Edit_1: не путать со мной, спрашивая весь код, я нахожусь в поиске правильных функций, которые можно использовать для этого процесса, и каковы возможные конфигурации, на которые я должен установить маршрутизатор.
Edit_2: Ниже приведен пример кода что позволяет пинговать IP-адреса. Итак, как я могу получить их MA C адрес (функцию), а также пинговать другие точки доступа? Я могу изменить свойства маршрутизаторов.
import socket
from datetime import datetime
net = input("Enter the IP address: ") #e.g. is 192.168.18.1
net1 = net.split('.')
a = '.'
net2 = net1[0] + a + net1[1] + a + net1[2] + a
st1 = int(input("Enter the Starting Number: ")) #e.g. 1
en1 = int(input("Enter the Last Number: ")) #e.g. 10
en1 = en1 + 1
t1 = datetime.now()
def scan(addr):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket.setdefaulttimeout(1)
result = s.connect_ex((addr,135))
if result == 0:
return 1
else :
return 0
def run1():
for ip in range(st1,en1):
addr = net2 + str(ip)
if (scan(addr)):
print (addr , "is live")
run1()
t2 = datetime.now()
total = t2 - t1
print ("Scanning completed in: " , total)
Edit_3: Это также ищет MA C Address.
from scapy.all import ARP, Ether, srp
target_ip = "192.168.18.1/24"
# IP Address for the destination
# create ARP packet
arp = ARP(pdst=target_ip)
# create the Ether broadcast packet
# ff:ff:ff:ff:ff:ff MAC address indicates broadcasting
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
# stack them
packet = ether/arp
result = srp(packet, timeout=3, verbose=0)[0]
# a list of clients, we will fill this in the upcoming loop
clients = []
for sent, received in result:
# for each response, append ip and mac address to `clients` list
clients.append({'ip': received.psrc, 'mac': received.hwsrc})
# print clients
print("Available devices in the network:")
print("IP" + " "*18+"MAC")
for client in clients:
print("{:16} {}".format(client['ip'], client['mac']))
if (client['mac'] == "f4:f5:e8:37:67:92"): #Testing mac address filter
print("Success")