20145314郑凯杰《信息安全系统设计基础》第八周复习总结 Part A
20145314郑凯杰《信息安全系统设计基础》第八周复习总结 Part A
学习知识点内容总结
复习线索:http://group.cnblogs.com/topic/73069.html
第一章重要知识点总结
本章思路:
搜索能力:
- man: man -k (等价于apropos)
- cheat
- find locate
- which whereis
- apt-cache search
Linux简介
Linux 就是一个操作系统,也就是系统调用和内核那两层
Linux核心命令
Linux中命令格式为:command [options] [arguments] []表示是可选的,即组成结构为:命令 [选项] [参数]
Ubuntu下常用快捷键
Ctrl+Alt+T: 打开终端Ctrl+D: 键盘输入结束或退出终端Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行Ctrl+C: 中断程序运行Ctrl+Z: 将当前程序放到后台运行,恢复到前台为命令fgCtrl+A: 将光标移至输入行头,相当于Home键Ctrl+E: 将光标移至输入行末,相当于End键Ctrl+K: 删除从光标所在位置到行末Ctrl+Shift+T: 新建标签页Alt+数字N: 终端中切换到第N个标签页Alt+Backspace: 向前删除一个单词Tab: 终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成上下键盘: 切换命令历史,刚输入一个很长的命令,按上键就可以恢复Shift+PgUp: 将终端显示向上滚动Shift+PgDn: 将终端显示向下滚动
man命令
man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
-a:在所有的man帮助手册中搜索-k:根据关键字搜索联机帮助,是一种模糊搜索-f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息-P:指定内容时使用分页程序-M:指定man手册搜索的路径
cheat命令
cheat命令:告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。
find命令
find命令:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
命令格式:find pathname -options [-print -exec -ok ...]
其中:
pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录print:find命令将匹配的文件输出到标准输出exec:find命令对匹配的文件执行该参数所给出的shell命令,相应命令的形式为'command' { } ;,注意{ }和\;之间的空格ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
常用选项:
name:按照文件名查找文件perm:按照文件权限来查找文件mtime-n+n:按照文件的更改时间来查找文件,n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件type:查找某一类型的文件,诸如:b 块设备文件,d 目录,c 字符设备文件,p 管道文件,l 符号链接文件,f 普通文件size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
locate命令
locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
命令格式:locate [选择参数] [样式]
命令参数:
- e:将排除在寻找的范围之外
- 1:如果是1则启动安全模式,在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,因为 locate必须至实际的档案系统中取得档案的权限资料
- f:将特定的档案系统排除在外,例如我们没有到必要把proc档案系统中的档案放在资料库中
- q:安静模式,不会显示任何错误讯息
- n:至多显示 n个输出
- r:使用正规运算式 做寻找的条件
- o:指定资料库存的名称
- d:指定资料库的路径
- h:显示辅助讯息
- V:显示程式的版本讯息
which命令
which命令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。which是根据使用者所配置的PATH变量内的目录去搜寻可运行档的,所以,不同的PATH配置内容所找到的命令是不一样的。
命令格式:which 可执行文件名称
命令参数:
- n:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
- p:与-n参数相同,但此处的包括了文件的路径
- w:指定输出时栏位的宽度
- V:显示版本信息
whereis命令
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
主要参数:
- b:定位可执行文件
- m:定位帮助文件
- s:定位源代码文件
- u:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件
- B:指定搜索可执行文件的路径
- M:指定搜索帮助文件的路径
- S:指定搜索源代码文件的路径
apt-cache命令
apt-cache命令可以在使用apt-get install安装一个程序时先找找软件源的库里有没有这个程序,有才可以安装。
第二章重要知识点总结
本章思路:
- GCC编译的四个步骤:
预处理(gcc -E)、编译(gcc -S)、汇编(gcc -c)、链接, gcc 选项可以简记为“ESc”,相应的产出文件的后缀可以简记为“iso” - 静态链接库的生成:
ar rcsv libxxx.a xxx.o静态库的使用:gcc -o main main.c -L. -lxxx注意-L -l 的含义 - 共享库的生成
gcc -fPIC -c xxx.c共享库的使用:gcc -o main main.c -L. -lxxx - gdb: gcc -g 四种断点(函数、行、条件、临时)
- makefile: 画依赖图 根据依赖图写显示规则:目标:依赖文件
- 命令 makefile中的变量 p78的自动变量要理解
VIM编辑器
首先需要记住这张图:
VIM:

①大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。
②vim有6种基本模式(需要掌握的是普通模式、插入模式和命令行模式)
- 普通模式(Normal mode):在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
- 插入模式(Insert mode):在插入模式中,可以按ESC键回到普通模式。
- 命令行模式(Command line mode):在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
③以上三种模式的切换:
- vim启动进入普通模式;
- 处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式;
- 普通模式中按i(插入)或a(附加)键都可以进入插入模式;
- 普通模式中按:进入命令行模式;
- 命令行模式中输入wq回车后保存并退出vim。
关于光标移动及常用操作,考试应该不会出现,具体请参考以前的博客:
http://www.cnblogs.com/lxm20145215----/p/5906439.html
http://www.cnblogs.com/20145208cy/p/5905738.html
gcc
- 预处理阶段:头文件和宏定义,—E可以让gcc在预处理结束之后停止编译过程,因此可以看到预处理的过程。一般格式为:gcc [选项] 要编译的文件 [选项] 目标文件
gcc -E hello.c -o hello.i - 编译阶段:gcc将代码翻译成汇编语言,使用选项-S只进行编译而不进行汇编,结果生成汇编代码。
gcc -S hello.i -o hello.s - 汇编阶段:将.s文件转成目标文件,使用选项-c可以看到汇编代码转换为二进制目标代码。
gcc -c hello.s -o hello.o - 链接阶段:默认搜索链接到
libc.so.6函数库当中,调用库文件中已经实现的函数。
静态库与共享库
静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx //链接到静态库;
注意:-L:在库文件的搜索路径列表中添加dir目录,-l: 在头文件的搜索路径列表中添加dir目录。
共享库的生成:
gcc -fPIC -c xxx.cgcc -shared -o libxxx.so xxx.o;共享库的使用:
gcc -o main main.c -L. -lxxx
注册共享库的方法:
- 修改/etc/ld.so.conf文件
- 修改LD_LIBRARY_PATH环境变量
- 将库文件直接复制到/lib或者/usr/lib目录下:cp (lib+name).so /lib
gdb
主要操作:
- 查看文件:
l - 设置断点:在
b后加入相对应的行号。如b 6 - 查看断点情况:设置完断点后键入
info b,在gdb中可以设置多个断点。bt查询调用函数的情况 - 运行代码:默认从首行开始运行代码,键入
r;r+行号:从该行号开始运行 - 查看变量值:
p变量。例:p n - 单步运行:
n或s,s会进入函数,n不会进入函数 - 恢复程序运行:
c - 帮助信息:
h
断点的设置方法:
- 函数:``b 文件名.c:函数名
- 行:
b 行数 - 条件:
b 行数 if 表达式(例如:b 9 if == 12) - 临时:
tb [文件名:]行号或函数名 <条件表达式>
makefile
Makefile基本写法:test(目标文件): prog.o code.o(依赖文件列表)
tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
使用宏的Makefile:定义宏宏名=原变量,使用宏的格式(宏名)
gcc -c code.c -o code.ogcc -c prog.c -o prog.ogcc prog.o code.o -o test
每章所遇到问题的总结分析
第一周重点问题总结
问题类型一 请在虚拟机中安装DDD软件
sudo update
sudo apt-get install ddd
请演示怎么判断DDD软件能不能安装?
先搜索是否安装 `sudo apt-cache search`
请查找系统中50M以上的文件
find . -size +50M -type f
请查找系统中两天前修改过的且小于5M的文件
find . -size -5M -type f -mtime +2d
请问如何查找操作系统的信息
unname -a #
请查找当前目录下所有.c文件中哪个文件中包含main函数
man -k .c
请建立一个目录,里面建立两个子文目录,如何一条命令删除三个目录?
rm -r <目录>
如何把一个目录及子目录拷贝到自己的主目录中
cp -r <这个目录> ..
第二周重点问题总结
问题类型一 本章开始需要git代码,给出相应步骤
git的一般程序:
- git add .
- git commit -m "提交的描述信息"
- git push origin master
- 可以用 wc -l
find src -name *.c类似统计代码行数
问题类型二 在进行git时,弹出错误
图1:
解决:ssh和-keygen之间不能有空格,把他们之间的空格去掉就好了
问题类型三 敲入:wq 退出保存时,出现 E212:无法打开并写入文件 的错误提示。
这是由于在该目录下当前用户没有写权限导致。
解决方案:在不需要root权限的文件夹中建立文件
或保存文件时用 : w ! sudo tee %(tee 用于读取输入文件,同时保存;%表示当前编辑文件 )
问题类型四 不能成功编译
主要原因:没敲入 #include"stdio.h"
问题类型四 makefile问题
注意TAB键的使用,如果出错,尝试将空格的位置换成TAB键
参考资料
20145314郑凯杰《信息安全系统设计基础》第八周复习总结 Part A的更多相关文章
- 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析
20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...
- 20145314郑凯杰《信息安全系统设计基础》第9周学习总结 PART B
20145314郑凯杰<信息安全系统设计基础>第9周学习总结 PART B 明确教材学习目标 注意每个系统调用的参数.返回值,会查帮助文档 阅读教材,完成课后练习(书中有参考答案),考核: ...
- 20145314郑凯杰《信息安全系统设计基础》第7周学习总结 part B
20145314郑凯杰<信息安全系统设计基础>第7周学习总结 part B 上篇博客反思与深入 首先根据本周第一篇博客,娄老师给我的评论,我开始进行局部性的深入研究: 分为两个步骤,一是知 ...
- 20145314郑凯杰《信息安全系统设计基础》第5周学习总结 part B
20145314郑凯杰<信息安全系统设计基础>第5周学习总结 part B 在前四天的学习中,我主要对课本知识进行了总结,在本周后三天的学习过程中,我进行实践并截图. http://www ...
- 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现
20145314郑凯杰<网络对抗技术>PE文件病毒捆绑(插入捆绑)的实现 一.本节摘要 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的 ...
- 20145314郑凯杰《网络对抗技术》实验9 web安全基础实践
20145314郑凯杰<网络对抗技术>实验9 web安全基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET ...
- 20145314郑凯杰《网络对抗技术》实验5 MSF基础应用
20145314郑凯杰<网络对抗技术>实验5 MSF基础应用 1.0 MS08_067安全漏洞 1.1 实验目标 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单 ...
- 20145314郑凯杰 《Java程序设计》第10周学习总结
20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...
- 20145314郑凯杰 《Java程序设计》实验五 实验报告
20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...
随机推荐
- innerHTML 延后执行?
时常会觉得 innerHTML 可能有延后执行的情况,比如下面代码: document.body.innerHTML = 'something'; alert('something else'); 明 ...
- 160520、MyBatis的几种批量操作
MyBatis中批量插入 方法一: <insert id="insertbatch" parameterType="Java.util.List"> ...
- Struts2的OGNL的用法
1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1 ...
- linux页缓存
2017-04-25 本节就聊聊页缓存这个东西…… 一.概述 页缓存是一个相对独立的概念,其根本目的是为了加速对后端设备的IO效率,比如文件的读写.页缓存顾名思义是以页为单位的,目前我能想到的在两个地 ...
- CentOS yum 安装node.js
第一步: curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash - 第二步: sudo yum -y i ...
- 一种部署 Python 代码的新方法
在Nylas,我们喜欢使用Python进行开发.它的语法简单并富有表现力,拥有大量可用的开源模块和框架,而且这个社区既受欢迎又有多样性.我们的后台是纯用 Python 写的,团队也经常在 PyCon ...
- JavaWeb—Session与Cookie
概念 会话:指从一个浏览器窗口打开到关闭期间的一系列动作(可简单理解为用户开一个浏览器,点击多个链接,访问服务器多个web资源,然后关闭浏览器). HTTP协议是无状态协议:每次连接(比如同一个网站的 ...
- Spark2.x AFTSurvivalRegression算法
Spark2.0的机器学习算法比之前的改变最大的是2.0基本采用了dataframe来实现的,但之前的都是用的RDD,看官网说貌似在3.0的时候RDD就不用了!还有一个就是hiveContext和sq ...
- Spring第三弹—–编码剖析Spring管理Bean的原理
先附一下编写的Spring容器的执行结果: 代码如下: 模拟的Spring容器类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- MFC中存在的不属于任何类的全局函数,它们统统在函数名称开头加上Afx
MFC中存在的不属于任何类的全局函数,它们统统在函数名称开头加上Afx. 函数名称 说明 AfxWinInit 被WinMain(MFC提供)调用的一个函数,用做MFC GUI程序初始化的一部分,如果 ...