# DGA_domain_test **Repository Path**: zhang_star/DGA_domain_test ## Basic Information - **Project Name**: DGA_domain_test - **Description**: 基于lstm的DGA域名识别 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-04-18 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DGA_domain_test 基于lstm的DGA域名识别 # DGA域名生成算法: 网络攻击者可以利用它来生成用作域名的伪随机字符串,这样就可以有效的避开黑名单列表的检测。伪随机意味着字符串序列似乎是随机的,但由于其结构可以预先确定,因此可以重复产生和复制。该算法常被运用于恶意软件以及远程控制软件上。 # 项目功能: 项目采用360公开的DGA域名数据100万作为负面样本,采用top-1数据集的100万域名作为正面样本作为数据集,最终在测试集验证模型,准确率可以达到99%。训练迭代次数为三次达到拟合极限,在8g内存,机械硬盘,I56代cpu的台式机上训练时间为3小时(cpu满负荷)。 神经网络结构如下。为防止训练过拟合,加入droput(0.5), 数据集已重新打乱,其中20%作为测试集,10%作为验证集,70%作为训练集。 域名预测会返回预测数值,大于0.5为正面域名,小于0.5为DGA生成域名。预测效率在如上所示台式机的效率为,10万/分钟(cpu满负荷)。 项目集成域名数据的域名提取,特征提取,数据集存储(方便复用),以及域名预测。 # 待改进: 1.增量式训练,方便更新数据集继续训练。 2.成熟的DGA识别需要识别,DGA的不同拼接规则。因为本项目数据集各类型DGA域名数量并不均等,无法进行训练。 # 环境配置: 语言:python3.7 第三方库:keras, numpy, pandas, random, sklearn, pickle, tldextract, re # 使用说明: 项目下raw_data文件夹存储原始数据文件。 项目下data.py文件,用于处理数据集,及提取参数,使用pickl存储为序列化数据。序列化数据存储在data_set文件夹下。 项目下存储LSTM_train.py文件,用于训练模型,模型保存在model文件夹。此文件中pridect()函数用于预测域名,函数的输入格式为为[域名1, 域名2, 域名3….]。将会自动调用模型及处理数据,返回每个域名的预测值。