import os
import time
import sys
import platform
from scapy.all import *
from flask import Flask, render_template, request, jsonify
from scapy.layers.l2 import Ether
from scapy.layers.l2 import ARP

app = Flask(__name__)

# 路由:主页
def index():
    return render_template('index.html')

# 路由:ICMP flood攻击检测
@app.route('/icmp_flood')
def detect_icmp_flood():
    sniff_filter = 'icmp'
    sniff_timeout = 10
    sniff_count = 0
    sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
    for packet in sniff_packets:
        sniff_count += 1
    if sniff_count > 100:
        result = '检测到ICMP flood攻击!'
    else:
        result = '未检测到ICMP flood攻击!'
    return jsonify({'result': result})

# 路由:TCP攻击检测
@app.route('/tcp_attack')
def detect_tcp_attack():
    sniff_filter = 'tcp'
    sniff_timeout = 10
    sniff_count = 0
    sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
    for packet in sniff_packets:
        sniff_count += 1
    if sniff_count > 100:
        result = '检测到TCP攻击!'
    else:
        result = '未检测到TCP攻击!'
    return jsonify({'result': result})

# 路由:ARP欺骗攻击检测
@app.route('/arp_spoofing')
def detect_arp_spoofing():
    sniff_filter = 'arp'
    sniff_timeout = 10
    sniff_count = 0
    sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
    for packet in sniff_packets:
        sniff_count += 1
    if sniff_count > 100:
        result = '检测到ARP欺骗攻击!'
    else:
        result = '未检测到ARP欺骗攻击!'
    return jsonify({'result': result})

# 路由:扫描局域网主机
@app.route('/scan_network')
def scan_network():
    network = '192.168.197.0/24'
    arp_request = ARP(pdst=network)
    broadcast = Ether(dst='ff:ff:ff:ff:ff:ff')
    arp_broadcast = broadcast/arp_request
    answered_list = srp(arp_broadcast, timeout=1, verbose=False)[0]
    clients = []
    for element in answered_list:
        client = {'ip': element[1].psrc, 'mac': element[1].hwsrc}
        clients.append(client)
    return jsonify({'clients': clients})

# 路由:检测攻击源
@app.route('/detect_attack')
def detect_attack_source():
    with open('clients.txt', 'r') as f:
        clients = f.readlines()
        for client in clients:
            ip = client.split()[0]
            mac = client.split()[1]
            sniff_filter = 'arp and src host ' + ip
            sniff_timeout = 10
            sniff_count = 0
            sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
            for packet in sniff_packets:
                sniff_count += 1
            if sniff_count > 100:
                result = '检测到攻击源IP地址为' + ip + ',MAC地址为' + mac + '!'
                return jsonify({'result': result})
    return jsonify({'result': '未检测到攻击源!'})


if __name__ == '__main__':
    app.run(debug=True)

使用方法:

  1. 安装依赖库:
pip install flask scapy
  1. 运行Flask应用:
python app.py
  1. 访问Web界面: 打开浏览器,访问 http://127.0.0.1:5000/,即可使用各项功能。

功能说明:

  • ICMP flood攻击检测: 检测ICMP flood攻击。
  • TCP攻击检测: 检测TCP攻击。
  • ARP欺骗攻击检测: 检测ARP欺骗攻击。
  • 扫描局域网主机: 扫描局域网内的主机,并显示其IP地址和MAC地址。
  • 检测攻击源: 根据扫描到的主机列表,检测攻击源的IP地址和MAC地址。

注意:

  • 该软件仅供学习和研究使用,请勿用于非法用途。
  • 使用该软件需要一定的网络安全知识。
  • 该软件的检测结果仅供参考,不能作为判断网络攻击的唯一依据。
  • 使用该软件前,请确保已了解并遵守相关法律法规。
网络安全利器:Python打造ARP欺骗检测软件

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

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