网络安全利器:Python打造ARP欺骗检测软件
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)
使用方法:
- 安装依赖库:
pip install flask scapy
- 运行Flask应用:
python app.py
- 访问Web界面:
打开浏览器,访问
http://127.0.0.1:5000/,即可使用各项功能。
功能说明:
- ICMP flood攻击检测: 检测ICMP flood攻击。
- TCP攻击检测: 检测TCP攻击。
- ARP欺骗攻击检测: 检测ARP欺骗攻击。
- 扫描局域网主机: 扫描局域网内的主机,并显示其IP地址和MAC地址。
- 检测攻击源: 根据扫描到的主机列表,检测攻击源的IP地址和MAC地址。
注意:
- 该软件仅供学习和研究使用,请勿用于非法用途。
- 使用该软件需要一定的网络安全知识。
- 该软件的检测结果仅供参考,不能作为判断网络攻击的唯一依据。
- 使用该软件前,请确保已了解并遵守相关法律法规。
原文地址: https://www.cveoy.top/t/topic/jn9W 著作权归作者所有。请勿转载和采集!