基于Linux的ARP攻击检测与防护软件

本文介绍一款基于Linux的ARP攻击检测与防护软件,该软件使用Python语言编写,旨在帮助用户实时监测和防御ARP攻击,并提供友好的可视化界面。

功能特点

  • 多种ARP攻击检测: 能够检测多种ARP攻击类型,例如ARP欺骗、ARP泛洪等。
  • 实时攻击信息输出: 一旦检测到ARP攻击,软件会立即输出攻击类型、攻击源IP和MAC地址等信息。
  • 局域网IP/MAC地址扫描: 可以扫描和记录局域网内所有活动主机的IP地址和MAC地址,帮助用户了解网络拓扑结构。
  • 可视化界面: 软件提供简洁直观的中文可视化界面,方便用户操作和查看信息。
  • 日志记录: 所有检测结果和扫描信息都会被记录到日志文件中,方便用户事后分析。

Python代码实现

以下是用Python实现该软件基本功能的代码:

import os
import sys
import time
import threading
import subprocess
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QTextEdit, QGridLayout, QVBoxLayout

# 定义常量
ARP_CACHE_FILE = '/proc/net/arp'
LOG_FILE = 'arp_protect.log'

# 定义ARP攻击检测函数
def arp_check():
    arp_cache = {}
    with open(ARP_CACHE_FILE, 'r') as f:
        lines = f.readlines()
        for line in lines[1:]:
            parts = line.split()
            if len(parts) == 6:
                ip = parts[0]
                mac = parts[3]
                arp_cache[ip] = mac
    while True:
        new_arp_cache = {}
        with open(ARP_CACHE_FILE, 'r') as f:
            lines = f.readlines()
            for line in lines[1:]:
                parts = line.split()
                if len(parts) == 6:
                    ip = parts[0]
                    mac = parts[3]
                    new_arp_cache[ip] = mac
        for ip in new_arp_cache:
            if ip not in arp_cache or new_arp_cache[ip] != arp_cache[ip]:
                log('检测到ARP攻击: ' + ip + ' -> ' + new_arp_cache[ip])
        arp_cache = new_arp_cache
        time.sleep(1)

# 定义局域网扫描函数
def scan_network():
    network = '.'.join(os.popen('hostname -I').read().split('.')[0:3])
    for i in range(1, 256):
        ip = network + '.' + str(i)
        t = threading.Thread(target=ping_host, args=(ip,))
        t.start()
    log('网络扫描完成。')

# 定义ping主机函数
def ping_host(ip):
    result = subprocess.call(['ping', '-c', '1', '-W', '1', ip], stdout=subprocess.DEVNULL)
    if result == 0:
        mac = get_mac_address(ip)
        log('发现主机: ' + ip + ' -> ' + mac)

# 定义获取MAC地址函数
def get_mac_address(ip):
    output = os.popen('arp ' + ip).read()
    parts = output.split()
    if len(parts) == 5:
        return parts[3]
    else:
        return '00:00:00:00:00:00'

# 定义日志函数
def log(msg):
    with open(LOG_FILE, 'a') as f:
        f.write(time.strftime('%Y-%m-%d %H:%M:%S') + ' ' + msg + '
')
    print(msg)

# 定义可视化界面类
class ARPProtect(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('ARP 防护软件')
        self.resize(600, 400)

        self.lblStatus = QLabel('状态: 未启动')
        self.btnStart = QPushButton('启动')
        self.btnStop = QPushButton('停止')
        self.btnScan = QPushButton('扫描网络')
        self.btnClear = QPushButton('清空日志')
        self.txtLog = QTextEdit()

        gridLayout = QGridLayout()
        gridLayout.addWidget(self.lblStatus, 0, 0)
        gridLayout.addWidget(self.btnStart, 0, 1)
        gridLayout.addWidget(self.btnStop, 0, 2)
        gridLayout.addWidget(self.btnScan, 0, 3)
        gridLayout.addWidget(self.btnClear, 0, 4)
        gridLayout.addWidget(self.txtLog, 1, 0, 1, 5)

        vboxLayout = QVBoxLayout()
        vboxLayout.addLayout(gridLayout)
        self.setLayout(vboxLayout)

        self.btnStart.clicked.connect(self.start)
        self.btnStop.clicked.connect(self.stop)
        self.btnScan.clicked.connect(self.scan)
        self.btnClear.clicked.connect(self.clear)

    def start(self):
        self.lblStatus.setText('状态: 运行中')
        self.thread = threading.Thread(target=arp_check)
        self.thread.start()

    def stop(self):
        self.lblStatus.setText('状态: 已停止')
        self.thread.stop()

    def scan(self):
        self.lblStatus.setText('状态: 扫描网络中')
        self.thread = threading.Thread(target=scan_network)
        self.thread.start()

    def clear(self):
        self.txtLog.clear()

# 定义主函数
if __name__ == '__main__':
    app = QApplication(sys.argv)
    arp_protect = ARPProtect()
    arp_protect.show()
    sys.exit(app.exec_())

总结

这款基于Linux的ARP攻击检测与防护软件可以帮助用户有效地监测和防御ARP攻击,提高网络安全性。同时,该软件易于使用和扩展,用户可以根据自身需求进行修改和完善。

基于Linux的ARP攻击检测与防护软件

原文地址: https://www.cveoy.top/t/topic/jmiQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录