Не могу отправить ARP ответ Python raw сокеты - PullRequest
0 голосов
/ 18 ноября 2018

Привет, я узнаю о спуфинге ARP и пытаюсь понять, как отправить ответ ARP с одного хоста на другой, но кэш ARP хоста, который я отправляю в ответ, не разрешает MAC-адрес другого хост. Я отправляю ответ с 192.168.1.6 на 192.168.1.4 Это мой код:

import socket
import struct
import binascii


raw = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, 
socket.ntohs(0x0806))
raw.bind(("wlp3s0",socket.htons(0x0806)))



mac_local = ''                                                    
ip_local = "192.168.1.6"                                          
mac_dest = ''                                                     
ip_dest = "192.168.1.4"                                           


type_hardware = 1
type_protocol = 0x0800                               
len_hardware = 6            
len_protocol = 4            
op = 2                                                      

src_ip = socket.inet_aton(ip_local)
dest_ip = socket.inet_aton(ip_dest)


mac_dest_byte_order = binascii.unhexlify(mac_dest.replace(":", ""))
mac_src_byte_order = binascii.unhexlify(mac_local.replace(":", ""))

# Ethernet frame
protocol = 0x0806                                                 
ethernet_frame = struct.pack("!6s6sH", mac_dest_byte_order, 
mac_src_byte_order, protocol)

arp_header = struct.pack("!HHBBH6s4s6s4s",type_hardware, 
                    type_protocol, 
                    len_hardware, 
                    len_protocol, 
                    op, 
                    mac_src_byte_order, 
                    src_ip, 
                    mac_dest_byte_order, 
                    dest_ip)


pkt = ethernet_frame + arp_header


while True:
    raw.send(pkt)
...