基于深度学习的恶意域名检测与防御系统研究

目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 选题背景及意义 1
1.1.1 选题背景 1
1.1.2 选题意义 1
1.2 国内外研究现状及发展趋势 2
1.2.1 国内研究现状 2
1.2.2 国外研究现状 3
1.2.3 发展趋势 3
1.3 本文研究主要内容及章节安排 4
1.3.1 研究主要内容 4
1.3.2 章节安排 4
第2章 恶意域名概述 6
2.1 恶意域名的概念与分类 6
2.2 恶意域名的生成机制 6
2.3 恶意域名的传播规律 7
2.4 DGA域名简介 7
2.5 传统的检测方法 8
第3章 数据与模型 10
3.1 数据来源 10
3.2 数据集构造 10
3.3 数据处理 11
3.4 模型设计 12
第4章 系统实现 15
4.1 Attention模块代码 15
4.2 整体模型代码 16
4.3 训练与预测部分代码 17
4.4 实验结果 19
第5章 总结与展望 20
5.1 总结 20
5.2 展望 20
参考文献 22
致 谢 24
1.3 本文研究主要内容及章节安排
1.3.1 研究主要内容
本文旨在深入研究基于深度学习的恶意域名检测与防御系统,通过对现有文献和技术的梳理与分析,探讨恶意域名检测的关键技术和方法。主要研究内容包括以下几个方面:
首先,本文将对恶意域名的生成机制和传播规律进行深入分析,探讨其背后的技术原理和行为特征。通过对恶意域名的分析,为后续的检测与防御提供理论支持。
其次,本文将重点研究基于深度学习的恶意域名检测技术。通过构建合适的深度学习模型,对大量的域名数据进行训练和学习,提取出恶意域名的特征表示,并实现对恶意域名的自动识别和分类。
此外,本文还将关注恶意域名防御系统的构建与应用。通过结合深度学习技术和传统的安全防御手段,构建一套高效的恶意域名防御系统,实现对恶意域名的实时拦截和预警。
最后,本文将结合具体的实验和案例分析,对所提出的恶意域名检测与防御系统进行验证和评估。通过对比不同方法的性能和效果,为实际应用提供有益的参考和借鉴。
1.3.2 章节安排
本文的章节安排如下:
第一章:绪论。介绍研究的背景和意义,概述国内外研究现状及发展趋势,明确本文的研究内容和目标。
第二章:恶意域名概述。对恶意域名的概念、分类、生成机制以及传播规律进行详细介绍,为后续的研究提供理论基础。
第三章:主要关注研究所需的数据和模型。首先,说明数据的来源和采集方式,确保研究数据的真实性和可靠性。然后,介绍数据集的构造过程,包括数据的预处理、标签化以及数据集的划分等。接着,详细描述数据处理的方法和技术,如数据清洗、特征提取等。最后,阐述模型设计的思路和过程,包括模型的架构、参数设置以及优化方法等。
第四章:重点介绍系统的实现过程。首先,展示Attention模块的代码实现,包括模块的输入、输出以及内部计算过程。接着,展示整体模型的代码实现,包括各个模块的组合和连接方式。然后,详细描述训练与预测部分的代码实现,包括模型的训练过程、参数调整以及预测结果的获取等。最后,展示实验结果,通过表格或图表的形式呈现模型的性能指标和对比结果。
第五章:结论与展望。总结本文的研究内容和成果,指出研究的局限性和不足之处,并对未来的研究方向进行展望。
通过以上章节的安排,本文将对基于深度学习的恶意域名检测与防御系统进行全面而深入的研究,为网络安全领域的发展贡献一份力量。

# -*- coding:utf-8 -*-
import codecs
import sys

import numpy as np
import Binary_with_attention

if __name__ == '__main__':
    mode = sys.argv[1]		#模式 0->LSTM+aTTENTION二分类训练  1->LSTM+aTTENTION二分类判别
    batch_size = int(sys.argv[2])
    epochs = int(sys.argv[3])
    srcFilePath = sys.argv[4]	#原始数据文件路径
    modelPath = sys.argv[5]		#模型文件保存路径或读取路

    resultFilePath = ''
    testDomainFilePath = ''
    testLabelFilePath = ''
    nb_classes = 2

    if mode == '1':
        resultFilePath = sys.argv[6]	# 判别结构保存路径
    else:
        # 用于训练时测试已训练好的模型的效果
        testDomainFilePath = sys.argv[6]	# 测试文件路径
        testLabelFilePath = sys.argv[7]		# 测试文件标签路径

    #读取配置文件
    charList = {}
    confFilePath = sys.path[0] + '/configFiles/charList.txt'
    confFile = codecs.open(filename=confFilePath, mode='r', encoding='utf-8', errors='ignore')
    lines = confFile.readlines()
    #字符序列要从1开始 0是填充字
    i = 1
    for line in lines:
        temp = line.strip('\n').strip('\r').strip(' ')
        if temp != '':
            charList[temp] = i
            i += 1


    max_features = i

    #设置批处理个数
    # batch_size = 100
    # epochs = 1

    #转换数据格式
    x_data_sum = []
    y_data_sum = []
    x_test_sum = []
    y_test_sum = []

    if mode == '0':
        srcFile = codecs.open(filename=srcFilePath, mode='r', encoding='utf-8', errors='ignore')
        lines = srcFile.readlines()
        for line in lines:
            if line.strip('\n').strip('\r').strip(' ') == '':
                continue

            x_data = []
            s = line.strip('\n').strip('\r').strip(' ').split(' ')
            x = str(s[0])
            y = int(s[1])

            for char in x:
                try:
                    x_data.append(charList[char])
                except:
                    print ('unexpected char' + ' : ' + char)
                    x_data.append(0)

            x_data_sum.append(x_data)
            y_data_sum.append(y)

        x_data_sum = np.array(x_data_sum)
        y_data_sum = np.array(y_data_sum)

        testDomainFile = codecs.open(filename=testDomainFilePath, mode='r', encoding='utf-8', errors='ignore')
        lines = testDomainFile.readlines()
        for line in lines:
            if line.strip('\n').strip('\r').strip(' ') == '':
                continue

            x_data = []
            x = str(line.strip('\n').strip('\r').strip(' '))
            for char in x:
                try:
                    x_data.append(charList[char])
                except:
                    print ('unexpected char' + ' : ' + char)
                    x_data.append(0)

            x_test_sum.append(x_data)

        testLableFile = codecs.open(filename=testLabelFilePath, mode='r', encoding='utf-8', errors='ignore')
        lines = testLableFile.readlines()
        for line in lines:
            if line.strip('\n').strip('\r').strip(' ') == '':
                continue

            y = line.strip('\n').strip('\r').strip(' ')
            y_test_sum.append(int(y))

        x_test_sum = np.array(x_test_sum)
        y_test_sum = np.array(y_test_sum)
        Binary_with_attention.train(max_features, x_data_sum, y_data_sum, x_test_sum, y_test_sum, batch_size, epochs, modelPath)
    elif mode == '1':
        srcFile = codecs.open(filename=srcFilePath, mode='r', encoding='utf-8', errors='ignore')
        lines = srcFile.readlines()
        for line in lines:
            if line.strip('\n').strip('\r').strip(' ') == '':
                continue

            x_data = []
            x = line.strip('\n').strip('\r').strip(' ')

            for char in x:
                try:
                    x_data.append(charList[char])
                except:
                    print ('unexpected char' + ' : ' + char)
                    x_data.append(0)

            x_data_sum.append(x_data)

        x_data_sum = np.array(x_data_sum)

        Binary_with_attention.predict(x_data_sum, batch_size, modelPath, resultFilePath)

    else:
        pass

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值