grep操作指南

1.grep的作用

grep(Global search Regular Expression and Print out the line)在文本中查找指定的字符串,在Linux中,grep,sed和awk时常用的文本处理工具。

html/css指南

来源:W3school(CSS参考手册)https://www.w3school.com.cn/cssref/index.asp

1.HTML

1.1class(类)

1
2
.class-name{ ...  ;}	//命名一个class
class = "class-name" //调用一个class

1.2id

1
2
#id-name{ ... ;}			//命名一个id
id = "id-name" //调用一个id

1.3class与id对比

在一个html网页页面中可以无数次调用相同的class类;
而同样的id在页面里只能出现一次

1.2注释

1
<!-- comment  -->

1.3如何插入小图标

1
<link rel="shortcut icon" sizes="16*16 24*24 48*48 64*64" href="favicon.ico">

1.3.1图片的引用

1.绝对路径
/../xx.png
2.相对路径
xx.png
3.子路径
images/xx.png
4.父路径
../xx.png

1.4导航条

1
2
3
4
5
6
7
8
9
10
11
12
13
<nav>//导航栏
<ul>//无序列表,ol为有序列表
<li>Emir Liu</li>//列表中的元素
<li>Blog </li>
<li>Resume</li>
</ul>
</nav>
//或者
<nav>
<ul>
<li> </li>
</ul>
</nav>

1.4.1超链接

Blog
Emir Liu

1.4.2导航排列方式

display: inline-block
排列在一行

:hover
当鼠标悬浮在某个格式上面的时候,则

cursor: pointer 鼠标变为手指

2.属性

2.1 position属性

1、static:
static是所有元素的默认属性,也就是可以理解为正常的文档流
2、relative:
relative是相对于自己文档的位置来定位的,对旁边的元素没有影响
3、absolute:
absolute是相对于父标签来进行定位的,如果没有父标签或者父标签是static,那么sorry,刚烈的absolute会相对于文档定位(不同于fixed相对于浏览器定位)
4、fixed;
牛逼的fixed,是相对于浏览器窗口来定位的。不会因为滚动条滚动,牛了一笔。(但是平常卵用不多,我自己的吐槽)

2.CSS

2.1如何插入一个CSS样式表

2.1.1外部样式表

1
2
3
4
<head>
<link rel="stylesheet" type="text/css" href="css-filename.css">
</head>
//在每个页面上通过link连接到样式表

2.1.2内部样式表

1
2
3
4
5
6
7
<head>
<style type="text/css">
body{ ... ;}
.class-name{ ... ;}
#id-name{ ... ;}
</style>
</head>

2.1.3内联样式(不建议使用)

1
2
3
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>

2.1.4多重样式表

加入某个属性在不同的样式表中被同样的选择器定义,属性值将从范围小的样式表中被继承下来。例如外部样式表和内部样式表中都定义了一个属性,则继承内部样式表。

1.基础语法

1
selector{property: value}

2.1类型选择器

1
2
3
h1{
color:#36cfff;
}

2.2通用选择器

  • {
    color:#36cfff;
    }

    2.3后代选择器

    1
    2
    3
    ul em {
    color: #000000;
    }//仅当样式规则位于特定元素内时,才希望将其应用于特定元素。如以下示例所示,样式规则仅在<em>元素位于<ul>标记内时才适用。

    2.4类选择器

    1
    2
    3
    4
    5
    6
    .black {
    color: #000000;
    }文档中class属性设置为black的每个元素,此规则均将其内容呈现为黑色。
    h1.black {
    color: #000000;
    }//将class属性设置为black的 <h1>元素呈现为黑色。

    2.5id选择器

    1
    2
    3
    #black {
    color: #000000;
    }文档中id属性设置为black的每个元素,此规则均将其内容呈现为黑色。

FAQ:

页面加载过程中显示加载界面,加载完毕隐藏加载界面:https://blog.csdn.net/SL_World/article/details/89109050

vim操作指南

0.简介

什么是最优秀的文本编辑器,当然是vim.
vim操作方便,在熟悉中会发现直接通过键盘进行操作比用鼠标更加的快速,可以享受到双手放在键盘上打字的畅快淋漓。
在打字过程中,不需要中断操作,然后再拿鼠标,减少了鼠标控制的打扰。
而且vim经历了大量大神的调教之后,增加了无数的扩展,更加贴近人的使用习惯。
完全可以用vim作为日常的程序文本编辑器,

当你直接下载之后,vim是非常干净的,里面没有扩展,功能也很单一,在实际使用的情况下,我们需要对vim进行配置,来添加一些有用的插件。
我的vim配置?https://github.com/Emir-Liu/vimrc
配置是fork其他大神的,里面的功能也在探索的过程中,使用它搭配makefile等可以进行项目的实践,贴图:

上面是我之前使用vim和一些工具做的STM32程序模板。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
ack.vim: 
Vim plugin for the_silver_searcher (ag) or ack -- a wicked fast grep
bufexplorer.zip: Quickly and easily switch between buffers. This plugin can be opened with <leader+o>
ctrlp.vim:
Fuzzy file, buffer, mru and tag finder. It's mapped to <Ctrl+F>
goyo.vim and vim-zenroom2:
lightline.vim:
A light and configurable statusline/tabline for Vim
NERD Tree:
A tree explorer plugin for vim
mru.vim:
Plugin to manage Most Recently Used (MRU) files. This plugin can be opened with <leader+f>
open_file_under_cursor.vim:
Open file under cursor when pressing gf
pathogen.vim:
Manage your vim runtimepath
snipmate.vim:
snipmate.vim aims to be a concise vim script that implements some of TextMate's snippets features in Vim
ale:
Syntax and lint checking for vim (ALE requires NeoVim >= 0.2.0 or Vim 8 with +timers +job +channel)
vim-commentary:
Comment stuff out. Use gcc to comment out a line (takes a count), gc to comment out the target of a motion. gcu uncomments a set of adjacent commented lines.
vim-expand-region:
Allows you to visually select increasingly larger regions of text using the same key combination
vim-fugitive:
A Git wrapper so awesome, it should be illegal
vim-indent-object:
Defines a new text object representing lines of code at the same indent level. Useful for python/vim scripts
vim-multiple-cursors:
Sublime Text style multiple selections for Vim, CTRL+N is remapped to CTRL+S (due to YankRing)
vim-yankstack:
Maintains a history of previous yanks, changes and deletes
vim-zenroom2
Remove all clutter and focus only on the essential. Similar to iA Writer or Write Room
gist-vim Easily create gists from Vim using the :Gist command

内容结构:
1.vim配置方式
2.vim操作指南
3.vim中一些有用的插件
3.1 NERDTree
3.2 ctags
4.FAQ

1.vim配置方式

首先,为了让vim实现更多的功能,我们需要对其进行配置使得使用过程更加流畅方便,当然,如果没有配置同样可以使用,那就直接跳转到下一章。
配置之后,每次使用vim就可以直接为配置的样式。

1.1 配置文件的位置

1
vim --version

输入上面的命令之后,可以看到

1
2
3
4
5
6
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
defaults file: "$VIMRUNTIME/defaults.vim"
fall-back for $VIM: "/usr/share/vim"

我一般是修改user vimrc file,也就是用户vim配置文件,通过编辑这个文件可以修改vim的外观,快捷键,插件等。

可以直接用我的配置,可以看上面的我的配置。
之后有一篇我的博客是对我的配置进行一些讲解。

1.2 配置样例

我们以自动设置行号为目标对文件做简单的配置。

首先进入用户vim配置文件中

在配置文件.vimrc后面加上:

1
2
set number    "显示行号
set tabstop=2 "tab长度为2

2.vim操作指南

2.1 vim的模式

vim有三种常用模式,分别为:底线命令模式(Last line mode)、输入模式(Insert mode)、命令模式(Command mode)
但是,实际上还有:视图模式(Visual mode)

2.1.1命令模式:

用户刚刚启动vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
这种模式主要是输入简单常见的几种命令组合。
当前模式下,切换模式的命令:

1
2
i 切换到输入模式,以输入字符。
: 切换到底线命令模式,以在最底一行输入命令。

该模式下的常用命令:

1
2
3
yy  复制当前行内容
dd 删除当前行内容
pp 粘贴内容到下一行

2.1.2输入模式:

在命令模式下按下i就进入了输入模式,输入文件内容。
当前模式下,切换模式的命令:

1
ESC,退出输入模式,切换到命令模式

2.1.3底线命令模式:

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
当前模式下,切换模式的命令:

1
ESC,退出输入模式,切换到命令模式

该模式下的常用命令:

1
2
q 退出程序
w 保存文件

2.1.4视图模式:

1
2
help v_ 
查看帮助

在命令模式下按下v/V/Ctrl+V就进入了视图模式。
视图模式是为了方便选取文本,然后进行复制粘贴等内容。

1
ESC,退出视图模式,切换到命令模式

该模式中有三种小的模式:

1
2
3
v   进入字符可视化模式,文本选择是以字符为单位
V 进入行可视化模式,文本选择是以行为单位
Ctrl+V 进入块可视化模式,可以选择一个矩形内的文本

该模式下的常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
光标选择
G 从当前光标位置选择到结尾

va{ 选中{}中间的内容,包括{}
vi< 选中<>中间的内容,<abs>
上面的两个可以扩展:
a表示包含中间的内容,包括边界
i表示只包含中间的内容,不包括边界
后面可以为
{ [ ( " ':分别表示对应的符号之间
t s b w p:选中标签的内容 一个句子 一个块 一个单词 一个段落

操作
x 剪切
y 复制
r 替换为新的字符
u/U/~ 将所有字母变小写/变大写/反转大小写
>/< 将选中的字符右移/左移
p/P 粘贴剪贴板的内容,p是粘在光标所在字符后面,P是粘在前面
d/D c/C y/Y 小写是针对选中字符,大写针对所在行字符

2.2 常用快捷键

1
vim filename    打开或者新建文档

输入模式(在命令模式下按下i)

1
2
3
4
5
6
7
ENTER   回车,换行
BACK SPACE 退格,删除光标前一个字符
DEL 删除光标后一个字符
方向键 移动光标
HOME/END 移动光标到行首/行尾
Page Up/Page Down 上/下翻页
Insert 切换光标为输入/替换模式,光标变为竖线/下划线

底线命令模式(在命令模式中按下:)

1
2
3
4
5
6
:q   退出模式
:w 保存文件
:set nu 显示行号
:set nonumber
:set nonu 隐藏行号
:n 跳转到第n行

命令模式(在其他模式下按下ESC)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
移动光标
kjhl 上/下/左/右移动光标(可以加上组合按键,30j)
ctrl b/f/u/d 屏幕上移一页/下移一页/上移半页/下移半页
-/+ 光标移动到非空格符的上一行/下一行
n<space> 光标向右移动n个字符
0/Home 光标移动到这一行最前面的字符处
$/End 光标移动到这一行卓后面的字符处
H/M/L 光标移动到这个屏幕最上/中间/下面那一行的第一个字符(不确定)

n<Enter> 光标向下移动n行
nG 移动到这个文件的第n行
G 调到文件的最后一行
gg 移动到这个文件的第一行

搜索/替换
/word 向光标下寻找一个名为word的字符串
?word 向光标上寻找一个名为word的字符串
n 重复前一个搜寻的动作
N 反向前一个搜寻的动作

:n1,n2s/word1/word2/g
在第n1与第n2行之间寻找word1字符串,并将字符串取代为word2
:1,$s/word1/word2/g(c)
:%s/word1/word2/g(c)
从第一行到最后一行寻找word1字符串,并将其取代为word2,(并在取代前给用户确认)

删除/复制/粘贴
x/X 向后/前删除一个字符
nx 连续删除n个字符
dd 删除光标坐在的一整行
ndd 删除光标所在的向下n行
d1G 删除光标所在到第一行的所有数据
dG 删除光标坐在到最后一行的所有数据
d$ 删除光标所在到该行的最后一个字符
d0 删除光标所在处到该行的最前面一个字符
yy 复制光标所在的那一行
nyy 复制光标所在的向下n行
y1G 复制光标所在到第一行的所有数据
yG 复制光标所在到最后一行的所有数据
y$ 复制光标所在到该行的最后一个字符

选择
viw 当光标在哪个单词上的时候,选中该单词


3.vim中一些有用的模块

3.1 NERDTree

当建立一个工程的时候,我们通常不仅仅只有一个文件,而是一个文件夹下面的多个文件,为了能够方便我们切换编辑工程内的文件,我们使用了这个模块。

命令模式

1
:NERDTree

配置(按下F3可以显示或者隐藏NERDTree)

1
2
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
树形界面中
h/j/k/l 左/下/上/右移光标
上下建 移动选中的目录或者文件
Enter 展开目录或者打开文件
go 打开文件,但是光标依然在树形界面中
i/s 水平或纵向分割窗口,
m 显示文件系统菜单(添加、删除、移动操作)

? 弹出NERDTree帮助
t 文件在新的标签页打开
T 文件在后台标签页打开
p 到上层目录
P 到根目录
K 到同目录第一个节点
J 到同目录最后一个节点


ctrl+w 光标在左右侧窗口切换
ctrl+w+h/l 光标在窗口切换,只有左右两个窗口所以只能h/l

3.2 ctags

当使用上面的NERDTree模块之后,我们可以很方便的管理一个工程,但是,当需要查看函数的定义的时候,我们需要使用ctags模块来快速跳转到函数的定义。

1
2
3
4
5
6
7
8
ctags -R
在工程的根目录下建立索引文件

Ctrl+]
搜索定义函数的位置

Ctrl+o
返回到之前的位置

用上面的两个常用的按键来查看代码简直爽快。

4.FAQ

4.1 当编辑之后忘记保存文件就直接强制退出了,导致文件无法打开怎么办?

Ans:当编辑后忘记退出或意外关闭时,删除隐藏文件swp,可以删除;或者找到编辑后的文件

4.2 如何将不同文档中的内容进行复制粘贴?

vim中存在系统粘贴板,可以通过使用

1
:reg

来显示系统粘贴板中的内容,然后记住所要粘贴内容的需要例如下面

1
"3

然后在文档中输入命令

1
"3p

就可以了

4.3 如何多行首行缩进或者相反

1
2
:xx,yy>
:xx,yy<

Ubuntu中SSH的使用

1.SSH是什么

SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准 配置。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在Linux Shell中的用法。

2.SSH为什么能够保证安全

原因在于它采用了公钥加密。
整个过程是这样的:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像http协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然 无存了。这种风险就是著名的”中间人攻击”(Man-in-the-middle attack)。

好吧,上面的那些我都不清楚,下面的我知道一点

3.如何使用SSH

3.1SSH远程登陆

3.2SSH传输文件

3.2.1SCP

1
2
scp [-P 端口号] file-name user-name@ip/host-name:target
//将本机文件发送到目标机的目标位置

3.3 如何将外网连接到内网

在外网服务器上配置:

1
2
3
4
vim /etc/sshd_config

//在文件中修改
GatewayPorts yes

在内网主机上配置:

1
2
ssh -gR 11122:localhost:22 Ruser@Rserver
//将外网服务器的11122端口转发到本地22端口

自动连接到外网,检查端口状态

1
2
netstat -tln
//可以看到11122端口在监听

测试:

1
2
ssh -p 11122 user@Rserver
//其中user为内网的账户

Expect操作指南

Expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。可以应用于ssh登陆,ftp登陆。

命令:

1
2
3
4
5
6
send		//用于向进程发送字符串
expect //从进程接受字符串
spawn //启动新的进程
interact //用户交互
$expect_out(buffer) //存储了所有对expect的输入
#! /usr/bin/expect -f

语法:

expect最常用的语法是来自tcl语言的模式-动作。这种语法极其灵活,下面我们就各种语法分别说明。

单一分支模式语法:

1
expect "hi" {send "You said hi"}

匹配到hi后,会输出”you said hi”

多分支模式语法:

1
2
3
expect 	"hi" 	{ send "You said hi\n" } 	\
"hello" { send "Hello yourself\n" } \
"bye" { send "That was unexpected\n" }

匹配到hi,hello,bye任意一个字符串时,执行相应的输出。等同于如下写法:

1
2
3
4
5
expect {
"hi" { send "You said hi\n"}
"hello" { send "Hello yourself\n"}
"bye" { send "That was unexpected\n"}
}

Ubuntu操作指南之必备软件

文本编辑器
vim
equ电子书阅读器
calibre

音乐作谱
LMMS

数据库
MySQL

仓库
git

下载工具
KTorrent
ural

常用工具
tree

即时聊天工具
skype

视频相关
录屏
obs

视频解码器
ubuntu-restricted-extras

Ubuntu执行脚本

1.内容

.sh:source/sh/bash
makefile
c/c++

2.sh

在Ubuntu中有三种方式运行.sh脚本:

1
2
3
4
5
6
7
8
9
10
11
12
sh xxx.sh	//通过sh运行
bash xxx.sh //通过bash运行,该文件可以没有执行权限
source FileName//是bash shell的内置命令
/*
在当前bash环境下读取并执行FileName中的命令,即使没有执行权限
注意 该命令通常使用命令 “.”来替代
例:
source bash_profile
. bash_profile
//这两者等效
*/
./xxx.sh //和上面的等价

当时用最后一种时,有两个条件:
1。需要在文档中有

1
2
3
#! /bin/bash	
//或者
#! /bin/sh

分别代表用bash和sh运行

如果没有指定用bash或者sh时,Ubuntu会使用bash.

2。权限修改

1
chmod a+x xxx.sh

建议使用bash因为会避免一些奇怪的错误

执行shell脚本的执行方式的区别:
./.sh sh ./.sh bash ./*.sh 重新启动一个子进程

source ./.sh ../.sh 执行方式,都是在当前进程中执行脚本。

注意:没有被export导出的变量(非环境变量)是不能够被子shell继承的。

2.1输出重定向

命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

2.2 echo

“” 里面包含转义字符
‘’里面没有转义字符

3.makefile

3.1 .PHONY

区分大小写,表示后面的target不是真实的文件。

3.2 注释

#

3.3 传递参数

1
2
make args=data
//通过命令行传递参数

3.4 如何加入bash

1
SHELL=/bin/bash

3.5 :=和=

1、“=”
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

1
2
3
x = foo
y = $(x) bar
x = xyz

在上例中,y的值将会是 xyz bar ,而不是 foo bar 。
2、“:=”
“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

1
2
3
x := foo
y := $(x) bar
x := xyz

在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

4.c/c++

4.1C编译过程:

预处理 .c -> .i
汇编 .i -> .s
编译 .s -> .o
链接 .0 -> 可执行文件

4.2gcc使用说明

1
2
3
4
5
6
gcc [选项] [文件名]
/*
https://blog.csdn.net/zhangzhi2ma/article/details/79636297


*/

4.1读写文件

1
FILE *fopen( const char * filename, const char * mode );//打开文件

参数:
模式 描述
r 打开一个已有的文本文件,允许读取文件。
w 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+ 打开一个文本文件,允许读写文件。
w+ 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+ 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:

“rb”, “wb”, “ab”, “rb+”, “r+b”, “wb+”, “w+b”, “ab+”, “a+b”

1
2
3
4
5
 int fclose( FILE *fp );//关闭文件
int fputc( int c, FILE *fp );//写入文件
int fputs( const char *s, FILE *fp );//写入文件
int fgetc( FILE * fp );//读取文件
char *fgets( char *buf, int n, FILE *fp );//读取文件

Ubuntu上使用Metasploit指南

1.安装

进入官网安装Metasploit,选择开源版本,进入到git找到Metasploit的快速安装方法。

1
2
3
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall

注意,需要安装curl包。

然后,Metasploit默认使用postgres数据库,安装postgres数据库。

当然,也可以使用其他数据库,不过先不管了。

2.启动Metasploit

首先启动数据库

1
service postgresql start

查看数据库服务是否开启

1
netstat -tnpl | grep postgres

进入msfconsole

1
msfconsole

3.Metasploit操作

3.1漏洞扫描

1
nmap -v 192.168.1.1/24 --script vuln -Pn -O

关于nmap
-v 增加详细程度
–script 脚本
vuln 检测目标机是否有常见漏洞
-Pn 将所有主机视为在线
-O 启动系统检测

namp脚本:
auth: 负责处理鉴权证书(绕开鉴权)的脚本
broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute: 提供暴力破解方式,针对常见的应用如http/snmp等
default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行whois解析
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息
safe: 此类与intrusive相反,属于安全性脚本
version: 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

关于扫描漏洞的结果:
NSE(Nmap Script Engine)是Nmap最强大,最灵活的功能之一。它允许用户编写(和共享)简单脚本,以自动执行各种网络任务。然后,这些脚本将与您期望从Nmap获得的速度和效率并行执行。用户可以依赖分布在Nmap上的不断增长的各种脚本,或者编写自己的脚本来满足自定义需求。

DNS(Domain Name Resolution)域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。

SYN扫描:
SYN扫描是恶意黑客不建立完全连接,用来判断通信端口状态的一种手段。这种方法是最老的一种攻击手段,有时用来进行拒绝服务攻击。
SYN扫描也称半开放扫描。在SYN扫描中,恶意客户企图跟服务器在每个可能的端口建立TCP/IP连接。这通过向服务器每个端口发送一个SYN数据包,装作发起一个三方握手来实现。如果服务器从特定端口返回SYN/ACK(同步应答)数据包,则意味着端口是开放的。然后,恶意客户程序发送一个RST数据包。结果,服务器以为存在一个通信错误,以为客户端决定不建立连接。开放的端口因而保持开放,易于受到攻击。如果服务器从特定端口返回一个RST数据包,这表示端口是关闭的,不能攻击。通过向服务器连续发送大量的SYN数据包,黑客能够消耗服务器的资源。由于服务器被恶意客户的请求所淹没,不能或者只能跟很少合法客户建立通信。

SYN Stealth Scan

Ubuntu破解无线Wifi

1.查看网络接口

Ubuntu 中,通常有线网卡端口为enp2s0(eth0),无线网卡端口则为wlp1s0(wlan0),使用wlp3s0这种复杂的名字主要是为了减少网卡的枚举。

1
ifconfig

查看无线网卡的端口。wlp1s0
查看MAC地址,在ether后面。a0:c5:89:77:47:78

2.工具

aircrack-ng:
Aircrack-ng是一个与802.11标准的无线网络分析有关的安全软件,主要功能有:网络侦测,数据包嗅探,WEP和WPA/WPA2-PSK破解。Aircrack-ng可以工作在任何支持监听模式的无线网卡上(设备列表请参阅其官方网站)并嗅探802.11a,802.11b,802.11g的数据。该程序可运行在Linux和Windows上。Linux版本已经被移植到了Zaurus和Maemo系统平台, 并概念验证可移植到iPhone。

3.启动无线网卡监听模式

1
sudo airmon-ng start +无线网卡的端口

4.监听周围所有无线网络

1
sudo airodump-ng +无线网卡的端口 (注意在将无线网卡变为监听模式后,端口名会改变)wlp1s0mon

5.监听指定的无线网络(注意要在新的窗口哦)

1
sudo airodump-ng --bssid +路由器MAC -c +信道 -w +文件名 +无线网卡的端口  64:58:AD:44:AF:16

6.与AP建立虚拟连接(注意在新的窗口哦)

1
sudo aireplay-ng -1 0 -a +路由器MAC -h +本机无线网卡MAC +无线网卡端口

7.进行注入

1
sudo aireplay-ng -2 -F -p 0841 -c ff:ff:ff:ff:ff:ff -b +路由器MAC -h +本机无线网卡MAC +无线网卡端口

8.解密

1
sudo aircrack-ng +文件名*.cap

9.结束

1
sudo airmon-ng stop +无线网卡端口

Ubuntu配置MySQL

详细教程:http://www.mysqltutorial.org/basic-mysql-tutorial.aspx

1.安装MySQL

1
2
3
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev

2.检测

安装是否成功

1
sudo netstat -tap | grep mysql

mysql服务是否正常

1
2
3
4
5
6
7
systemctl status mysql.service
``

# 3.基本操作

```bash
mysql -u root -p //登陆数据库

1.数据库

1
2
3
4
5
6
7
8
9
10
show databases;			//列出数据库

CREATE DATABASE [if not exists] DATABASE-NAME //创建数据库
[character set charset-name] //指定字符集
[collate collation-name] //指定排序规则

drop database [if exists] database-name; //删除数据库
use database-name; //选择数据库
source /.../path; //导入数据库
select database(); //获取当前连接的数据库的名称

2.表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
show tables;

drop table table-name;

create table [if not exists] table-name(
column-name data-type (extra),
.
.
table-constraints
) engine = storage-engine //默认使用InnoDB

column-name data-type(length) [not null] [default value] [auto-increment] column-constraint
//约束:check,unique,not null
//auto-increment,每当自动一个新行插入到列表中,每个表最多宝航一个auto-increment列,当被设置为auto-increment,not null约束会添加到列中

insert into table-name(column-name,...)
values (data1,...),
(...)
.
.

alter table table-name //在表中添加一列
add
new-column-name column-definition
[first | after column-name], //默认添加到列表的末尾
.
.
.

alter table table-name
modify column-name column-definition
[first | after column-name]

3.数据

查询表内的数据结构

1
2
desc table-name;					//查询表的字段信息(不包含内容)
show columns from table-name; //同上
1
2
3
4
5
6
7
8
9
select [distinct] column1[as alias],column2/expression/*	
//必要,distinct显示唯一状态,如果有多列数值,会得到唯一的组合
from table-name //必要
[inner/left/right] join table2-name on conditions //下面的可选
where conditions AND/OR/NOT conditions
group by column-1
having group-conditions
order by column1[ASC|DESC],column2[ASC|DESC] //默认为升序
limit [offset,]row_count //offset第一行的偏移规定返回,row_count是最大返回的行数,offset第一个是0.

其中,where column-name = ‘sth’
where与between搭配:where expression between low and high
where与like搭配:where column-name like ‘%sth’
其中,%与零或者多个任意字符串匹配,匹配任何单个字符。
where与in搭配:where value in (value1,value2,…)
where与is null搭配:where value is null
其中,null是一个标记,表示一条信息缺失或者未知。
比较运算符
=
<>或!=
<
>
<=
/>=
其中,0被视为false,非零视为true。
MySQL首先运算AND,然后运算OR。

其中in通常与子查询一起使用。
特别使用日期,Between与日期 cast(‘2001-01-01’ as date)

like:(模式不区分大小写)
expression LIKE pattern ESCAPE escape-character
当需要匹配的模式包含通配符,可以用ESCAPE来指定转义字符,如果没有明确指定转义字符,反斜杠为缺省转义字符

MySQL存储引擎:
1.MyISAM
2.InnoDB
3.MERGE
4.MEMORY/HEAP
5.ARCHIVE
6.CSV
7.FEDERATED

MySQL数据类型
每种数据可以通过以下的特征来确定:
1.值的类型
2.占用的空间,以及值为固定长度还是可变长度
3.数据类型的值是否可以索引
4.如何比较特定数据类型的值

数字:
TINYINT 非常小的整数
SMALLINT 小的整数
MEDIUMINT 中等整数
INT 标准整数
BIGINT 大整数
DECIMAL 定点数
FLOAT 单精度浮点数
DOUBLE 双精度浮点数
BIT 一位

布尔:
没有内置的布尔数据类型,使用最小的整数类型TINYINT

字符串:
可以保存从纯文本到二进制数据例如图像或者文件的任何内容。
CHAR 固定长度的非二进制字符串
VARCHAR 可变长度的非二进制字符串

TINYTEXT 很小的非二进制字符串
TEXT 小的非二进制字符串
MEDIUMTEXT 中等非二进制字符串
LONGTEXT 大型非二进制字符串

BINARY 定长的二进制字符串
VARBINARY 可变长度的二进制字符串

TINYBLOB 很小的BLOB(二进制大对象)
BLOB 小BLOB
MEDIUMBLOB 中等BLOB
LONGBLOB 大型BLOB

ENUM 枚举,每个列可以分配一个枚举成员
SET 一套,每个列可以分配0或者多个SET成员

时间:
DATE CCYY-MM-DD
TIME HH:MM:SS
DATETIME CCYY-MM-DD HH:MM:SS
TIMESTAMP CCYY-MM-DD HH:MM:SS
YEAR CCYY/YY

空间:
没有用到过,待定

JSON数据类型: