簡體   English   中英

沒有回復的 ARP 請求 raw sockets python

[英]ARP request without reply raw sockets python

我試圖在發送 ARP 請求后獲得 arp 回復,但沒有收到回復。

我查看了 wireshark 的結果,我認為他向.network 廣播,但沒有回復顯示...

在 wireshark 的結果中,發送方和接收方的 MAC 地址與真實的 MAC 地址不對應,我相信我沒有正確打包,但我不明白為什么。

需要幫忙...

#!/usr/bin/env python3

import struct
import socket



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


mac_local = b"ff:ff:ff:ff:ff:ff"   # mac de quem envia request
ip_local = "192.168.1.7"           # ip de quem envia request
mac_dest = b"00:00:00:00:00:00"    # mac de quem recebe request
ip_dest = "192.168.1.2"            # ip de quem recebe request




# Ethernet Header
protocol = 0x0806             # 0x0806 protocol to ARP
ethernet_header = struct.pack("!6s6sH", mac_dest, mac_local, protocol)


# ARP header

type_hardware = 1
type_protocol = 0x0800       # IPV4
size_addr_hardware = 6   # Refere ao tamanho do endereço do MAC que é 
48 bits  == 6 bytes 
size_addr_protocol = 4  # Refere ao tamanho do endereço do ipv4 que é 
32 bits == 4 bytes
operation = 1                  # 1 = request / 2 = Reply 

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


arp_addr = struct.pack("!HHBBH6s4s6s4s", type_hardware, type_protocol,
                       size_addr_hardware, size_addr_protocol, operation,
                       mac_local, source_ip, mac_dest, dest_ip)
pkt = ethernet_header + arp_addr

cont = 0
while cont < 6:
    raw.send(pkt)
    cont +=1

在此處輸入圖像描述

在此處輸入圖像描述

mac_destmac_local絕對不正確。 您剛剛使用ASCII值創建了一個字節字符串。 這些每個都是17字節長。 而且,您只需要為每個地址獲取這17個字節中的前6個字節。

它們應該是這樣的:

mac_dest = b'\x00\x00\x00\x00\x00\x00'
mac_local = b'\xff\xff\xff\xff\xff\xff'

檢查struct.pack調用之前字節字符串的長度是否正好是六個字節。

另外,不確定您要做什么,但是我懷疑使用全零硬件地址作為目標地址是否有意義。 可以肯定的是沒有人會收到它,因為它將是單播到一個沒有人的地址。 相反可能會有所幫助( 全零發送到廣播地址)-我認為這是ARP探針的標准。

我對接受的答案感到困惑。

MAC 00:00:00: 00:00:00 不是 XEROX 的有效 MAC 嗎?

https://hwaddress.com/company/xerox-corporation/

當我看到使用 wireshark 捕獲的 ARP 請求時

那么請求中的 mac 地址總是像

MAC_DST: FF:FF:FF:FF:FF:FF  //mac broadcast
MAC_SRC: MAC-address of requester

回復的mac地址將是

MAC_DST: MAC-adress of requester
MAC_SRC: MAC-address of replier

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM