2019-2020-2 基于Windows的信息安全专业导论学习容器的构建 小组报告

北京电子科技学院

《信息安全工程技术应用》课程设计报告

基于Windows的信息安全专业导论

学习容器的构建

 

 

 

 

 

 

小组成员姓名:20175104李屹哲

       20175113 

       20175133于沛辰

 

指导教师:娄嘉鹏      

 

提交时间:202053日    

 

一、设计方案及可行性分析

  在Windows10 pro环境下使用docker构建ubuntu镜像,通过TightVNC开放端口构建图形化界面,配置Python+anaconda环境,配置Vscode,达到信息安全专业导论学习容器的目的。

  该容器相较于虚拟机存储小,易下载操作,避免配置环境过程中的问题,完全适用信息安全专业导论学习。

二、详细设计思路

1、 安装Windows10 pro虚拟机

1) 下载镜像文件,配置Windows10 pro环境

  • 下载镜像文件: thunder://QUFodHRwOi8veHozLmRhb2hhbmc0LmNvbS9jbl93aW5kb3dzXzEwX2NvbnN1bWVyX2VkaXRpb25zX3ZlcnNpb25fMTkwOV94NjRfZHZkXzc2MzY1YmY4Lmlzb1pa

  • 新建一个虚拟机,打开下载的镜像文件

2) 安装Vm-tools,开启共享文件夹

  • 安装完成后安装 vm tools(正常会自动安装)
  • 虚拟机→选项→共享文件夹,启用共享文件夹,共享文件夹可在win10 网络下找到

3) 开启Hyper-v服务

  • 在Windows10 pro上打开 Hyper-v 功能:控制面板→程序→程序和功能→启用或关闭windows功能,勾选 Hyper-v 功能
  • 如果 Hyper-v 功能呈灰色,若无法勾选,修改vm文件夹下的.vmx文件,添加语句
hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE" 
vhv.enable = "TRUE"

 

  • 最后功打开Hyper-v

2、 安装docker

1)  从官网下载Docker Desktop

  • 下载 Docker Desktop(可在虚拟机打开浏览器直接下载,也可在主机中下载,共享文件夹导入,个人建议后者)

2)  安装并测试docker

  •  docker version :确认你有一个支持的docker版本
  •  docker run hello-world :从docker hub上获取hello-world镜像并运行一个容器(如果提示无法匹配镜像,将设置中 Docker Engine中“experimental:false”改为“experimental:true”,之后就可以匹配镜像了)
  •  docker image ls :列出全部的镜像
  •  docker container ls -all  :列出全部的容器

以上就是docker从docker hub下载镜像、构建容器的一些指令,具体更多操作参考官方指导

3、 建立图形化的ubuntu容器&配置python环境

1)  下载和运行图形化的ubuntu容器: docker run -p 6080:80 -p 5900:5900dorowu/ubuntu-desktop-lxde-vnc:xenial 

2)  下载安装TightVNC

3)  使用 TightVNC Viewer 远程连接容器端口建立容器图形化界面

  • 如果报错,关闭右下角 TightVNC 服务,再用管理员身份启动 TightVNC Viewer

4)  更新源,配置python3.6、python3-pip

  • 更新下载源:在 /etc/apt/sources.list 文件中加入163源
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
  • 更新软件列表: apt-get update
  • 安装python环境: apt install python3.6 、 apt install python3-pip 

5)  调试python环境

  • 新建一个python文件: touch helloworld.py
  • 用leafpad编辑 helloworld.py : leafpad helloworld.py
  • 在文本内输入: print('hello world!')
  • 运行 helloworld.py : python helloworld.py
  • 运行成功,打印了 hello world! 

  • 再用leafpad编辑helloworld.py: leafpad helloworld.py
  • 换一段测试代码,程序功能:暂停一秒输出,并格式化当前时间
  • 运行成功,证明python环境可用

4、 配置vscode环境

1)  配置Vscode

  • 安装vs code: dpkg -i code_1.44.2-1587059832_amd64.deb

2)  Vscode中安装Python拓展包

  • 在扩展商店搜索 language packs 并下载中文汉化包
  • 在扩展商店下载python扩展包、C/C++插件以及code runner

  • 输入指令安装调试程序gdb apt-get install gdb

3)  调试Python代码

  • 打开之前的 helloworld.py 运行并调试

5、 安装并测试pep/9环境

1)  下载安装Pep9

  • 进入Pep/9官网,选择Pep/9 Windows版下载,下载完成后按默认选项安装即可正常打开使用

2)  Pep/9内调试汇编代码

  • 打印“Hi”:在 Source Code 区输入汇编指令,Build→Run Source或直接点击上方绿色箭头
LDBA 0x0048,i   //将“H”加载到计数器
STBA 0xFC16,d   //将计数器的内容输出
LDBA 0x0069,i   //将“i”加载到累计数器
STBA 0xFC16,d   //将计数器的内容输出
.END            //停止

 

  • 可以在 Object Code 区观察到汇编指令对应的机器指令,这里做下解析:
D0 00 48   //把 H 放入计数器
F1 FC 16   //打印计数器内存储的字节
DO 00 69   //把 i 放入计数器
F1 FC 16   //打印累计数器内存储的字节
zz         //结束标识符
  • 两个字符的倒序输出:在Object Code区输入汇编指令,Build→Run Object

 D1 FC 15 F1 00 13 D1 FC 15 F1 FC 16 D1 00 13 F1 FC 16 00 zz 

D1 FC 15  //将输入设备中的第一个字符读入计数器
F1 00 13  //将字符从计数器存储到内存中
D1 FC 15  //将第二个字符从输入设备读入计数器
F1 FC 16  //将第二个字符打印到输出设备
D1 00 13  //从内存中加载第一个字符
F1 FC 16  //打印第一个字符到输出设备
zz        //结束标识符

6、 拓展内容-配置anaconda环境

1)  配置anaconda

  • Anaconda可以从官网下载,选择Linux环境安装包下载(建议选择Python3.7版本,因为Python3正在逐渐替代Python2;这里我选用Python3版本,但其实,版本的选择在anaconda中并不是一个问题,因为通过环境管理,我们可以很方便地切换运行时的Python版本)
  • 安装Anaconda:bash Anaconda3-2020.02-Linux-x86_64.sh
  • 安装过程中会要求阅读相关协议,最后输入 yes 确认开始安装,安装会选择创建一个目录,选择完毕后回车进行安装
  • 安装完成后关闭当前终端

2)  构建Pyhton环境

  • 再开终端可以构建新的Python环境: conda create -name python36 python3.6

  • 这里给出查看和切换环境的相关指令,更多细节可以参考官方指导或者这篇帮助
conda -h //查看帮助 
conda create --name python36 python=3.6 //基于python3.6版本创建一个名字为python36的环境 
conda activate python36 //激活python3.6环境 
source activate python36 //激活python36环境 
conda list //查看环境下的包 
deactivate python36 //退出当前python3.6环境 
conda remove -n python36 --all //删除环境
python36 conda env remove -n python36 //删除环境
python36 conda info -e //查看所有安装的环境

3)  调试Python代码

  • 在激活python36环境后,可以观察到命令行前多了 (python36),输入 python可进入该环境下编写代码
  • 但在anaconda的python环境缺少一些库,没有这些库,编译代码就会报错:SyntaxError:invalid syntax
  • 这里我们先安装numpy、matplotlib这两个库,分两次在终端输入指令: conda install numpy、conda install matplotli
  • 下面给出三个测试代码运行结果
//正弦函数
from numpy import *
from matplotlib.pyplot import *
x = arange(0,361)
y = sin(x*pi/180)
plot(x,y)
xlim(0,360)
ylim(-1.2,1.2)
title('SIN Function')
show()

//散点图
import numpy as np import matplotlib.pyplot as plt x = np.random.normal(0,1,500) y = np.random.normal(0,1,500) plt.scatter(x,y,s=50,color='blue',alpha=0.5) #s指点大小,alpha指透明度 plt.show()

//小海龟画Z
import turtle  //引入一个绘图库
turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)

7、 容器打包并上传

1)  注册个人账号,创建个人仓库

  • 打开docker hub官网,注册用户
  • 注册完成后,创建个人公开库

2)  将容器打包成镜像

  • 打开命令提示符,根据容器创建镜像: docker commit (container ID)注册用户名/仓库名:tagname

3)  上传个人镜像

  • 上传镜像: docker push 注册用户名/仓库名:tagname

 4)常用指令

  • 拉取镜像: docker pull 镜像名 
  • 上传镜像: docker push 镜像名 
  • 运行容器: docker start 容器名 
  • 构建镜像: docker commit 容器名 镜像名 
  • 拉取镜像并运行一个容器: docker run 镜像名 
  • 列出全部镜像: docker image ls 
  • 列出全部容器: docker container ls --all 
  • 删除容器: docker rm 容器名 
  • 删除镜像: docker rmi 镜像名 

 

三、设计特色

  使用时下新颖的docker容器技术,Docker的构想是要实现“ Build , Ship and Run Any App, Anywhere”,即通过对应用的封装( Packaging )、分发( Distribution )、部署( Deployment )、运行( Runtime )生命周期进行管  理,达到应用组件级别的“ 一次封装,到处运行”。Docker对比虚拟机资源利用率更高,开销更小,启动速度更快,更适用于开发。这次课设任务是构建信息安全专业导论学习容器,为学习者提供良好的编程、应用环境。

四、小组成员个人博客

五、参考书籍和网址

 

 

 

posted @ 2020-05-03 17:51  YuPPP  阅读(193)  评论(0编辑  收藏  举报