《网络攻防实践》寒假作业

前言

这个作业属于那个课程 《网络攻防实践》
这个作业的要求在哪里 《网络攻防实践》假期作业
我在这个课程的目标是 学习并了解网络攻防的相关知识,能够进行独立的实际操作
这个作业在哪个具体方面帮助我实现目标 该作业主要帮助我学习markdown的相关用法以及Linux的常用命令,为学习网络攻防实践课做好准备
作业正文 作业一、作业二
参考文献 https://www.cnblogs.com/math/p/se-tools-001.html、https://www.cnblogs.com/math/p/exceltk.html、https://www.cnblogs.com/Pandaman/p/markdown.html

作业一

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


  • 我本科是软件工程专业,学习过《计算机网络》课程,了解一些网络相关的基本知识。但所学习知识尚浅,仍需努力学习相关知识。

    攻击技术:网络扫描,网络监听,网络入侵,网络后门,网络隐身
    防御技术:安全操作系统和操作系统的安全配置,加密技术,防火墙技术,入侵检测,网络安全协议。


作业二

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


基于VMWare安装虚拟机Ubuntu

Linux命令

  • 使用Ubuntu有几个快捷键要掌握一下,可以提高使用命令行的效率:

    CTRL+ALT+T:打开终端,天天使用终端,用鼠标打开太低效了;

    CTRL+SHIFT+T:新建标签页,编程时有重要应用;

    ALT+数字N:终端中切换到第N个标签页,编程时有重要应用;

    Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成;

    上下键盘:切换命令历史,刚输入一个很长的命令,按键就可以恢复;

    CTRL+C:中断程序运行。

    登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着选项(options)或参数(arguments)。即Linux中命令格式为:

    command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数
    

    其中选项(option)是调整命令执行行为的开关,选项不同决定了命令的显示结果不同,参数(arugment)是指命令的作用对象。

    如ls命令,lsls .是两条等价的命令,显示是当前目录的内容,这里“.”就是参数,表示当前目录,这个参数缺省可以省略。

    我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录。其中“-a” 就是选项,改变了显示的方式,如下图所示:

    以上简要说明了Linux命令以及选项和参数的区别,但具体Linux中哪条命令有哪些选项及参数,以及如何使用,需要我们靠经验积累或者查看Linux的帮助文档了。

  • man命令

    不论学习编程还是Linux命令,掌握帮助文档的使用都是很重要的,是举一反三的重要途径。

    man是manual的缩写,我们可以通过man man来查看man的帮助,如下图:

    帮助文档包含:

        1 Executable programs or shell commands(用户命令帮助) //普通的Linux命令
        2 System calls (系统调用帮助)  //系统调用,操作系统的提供的服务接口
        3 Library calls (库函数调用帮助)  //库函数,  C语言中的函数
        4 Special files (usually found in /dev)  //指文件的格式,比如passwd, 就会说明这个文件中各个字段给游戏留的,由各个游戏自己定义
        6 Games  //给游戏留的,由各个游戏自己定义
        7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)  //附件还有一些变量,比如向environ这种全局变量在这里就有说明
        8 System administration commands (usually only for root)  //系统管理用的命令,这些命令只能由root使用,如ifconfig 
         
    

    结合后面学习的grep 命令和管道,可以多关键字查找:

    man -k key1 | grep key2 | grep key3 | ...
    

    例如使用man -k sort | grep 3,可以更好的找到qsort,你可以试试。

    man -k 有个等价的命令apropos,大家可以学习一下。

    使用man -k找到命令后,可以用man -f cmd查看命令的基本功能。man -f等价于whatis.

Linux基础入门

  1. Linux用户管理

     who   命令常用参数
         //-a    打印能打印的全部
         //-d    打印死掉的进程
         //-m    同am i,mom likes
         //-q    打印当前登录用户数及用户名
         //-u    打印当前登录用户登录信息
         //-r    打印运行等级
      sudo adduser ***           //创建用户
      sudo passwd ***            //设置密码
      su ***                     //切换用户
    
      groups ***                 //加入用户组
      sudo usermod -G sudo ***   //给sudo权限
      sudo deluser *** --remove-home        //删除用户及其目录
      cat /etc/group | grep -E "lilei"      //lilei:x:1000;group_name:password:GID:user_list
      Linux 下密码输入是不显示任何内容的
      退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d
    





  2. Linux文件权限

    ls -l                     //使用较长格式列出文件
    ls -Al                    //查看文件
    ls -dl <目录名>           //查看某一个目录的完整属性,而不是显示目录里面的文件属性:
    ls -AsSh                 //显示所有文件大小,并以普通人类能看懂的方式呈现:
    touch filename           //创建文件
    sudo chown dou**  filename                //变更文件所有者
    echo "echo \"hello dou\"" > filename      //加内容
    chmod  XXX filename                       //赋予文件权限,XXX分别是0-7的三个数字分别代表user和groups、others
                                              //1 2 4 三个数字分别代表x执行、w写和r读,加和为7
    sudo chmod 777 filename                   //给出了最大的权限
    



    adduseruseradd 的区别是什么?

    答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。

  3. Linux的目录结构

    cd ..             //进入上一级目录
    pwd               //获取当前路径
    cd /usr/local/bin               //绝对路径
    cd ../../usr/local/bin          //相对路径
    

  4. Linux文件的基本操作

    文件:
    touch filename                              // 新建文件
    目录:
    mkdir xxx                                  //新建xxx目录
                //-p                           新建多级目录(mkdir -p father/son/grandson)
    cp xxx /home/shiyanlou                     //拷贝xxx文件夹到home/shiyanlou目录下
    rm  xxx                                    //删除xxx文件夹后加
               //-f                            强制删除
               //-r                            删除文件夹
    mv xxx /home/shiyanlou                     // 移动xxx文件夹到home/shiyanlou目录下
    
    touch file{1..5}.txt                       //使用通配符批量创建 5 个文件
    
    rename 's/\.txt/\.c/' *.txt                //批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件
    
    rename 'y/a-z/A-Z/' *.c                    //批量将这 5 个文件,文件名和后缀改为大写
    
    cat filename                               // 顺序查看文件
               //-n                            添加行数
    nl filename                                //查看文件,显示行号,并且比前两个显示更专业
    file filename                              //查看文件类型
    head filename                              //显示文件前10行
    tail filename                              //显示文件尾
    (tail -n 1 /etc/passwd                     //只看一行, 加上 -n 参数,后面紧跟行数)
    




  5. 环境变量

    declare tmp        //创建变量名
    tmp=***           //变量名=赋值名
    echo $tmp         //读取变量的值 $ 符号用于表示引用一个变量的值
                      //并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。
    set env export    //用于打印环境变量信息,区别在于涉及的变量范围不同
                      // 修改变量
    path=$PATH:绝对路径
    $ echo $path      //查看 PATH 环境变量的内容
    touch hello_shell.sh  gedit hello_shell.sh       //创建一个 Shell 脚本文件
    $ path=${path%/home/shiyanlou/mybin}             // 或使用通配符,*表示任意多个任意字符
    $ path=${path%*/mybin}
    unset temp                                      //删除变量
    source .zshrc                                   //变量立即生效
    whereis who  whereis find                       //简单快速搜索文件
    whereis filename                                //只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)
    locate filename                 //可以用来查找指定目录下的不同文件类型,但需要`apt-get install locate`
    which filename                  //我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令
    find filename                   //它可以通过文件类型、文件名进行查找,也可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。 
                   -atime              //最后访问时间
                   -ctime              //最后修改文件内容的时间
                   -mtime              //最后修改文件属性的时间
    (                    -mtime n                  //n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
                          -mtime +n                 //列出在 n 天之前(不包含 n 天本身)被修改过的文件
                          -mtime -n                 //列出在 n 天之内(包含 n 天本身)被修改过的文件
                          -newer file               //file 为一个已存在的文件,列出比 file 还要新的文件名)
    

    sudo find /etc -name sources.list //找到sources.list文件

    sudo chown shiyanlou /etc/apt/sources.list //把文件所有者改为自己

    sudo chmod 600 /etc/apt/sources.list //把权限修改为仅仅只有自己可读可写




  6. Linux常用的压缩/解压工具

    压缩
    tar –cvf *.tar /home/dou/Desktop            // 打包/home/dou/Desktop目录*.tar
    tar –czf *.tar.gz /home/dou/Desktop         // 打包/home/dou/Desktop目录为*.tar.gz
    zip -r -(9-1) -q -o -e *.zip /home/dou/Desktop  
                                                // ( r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。-(9-1) 压缩级别 -e创建加密压缩包)
    
    解压
    tar –xvf *.tar                              // 解压*.tar
    tar -xzvf *.tar.gz                          // 解压*.tar.gz
    unzip *.zip                                 // 解压*.zip
      
    du -h  -d *.zip                             // 查看打包后文件的大小
    


  7. 文件系统操作

    • 基本操作

      df              //显示磁盘容量
      du              //显示目录大小
          -h          //更易于阅读
          -d          //显示深度
          -s          //显示总计
      
      


    • 简单的磁盘管理

      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 if=/dev/stdin of=test bs=10 count=1 conv=ucase         //dd在拷贝的同时还可以实现数据转换,将输出的英文字符转换为大写再写入文件
      dd if=/dev/zero of=virtual.img bs=1M count=256        //从/dev/zero设备创建一个容量为 256M 的空文件
      du -h virtual.img
      sudo mkfs.ext4 virtual.img            //将磁盘镜像格式化为ext4文件系统
      sudo mount            //使用mount查看主机已经挂载的文件系统
      mount -o loop -t ext4 virtual.img /mnt         //挂载我们创建的虚拟磁盘镜像到/mnt目录
      sudo umount /mnt               //卸载
      sudo fdisk -l                //查看硬盘分区表信息
      sudo fdisk virtual.img            //中间的分区信息
      


  8. 内建命令与外部命令(type 命令来区分命令是内建的还是外部的)

    内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
    外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
  9. 帮助命令

    help            //help 命令是用于显示 shell 内建命令的简要帮助信息。
    
    man             //man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。
    
    info            //得到的信息比 man 还要多,info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。
    



posted @ 2020-02-11 17:32  没有感情的机器猿  阅读(166)  评论(0编辑  收藏  举报