小组信息分享,或会适时更新
dga_predict-master 文件夹 2019-4-13
dga_predict-master
是随数据下载的现成的对 DGA 域名的检测代码,也就是对 DGA 异常域名和 正常域名 进行二分类的代码。
- 代码中使用的正常域名数据来自
top-1m.csv
,会在代码初次运行时下载。(在 whitedns 文件夹下也有一份。) - 代码使用的异常数据会在运行时调用
dga_predict-master/dga_classifier/dga_generators
下的代码生成。 - 代码使用
bi-gram
和lstm
两种方式实现分类,算法分别对应dga_classifier/bigram.py
和dga_classifier/lstm.py
,这两个实现代码中包含对域名数据的向量化。 run.py
也包含绘制 ROC 曲线的代码。- README.md 文档包含代码原说明
- 原代码为 Python 2 版本,我已经将代码改为 Python 3 版本,如果环境配置好,可以顺利执行。执行:
1python ./run.py
开始运行代码。根据报错信息配置环境,直至代码顺利执行完毕。
-
配置环境期间,建议对如下两条语句做修改,以减少等待时间。当代码可以顺利执行时,再修改回去完整执行。
1# bigram.py 第20行
2# def run(max_epoch=50, nfolds=10, batch_size=128): # 注释这一行原代码
3def run(max_epoch=1, nfolds=10, batch_size=128): # 使用这一行代码1# lstm.py 第27行
2# def run(max_epoch=25, nfolds=10, batch_size=128): # 注释这一行原代码
3def run(max_epoch=1, nfolds=10, batch_size=128): # 使用这一行代码 results.pkl
是运行时保存的 结果数据,二进制形式。traindata.pkl
是运行时下载和生成的训练数据,二进制形式。results.png
是训练结束后绘制的 ROC 曲线。重新训练模型需要删除result.pkl
文件。
环境配置步骤参考 2019-4-12
- 下载并安装 Anaconda,选择 Python3 版本。下载前务必看清楚选择 Windows 平台,页面默认是 Mac 平台的安装包下载。网站:https://www.anaconda.com/distribution/#download-section
- 安装完毕之后,需要执行一条指令以便在 命令行 中也能使用 conda 命令。操作:以 管理员身份 打开 Anaconda Powershell Prompt 执行
conda init
命令即可,一般下载的是最新版本的 Anaconda (即版本高于 4.6),那么就不要再对环境变量 Path 进行配置了,否则后期无法激活创建的虚拟环境。
【anaconda-powershell-prompt】用管理员身份打开它执行 conda init 命令
更换默认 conda 源。即添加 清华维护的 Anaconda 镜像。网站:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 按照网站说明操作,强烈建议把清华维护的所有第三方仓库镜像也进行添加,否则在国内下载一些第三方仓库模块时会速度非常慢。所以把说明页列出的所有命令都执行一遍就好了。
【tsinghuo-anaconda-mirror】一条一条地复制粘贴这些命令执行
- 由于没能获得上游授权,清华的镜像源2019年4月16日起停止服务了,很可能是无限期的。以上内容中关于清华源的部分可更换为中科大或者阿里源。
当然,直接使用官方源也是可以的。就是有时会速度感人,但不容易出现包之间的依赖问题。
-
运行 Python 代码,凡是报错找不到模块
ModuleNotFoundError: No module named 'xxx'
的,就执行conda install xxx
安装该模块,如果此条命令执行不成功,说明该模块属于第三方仓库,需要 进入 Anaconda 官网 https://anaconda.org/搜索该模块。使用搜索结果中对应的命令安装。
【anaconda-cloud-search-jieba】例如搜索分词库结巴库
【anaconda-third-repository-moduel-select】进入模块的详情页
【download-moduel-from-anaconda-cloud】复制命令下载结巴库
- 如果涉及到 Tensorflow 模块的安装,不建议按照 tensorflow 官网说明安装(国内它的官网应该无法访问),建议直接安装 Anaconda 封装好的 tensorflow 或者 tensorflow-gpu 模块。安装命令:
1conda install tensorflow
2或
3conda install tensorflow-gputensorflow-gpu 支持 GPU 运算,运算速度更快,但要求计算机具有 NVIDIA 显卡且安装好 CUDA Toolkit。 网址:https://developer.nvidia.com/cuda-downloads
附 Anaconda 对 tensorflow 的说明页面:https://www.anaconda.com/tensorflow-in-anaconda/ 如果对 conda 的虚拟环境有了解,可以按照页面末尾命令操作,将 tensorflow 安装在独立的环境中。
其他 2019-4-12 (问题很难详尽,随时搜索报错信息或在群聊交流)
-
跑代码时关注下计算机内存消耗情况,有时需要适当关闭其他应用程序
-
如果报错提示:
1... (省略若干行)
2TypeError: while_loop() got an unexpected keyword argument 'maximum_iterations'
3... (省略若干行)解决方式:keras 需要安装 2.1.2 版本,指定安装版本的安装命令
1conda install keras=2.1.2
- 如果报错:
1from matplotlib import afm, cbook, ft2font, rcParams, get_cachedir
2ImportError: DLL load failed: 找不到指定的模块。先用
1pip uninstall matplotlib
将当前环境 matplotlib 卸载,再用
1pip install matplotlib
重新安装