zoukankan      html  css  js  c++  java
  • 20199101《网络攻防实践》假期作业

    20199101《网络攻防实践》假期作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
    这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10228
    我在这个课程的目标是 学习并了解网络攻防的相关知识,能够进行独立的实际操作

    这个作业在哪个具体方

    面帮助我实现目标

    该作业主要帮助我复习markdown的用法,复习Linux的常用命令,为

    下学期的网络攻防实践课做好准备

    作业正文 见后具体内容,分为作业一和作业二
    参考文献

    [1]. https://www.cnblogs.com/math/p/se-tools-001.html

    [2]. https://www.cnblogs.com/rocedu/p/6012545.html

    [3]. https://www.cnblogs.com/rocedu/p/4902411.html

    [4]. https://www.shiyanlou.com/courses/1

    [5]. https://blog.csdn.net/weixin_42109679/article/details/80717336

    [6]. https://www.cnblogs.com/jpfss/p/9462792.html

     

    作业一

    (1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
    (2)作业要使用Markdown格式,Markdown入门参考(需掌握)。


    • 我之前是信息与计算科学专业,之前学习过《计算机网络》课程,了解网络相关的基本知识,了解一些网络攻击技术名词,如踩点技术,扫描技术,拒绝服务攻击等。
    • 本科期间经常使用markdown进行相关作业的完成,所以对markdown比较了解。一直非常喜欢markdown中包含LaTeX的公式编辑,同时markdown和html可以相互转换都是其很好的优点。

    作业二

    (1) 学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统(也可以使用VMWare安装虚拟机,安装方法请自己百度)。
    (2)通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法。
    (3)参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节。


    1. 虚拟机的安装

         安装过Ubuntu系统,也通过VMware安装过虚拟机,目前使用的是类UNIX系统macOS。说明安装Linux系统或者虚拟机遇到的坑。望各位远离坑位。

    • 安装虚拟机时请先在Bios里开通虚拟化功能。当然也存在某些CPU不支持虚拟化功能。

    • 利用VMWare安装虚拟机已经安装了vmware-tools,还是没办法顺利的在主机和虚拟机之间进行复制粘贴的问题。参考https://blog.csdn.net/weixin_42109679/article/details/80717336

    • 安装Windows+Linux双系统时极易出现grub引导的错误,主要错误在于二者的引导方式不同。或者是安装在不同盘出现的错误。可以参考https://www.cnblogs.com/jpfss/p/9462792.html

    • 安装双系统出现两个系统的时间不一致问题。主要原因是UNIX和Windows看待系统硬件时间的方式是不一样的:Windows把计算机硬件时间当作本地时间(local time),所以在Windows系统中显示的时间跟BIOS中显示是一样的。Linux/Unix/Mac把计算机硬件时间当作 UTC, 所以在Linux/Unix/Mac系统启动后在该时间的基础上,加上电脑设置的时区数( 比如我们在中国,它就加上“8” )。

    • 终于安装完发现apt-get速度太慢,此时可以更改清华源或者中科大源

    最后,用Linux就请忘掉图形界面了(Linux的前后端是通过网络连接的),你可以通过Ctrl+Alt+F2切换终端。尽情享受Terminal的魅力吧!!!


    2. Linux基础学习

          学习Linux的基础知识首先应当认识到在Linux系统中,一切皆是文件。同时面对繁多的命令,我们应当记住常用命令,并且善用man和help对命令进行查询。本节从常用命令开始,对Linux的基础知识进行了完整的学习和了解。

    2.1 Linux重要命令 


     

    Linux重要命令(去除后面讲解的常用命令)集锦

    •  kill 命令
    kill PID

     是不是Windows用户遇到应用程序不反应的时候,经常调出管理器杀掉他,在Linux中,我们就需要用到 kill 命令。先通过输入命令 ps au 查看进 程,找到需要终止进程的PID再通过 kill PID 即可

    • 关机重启命令
    sudo reboot
    sudo shutdown now    //now表示时间
    • 文档编辑命令
    vi test
    vim test
    gedit test 
    //vi vim gedit三个文档编辑工具
    • 管道

    Linux提供管道符号 “|”  作用是“命令1”的输出内容,将作为“命令2”的输入内容。一般与 grep 命令一起使用

    •  grep 命令

    用于过滤/搜索特定字符。可使用正则表达式能多种命令配合使用。 grep 命令在查找文件内容非常实用,譬如查找某个工程中某个变量。

    grep   -i   one  /root/1.txt      //显示root目录下的1.txt文件中含有one字符的一行数据(忽略大小写)
    cat   /root/1.txt  |  grep  -i  one    // 在cat命令输出结果基础上,进行过滤

    2.2 用户及文件权限管理


     

    • 用户及用户组管理
    sudo adduser username   //创建用户
    su username                   //切换用户
    groups username            //加入用户组
    sudo usermod -G sudo username    //给sudo权限
    sudo deluser username --remove-home    //删除用户及其目录
    who am i                        // 当前用户
    //who命令常用参数
    //-a    打印能打印的全部
    //-d    打印死掉的进程
    //-m    同am i,mom likes
    //-q    打印当前登录用户数及用户名
    //-u    打印当前登录用户登录信息
    //-r    打印运行等级

    测试实验如下

     ⚠️ useradd 和 adduser 的区别在于 useradd 只创建用户,创建完了用 passwd username 去设置新用户的密码。 adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。

    • 文件及其权限管理
    touch *.md            //创建*.md文件
    rm -rf *.md           //删除文件或文件夹
    ls                           //查看当前文件夹对应的文件
    //ls对应相关命令
    //-s         显示文件大小
    //-S         按照文件排序
    //-Al        显示隐藏文件
    //-h         文件大小方便看
    chmod -R 777 *     //该目录所有文件的权限都是可读可写可执行
    //三个7分别代表三个用户group、others 和user
    //7代表1+2+7分别代表执行、写、读三个权限

    测试实验如下


    2.3 Linux 目录结构及文件基本操作


     

    • Linux目录结构

            Linux 的目录结构说复杂很复杂,说简单也很简单。复杂在于,因为系统的正常运行是以目录结构为基础的,对于初学者来说里面大部分目录都不知道其作用,重要与否,特别对于那些曾经的重度 Windows 用户,他们会纠结很长时间,关于我安装的软件在哪里这类问题。说它简单是因为,其中大部分目录结构是规定好了的FHS 标准,在里面的一切操作都会变得井然有序。

           下面通过一幅树图来展示Linux的目录结构,也作为一个备忘(来自实验楼,侵删)。

    • Linux文件操作命令
    touch *.txt                              // 新建文件
    mkdir build                             //新建build文件夹,可以创建多级目录
    cp build /home/Downloads                //拷贝build文件夹到Downloads目录下
    rm -rf build                             //删除build文件夹
    mv build /home/Downloads                // 移动build文件夹到Downloads目录下
    cat *.txt                                 // 顺序查看文件,-n添加行数
    tac *.txt                                 //倒序查看文件,-n添加行数
    nl *.txt                                   //查看文件,显示行号,并且比前两个显示更专业
    file *.txt                                  //查看文件类型

    2.4 环境变量与文件查找


     

    • 环境变量

    命令

    说明

    set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

    通过实验我们能够发现区别

    •  命令的查找路径与顺序及其修改

              注意Linux的命令是通过环境变量PATH搜索的。如果是自己创建的可执行,只能在当前目录执行。我们同样可以将自定义路径添加到环境变量PATH中

    PATH=$PATH:/home/shiyanlou/mybin
    //修改变量
    path=$PATH
    echo $path
    path=${path%/home/shiyanlou/mybin}
    //或使用通配符,*表示任意多个任意字符
    path=${path%*/mybin}
    
    //删除变量
    unset temp
    
    //使环境变量生效
    source .zshrc
    • 文件搜索

      与搜索相关的命令常用的有  whereis , which , find 和 locate  

     whereis 只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s),如下:

     

     locate 可以用来查找指定目录下的不同文件类型,可以统计数目可以加上 -c 参数,-i 参数可以忽略大小写进行查找。

     which 本身是 Shell  内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令。

     find 应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。

     

    下面列出find的几个用法

    //将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
    find . -name "*.c"
    
    //将目前目录其其下子目录中所有一般文件列出
    find . -type f
    
    //将目前目录及其子目录下所有最近 20 天内更新过的文件列出
    find . -ctime -20
    
    //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
    find /var/log -type f -mtime +7 -ok rm {} ;
    
    //查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
    find . -type f -perm 644 -exec ls -l {} ;
    
    //为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
    find / -type f -size 0 -exec ls -l {} ; 

     2.5 文件打包与解压缩


     Linux 上的常见常用的压缩包文件格式有 .rar*.gz*.xz*.bz2*.tar*.tar.gz*.tar.xz*.tar.bz2。

    下面主要介绍tar和zip工具。

    打包

    tar –cvf *.tar /home/username/Downloads //打包Downloads目录*.tar
    tar –czf *.tar.gz /home/username/Downloads //打包Downloads目录为*.tar.gz
    zip *.zip /home/username/Downloads //打包Downloads目录为*.zip

    解压缩

    tar –xvf *.tar foldername //解压 tar包到foldername下
    tar -xzvf *.tar.gz foldername//解压tar.gz到foldername下
    unzip *.zip foldername//解压zip到foldername下

    2.6 文件系统操作与磁盘管理


     

    df -h         //查看磁盘容量
    du -h        //查看目录容量
    //du常用参数
    //-a 显示所有
    //-d 0~   目录深度
    //-s     显示总和容量
    •   dd 命令用法

     dd 的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的--选项 值-选项=值。 dd 默认从标准输入中读取,并写入到标准输出中,但可以用选项 if (input file,输入文件)和 of (output file,输出文件)改变。

    //输出到文件
    dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1
    //输出到标准输出
    dd if=/dev/stdin of=/dev/stdout bs=10 count=1
    //注,在打完了这个命令后,继续在终端打字,作为你的输入
    
    //dd在拷贝的同时还可以实现数据转换,将输出的英文字符转换为大写再写入文件
    dd if=/dev/stdin of=test bs=10 count=1 conv=ucase 

    测试实验如下

    • 使用 dd 命令创建虚拟镜像文件

    //从/dev/zero设备创建一个容量为 256M 的空文件
    dd if=/dev/zero of=virtual.img bs=1M count=256
    du -h virtual.img
    //将磁盘镜像格式化为ext4文件系统
    sudo mkfs.ext4 virtual.img
    
    //使用mount查看主机已经挂载的文件系统
    sudo mount
    //挂载我们创建的虚拟磁盘镜像到/mnt目录
    mount -o loop -t ext4 virtual.img /mnt 
    mount -o loop --ro virtual.img /mnt            //只读
    #或者mount -o loop,ro virtual.img /mnt
    sudo umount /mnt                             //卸载
    sudo fdisk -l                                     //查看硬盘分区表信息
    sudo fdisk virtual.img                        //中间的分区信息
    
    //使用 losetup 命令建立镜像与回环设备的关联
    sudo losetup /dev/loop0 virtual.img
    sudo losetup -d /dev/loop0                  //解除设备关联
    
    //使用mkfs格式化各分区
    sudo apt-get install kpartx
    sudo kpartx -av /dev/loop0
    sudo kpartx -dv /dev/loop0                 //取消映射
    
    //格式化,我们将其全部格式化为 ext4
    sudo mkfs.ext4 -q /dev/mapper/loop0p1
    sudo mkfs.ext4 -q /dev/mapper/loop0p5
    sudo mkfs.ext4 -q /dev/mapper/loop0p6

    测试实验如下


    2.7 Linux下的帮助命令


     

    • 内建命令:是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。如 history 、 cd 、 exit 等等。
    • 外部命令:Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。如 ls 、 vi 等。
    • 对比 help 和 man ,我们发现 man 通常比 help 要详尽,而且 man 没有内建与外部命令的区分, help 相对来说非常简洁,对于快速查看参数帮助很大。


     

     


  • 相关阅读:
    node-sass安装失败问题
    通过JS下载 or 唤起App
    获取地址栏参数
    JS获取浏览器可视区域的尺寸
    Pyhton2.x 和Python3.x
    导入一个AndroidStudio工程作为一个Library Module
    win10 右键菜单添加Git Hash Here
    CTRL-Space always toggles Chinese IME (Windows 7、10)
    DOM解析XML报错:Content is not allowed in prolog
    重复安装相同包名APK出现的问题。
  • 原文地址:https://www.cnblogs.com/charlesxie/p/12247116.html
Copyright © 2011-2022 走看看