-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
267 lines (267 loc) · 123 KB
/
search.xml
File metadata and controls
267 lines (267 loc) · 123 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title><![CDATA[循环(二)]]></title>
<url>%2F2020%2F07%2F15%2F%E5%BE%AA%E7%8E%AF%EF%BC%88%E4%BA%8C%EF%BC%89%2F</url>
<content type="text"></content>
</entry>
<entry>
<title><![CDATA[开启ssh服务]]></title>
<url>%2F2020%2F07%2F11%2F%E5%BC%80%E5%90%AFssh%E6%9C%8D%E5%8A%A1%2F</url>
<content type="text"><![CDATA[centos开启ssh服务 安装 openssh-server yum install openssh-server 修改sshd服务配置文件 sshd_config vi /etc/ssh/sshd_config Port 22前面的 #号 去除 #号 去除开启允许远程登录 #号 去除使用用户名密码来作为连接验证 保存文件,退出 开启 sshd 服务 service sshd start]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>服务器</tag>
</tags>
</entry>
<entry>
<title><![CDATA[第四章 for循环(一)]]></title>
<url>%2F2020%2F06%2F23%2F%E5%BE%AA%E7%8E%AF%EF%BC%88%E4%B8%80%EF%BC%89%2F</url>
<content type="text"><![CDATA[循环 重复执行一个语句块,直到满足某个条件为止,这称为循环 循环的工作过程 递增和递减运算符 递增运算符: ++ 和递减运算符: -- 会将储存在整数变量中的值递增或递减 1 假设定义一个整数变量number,他的当前值为6,使用以下语句个它加1. ++number; number=number+1; number+=1; ++number; //这些变量都是给number加1,最后一种形式最简洁 执行完这个语句,number的值为7,同样可以用--number减一 --number; number=number-1; number-=1; --number; //这些变量都是给number减1,最后一种形式最简洁 for循环 假定要显示(1~10)之间的数字,不用编写十条printf语句,使用for语句如下: for(int count=1; count<=10; ++count) { printf("%d",count); } 解剖: int count=1; 声明count,初始为1 count<=10; 在每个循环开始时计算。如果结果为true,循环就继续,否则循环就停止 ++count 在每次循环结束时执行。他递增count,每次加1 流程图 for循环的一般语法for(starting_condition;continuation_condition;action_per_iteration) loop_statement; next_statement; starting_condition 这个位置通常设定循环控制变量的初始值,只执行一次 循环控制变量一般(但非必要)是一个计数器,用来追踪循环重复的次数 也可以在这里声明并初始化相同类型的多个变量,各个声明用逗号隔开 此时所有变量都是循环的本地变量,在循环结束后就不存在了 continuation_condition 在循环开始时开始测试,而不是在结束时测试 是一个结果为true或false的逻辑表达式,用以决定循环是否继续执行 只要这个条件为true,循环就继续 它一般检查循环控制变量的值,但任何逻辑或算术表达式都可以放在这里,只要知道自己在做什么即可 action_per_iteration 在每次循环迭代结束时执行,通常(但不一定)是递增或递减一个或多个循环控制变量 修改多个变量的表达式用逗号隔开 loop_statement 在每次循环迭代时,都会执行 一旦continuation_condition是false,循环就结束,程序继续执行next_statement 递增的递减运算符的前置和后置形式++i //把++运算符放在变量前面,这叫做前置形式 i++ //把++运算符放在变量后面,这叫做后置形式 在表达式中使用前置和后置的效果大不相同,++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。 int count=5; total=++count+6; total=12; 变量count会递增到6,在与右边的值计算,因此total的值为12,递减运算和递增完全相同 int count=5; total=6+count++; total=11 total的值为11,这是因为count的值在表达式中使用后才递加,递减运算和递增完全相同 没有参数的for循环 for循环最简洁的形式如下 for( ;;) { /*statements*/ } 循环内的break语句 在switch语句中使用过break,他的作用是为了终止代码的执行,break语句在循环体内的作用和switch一样 这是一个无限循环,如果输入的字符是n或N,才会执行break语句结束循环 #include <stdio.h> int main() { char answer =0; for( ; ;) { printf("是否要再输入一些(y/n)"); scanf("%c",&answer); if(tolower(answer)=='n') break; } } 使用for循环限制输入 可以使用for循环限制用户的输入次数,这个程序要求用户猜测该程序挑选出的幸运数字。它使用了一个for循环和许多if语句。还加进了条件运算符,提醒读者不要忘记如何使用它 #include <stdio.h> int main() { int chosen=15; //幸运数字 int guess=0; //储存猜测 int count=3; //3次机会 printf("这是个猜谜游戏"); printf("选一个1和20之间的数字,你一定能猜到"); for(;count>0;--count) { printf("你有%d次机会",count); printf("猜猜看"); scanf("%d",&guess); if(guess==chosen) { printf("恭喜你猜对了"); return 0; } else if(guess<1||guess>15999) printf("请输入一个1-20的数字"); else printf("你输入的%d是不对的,你的数字 %s ",guess,chosen>guess?"小了":"大了"); } printf("你尝试了3次都失败了幸运数字是%d",chosen); return 0; } 生成伪随机数 在C语言中,我们一般使用<stdlib.h>头文件中的 rand() 函数来生成随机数,它的用法为: int rand (void); //void 表示不需要传递参数。 rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。 #include <stdio.h> #include <stdlib.h> //使用<stdlib.h>头文件中的 rand() 函数 int main() { int chosen=0; //幸运数字 chosen=rand (); //rand来生成随机数 int guess=0; //储存猜测 int count=3; //3次机会 printf("这是个猜谜游戏"); printf("选一个1和20之间的数字,你一定能猜到"); for(;count>0;--count) { printf("你有%d次机会",count); printf("猜猜看"); scanf("%d",&guess); if(guess==chosen) { printf("恭喜你猜对了"); return 0; } else if(guess<1||guess>15999) printf("请输入一个1-20的数字"); else printf("你输入的%d是不对的,你的数字 %s ",guess,chosen>guess?"小了":"大了"); } printf("你尝试了3次都失败了幸运数字是%d",chosen); return 0; } 乍看之下,这似平并没有让猜数游戏改变多少,因为每次执行程序时,必须产生个不同的种子值。此时可以使用另一个库函数:在<time.h>头文件中声明的函数 timeo。timeo!函数会把自1970年1月1日起至今的总秒数返回为一个整数,因为时间永不停歇,所以每次执行程序时,都会得到不同的值。imeO函数需要一个参数NULL,NUL是在< stdlib.h>中定义的符号,表示不引用任何内容。NULL的用法和含义详见第7章因此,要在每次执行程序时得到不同的伪随机序列数,可以使用以下的语句: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); //使用时钟值作为起始种子 int limit=20; //伪随机值上限 int chosen=0; chosen=rand()% limit; // 0到限制-1(含) int guess=0; //储存猜测 int count=3; //3次机会 printf("这是个猜谜游戏"); printf("选一个1和20之间的数字,你一定能猜到"); for(;count>0;--count) { printf("你有%d次机会",count); printf("猜猜看"); scanf("%d",&guess); if(guess==chosen) { printf("恭喜你猜对了"); return 0; } else if(guess<1||guess>15999) printf("请输入一个1-20的数字"); else printf("你输入的%d是不对的,你的数字 %s ",guess,chosen>guess?"小了":"大了"); } printf("你尝试了3次都失败了幸运数字是%d",chosen); return 0; }]]></content>
<categories>
<category>C语言学习</category>
</categories>
<tags>
<tag>c语言</tag>
</tags>
</entry>
<entry>
<title><![CDATA[远程桌面连接提示要求的函数不受支持]]></title>
<url>%2F2020%2F05%2F28%2F%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E8%BF%9E%E6%8E%A5%E6%8F%90%E7%A4%BA%E8%A6%81%E6%B1%82%E7%9A%84%E5%87%BD%E6%95%B0%E4%B8%8D%E5%8F%97%E6%94%AF%E6%8C%81%2F</url>
<content type="text"><![CDATA[win10远程桌面出现身份验证错误 提示“出现身份验证错误。要求的函数不受支持。可能由于CredSSP 加密 Oracle 修正”。 解决方法 在桌面使用 Win + R 组合键调出 运行 窗口,并输入 regedit (注册表编辑器)后回车; 在注册表编辑器的左侧栏中依次逐层找到路径提示:如果你展开到 System 后,发现没有 CredSSP 这个项,请您执行以下两步: 在 System 上 右键 -> 新建 -> 项,将新建的项更名为 CredSSP; 在 CredSSP 上 右键 -> 新建 -> 项,将新建的项更名为 Parameters; 在 Parameters 上 右键 -> 新建 -> DWORD (32位)值,将新建的值名称改为 AllowEncryptionOracle,完成后双击该名称(若您现在已存在,直接双击即可),将弹出一个对话框: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters 复制粘贴到位置可以直接到达 右键修改,将数值数据改为 2,确定即可 win7远程桌面出现身份验证错误 解决方法 在桌面使用 Win + R 组合键调出 运行 窗口,并输gpedit.msc 打开配置项:计算机配置>管理模板>系统 凭据分配>加密Oracle修正 双击“加密Oracle修正“ 选择启用并选择易受攻击,配置保存后即可解决问题。]]></content>
</entry>
<entry>
<title><![CDATA[第三章 按位运算符(三)]]></title>
<url>%2F2020%2F05%2F20%2F%E6%8C%89%E4%BD%8D%E8%BF%90%E7%AE%97%E7%AC%A6%2F</url>
<content type="text"><![CDATA[按位运算符 按位运算符有6个如下表: 运算符 说明 & 按位与运算符 | 按位或运算符 ^ 按位异或(EOR)运算符 ~ 按位非运算符,也成为1的补位运算符 << 按位左运算符 >> 按位右运算符 这些运算符只能用与整数类型。~运算符是一元运算符,只处理一个操作数,其他的都是二元运算符 按位与运算符假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 运算符 描述 实例 & 按位与操作,按二进制位进行”与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; (A & B) 将得到 12,即为 00001100 按位或运算符假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 运算符 描述 实例 | 按位或运算符,按二进制位进行”或”运算。运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; (A | B) 将得到 61,即为 00111101 按位异或运算符假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 运算符 描述 实例 ^ 异或运算符,按二进制位进行”异或”运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0; (A ^ B) 将得到 61,即为 00110001 按位非运算符假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 运算符 描述 实例 ~ 取反运算符,按二进制位进行”取反”运算。运算规则:~1=0; ~0=1; (~A ) 将得到 -61,即为 11000011,一个有符号二进制数的补码形式。 按位左移运算符假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 运算符 描述 实例 << 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 A << 2 将得到 240,即为 11110000 按位右移运算符 运算符 描述 实例 >> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 A >> 2 将得到 15,即为 00001111 按位运算符的op=用法 所有的二元按位运算符都可以在op=形式的赋值语句中使用,用~运算符例外,他是一元运算符例如: 1hs op=rhs; 等价于 1hs=1hs op (rhs); 例如: value <<=4; 其作用是将整数变量value的内容向左移动四位。等效于: value = value << 4; 二元运算符可以这样使用。例如: value &=0xFF; 其中value是一个整数变量,就等价于: value = value& 0xFF; 其作用是使最右边的8位保持不变,其他的位置都设为0]]></content>
<categories>
<category>C语言学习</category>
</categories>
<tags>
<tag>c语言</tag>
</tags>
</entry>
<entry>
<title><![CDATA[无法创建映射网络驱动器解决方法]]></title>
<url>%2F2020%2F05%2F17%2F%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%E6%98%A0%E5%B0%84%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E5%99%A8%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%2F</url>
<content type="text"><![CDATA[前言今天搭建好网盘开启webdav服务后,在自己电脑上添加一个网络硬盘时,磁盘映射的时候,提示“无法创建映射网络驱动器:连到系统上的设备没有发挥作用” 解决方法 需要修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,把BasicAuthLevel 值改成2 使用管理员身份重启webclient服务:net stop webclient //停止 net start webclient //启动]]></content>
<categories>
<category>遇到的问题和解决方法</category>
</categories>
</entry>
<entry>
<title><![CDATA[第三章 多项选择问题(二)]]></title>
<url>%2F2020%2F03%2F28%2F%E7%AC%AC%E4%B8%89%E7%AB%A0%E5%A4%9A%E9%A1%B9%E9%80%89%E6%8B%A9%E9%97%AE%E9%A2%98%EF%BC%88%E4%BA%8C%EF%BC%89%2F</url>
<content type="text"><![CDATA[前言 在编程时,常常会遇到多项选择问题,在c语言中有两种方式处理多项选择问题,一种是采用else-if形式的if语句,这是处理多项选择最常见的方式,另一种是switch语句,它限制了某个选项的方式但是也提供了一种非常简洁且便于理解的解决方案 else-if 语句#include <stdio.h> int main(void) { int a; scanf("%d",&a); if(a==1) printf("1"); else if(a==2) printf("2"); else if(a==3) printf("3"); else if(a==4) printf("4"); else printf("5"); } 每个if表达式均可任意,只要其结果是true或false即可,如果第一个if表达式(a==1)时false,就执行下一个if,如果第二个if表达式(a==2)时false,就执行下一个if,直到找到一个结果为true的表达式为止,如果if条件都为false,就执行最后一个else switch 语句switch语句允许根据一个整数表达式的结果,从一组动作中选择一个动作,假定有一个彩票店,数字35可赢得一等奖,122可赢得二等奖,78可赢得三等奖,代码如下 #include <stdio.h> int main(void) { int zjh; //变量中奖号 scanf("%lf",&zjh); //输入中奖号 switch(zjh) //zjh不能为浮点数 //括号中表达式的值zjh,它确定执行那些语句,zjh的值与case指定的语句匹配,就执行case后面的语句 { case 35: printf("你获得了一等奖"); break; //break的作用是跳过大括号中的其他语句 case 122: printf("你获得了二等奖"); break; case 78: printf("你获得了三等奖"); break; default: //如果都不对应任何case的值,就执行default后面的语句 printf("抱歉!没有中奖"); break; } } switch语句流程图 switch的一般形式如下 switch(integer_expression) { case constant_expression_1: statements_1; break; ···· case constant_expression_n: statements_n; break; default: statements; break; } 还可以使用char值的表达式作为switch的控制表达式:如下代码区分元音字母和辅音字母 #include <stdio.h> int main(void) { char ch; printf("请输入字母"); scanf("%c",&ch); switch(ch) { case 'a':case'e':case'i':case'o':case'u': printf("你输入的是元音字母"); break; case'b':case'c':case'd':case'f':case'j':case'k':case 'l': case'm':case'n':case'p':case'q':case'r':case 's':case't': case'v':case'w':case'x':case'y':case'z': printf("你输入的是辅音字母"); break; default: printf("输入有误"); break; } } 使用<ctype.h>头文件声明isalpha()函数,会大大缩减代码。如果作为参数传入的字符是字母,isalpha()函数就会返回一个非零整数(true),否则返回(false). #include <stdio.h> #include <ctype.h> int main() { char ch; printf("请输入字母"); scanf("%c",&ch); if(!isalpha(ch)) //如果不是大小写字母ch的值就是true,就执行printf, printf("输入有误"); else { switch(tolower(ch)) //(tolower(ch)将ch的值转化为小写 { case'a':case'e':case'i':case'o':case'u': printf("你输入的是元音字母"); break; default: printf("你输入的是辅音字母"); break; } } } < ctype.h > 头文件好可以声明其他函数: 函数 测试内容 islower() 小写字母 isupper() 大写字母 isalnum() 大写或小写字母,或十进制数字 iscntrl() 控制字符 isprint() 可打印字符包括括号 isgraph() 可打印字符不包括括号 isdigit() 十进制数字0~9 isxdigit() 十六进制数字(0~9,A~F,a~f) isblank() 标准空白字符(空格,\t) isspac() 空位字符(空格,\n,\t,\v,\r,\f) ispunct() isspace()和isalnum()返回false的可打印字符 isalpha() 大写或小写字母 tolower() 转换为小写形式 toupper() 转换为大写形式 goto语句 goto语句是一个比较生硬的指令,它可以无条件的改变程序的顺序,goto语句会直接跳转到指定的位置,无需检查任何值或者要求用户考虑这是否是他希望执行的操作 goto 语句的语法: goto label; ··· ··· label: statement; 在这里,label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。 #include <stdio.h> int main() { printf("1"); printf("2"); goto there; //跳转到下一个 there; printf("3"); printf("4"); there: //跳到这里开始执行 printf("5"); printf("6"); } 输出结果 1256 goto语句执行流程图]]></content>
<categories>
<category>C语言学习</category>
</categories>
<tags>
<tag>c语言</tag>
</tags>
</entry>
<entry>
<title><![CDATA[第三章 判断过程(一)]]></title>
<url>%2F2020%2F03%2F16%2F%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD%EF%BC%88%E4%B8%80%EF%BC%89%2F</url>
<content type="text"><![CDATA[C语言中的判断过程 在我们现实生活中,我们总是做出判断例如:如果外面下雨,我就坐车去学校。如果外面不下雨,我就骑自行车去学校 算术比较 c中比较两个值有6个关系运算符,如表: 运算符 比较 < 左操作数小于右操作数 <= 左操作数小于等于右操作数 == 左操作数等于右操作数 != 左操作数不等于右操作数 > 左操作数大于右操作数 >= 左操作数大于等于右操作数 基本的if语句 有了比较关系运算符后,就需要用一个语句来做判断最简单的语句就是if语句。例如比较自己的体重和他人的体重,代码如下: #include <stdio.h> int main(void) { int my_weight=170; //定义我的身高为170 int you_weight=175;//定义你的身高为175 if(you_weight>my_weight) //如果你的身高大于我的身高 printf("你比我高"); //printf就会执行 你比我高 if(you_weight<my_weight) //如果你的身高小于我的身高 printf("我比你高"); //printf就会执行我比你高 if(you_weight==my_weight) //如果你的身高小于我的身 printf("我们一样高"); //printf就会执行你和我意昂高 } 结果为:你比我高 这三个if语句,比较表达式位于if关键字后面的括号里,如果比较结果为true,就执行if后面的语句,如果表达式为false,就跳过if后面的语句 if语句的一般形式或语法如下: if(expression) statement1; Next_statement; 在第一行的末尾没有分号,是因为if关键字和其后的一行组合在一起如下: if(expression) statement1; Next_statement; 但为了简洁,一般把statement1放在新的一行 if 语句的执行过程如图 把一个数值转换为bool类型时,会得到一个布尔结果 if语句的控制表达式要生成一个布尔结果 所以编译器要把if表达式的数值转换为bool类型。 有时在程序中会使用它测试计算式的非零结果 如下面的语句:if(count) printf("count的值不为零"); 只有count非零,printf才会执行,如果count的值为零,表示if表达式为false,任何非零的count值都会使表达式的结果为true,如下代码: #include <stdio.h> int main(void) { int a; printf("请输入一个数字"); scanf("%d",&a); if(a) printf("a的值不为零"); } 如果输入2 结果为:a的值不为零 如果输入0 结果为: 当a的值为零,表示if表达式为false,printf不会执行 扩展if语句:if-else可以扩展if语句提供更多的灵活性例如: 如果今天的雨比昨天大 我就带上雨伞 否则 我就穿上皮夹克 然后去学校 这就是if-else提供的判断方式.if-else语句的语法如下: if(experssion) statement1; else statement2; Next_statement; 如果expression的值是true,就执行statement1,之后执行Next_statement。 如果expression的值是false,就执行statement2,之后执行Next_statement。 执行过程如图: 在if语句中使用代码块 可以把几个语句放在一个{}中,在if表达式为true时,提供多个执行的语句例如: 如果天气晴朗 我就去公园,吃野餐,然后回家 否则 我就留在家中,看足球赛,喝啤酒 if语句的语法如下: if(expression) { statementA1; statementA2; } else { statementB1; statementB2; } Next_statement; 如果expression等于true,就执行if后面括号中所有的语句 如果expression等于false,就执行else后面括号中所有的语句 在两种情况下程序都执行 Next_statement 嵌套的if语句 if语句也可以包含if语句。例如 如果天气很好 我就到院子里去 如果天气很冷 我就坐在太阳下 否则 我就坐下树荫下 否则 我就呆在屋内 然后喝一些柠檬水 if语句的语法如下: if(expression1) { statementA; if(expression2) statementB; else statementC; } else statementD; statementE; 第二个if语句只有在第一个if语句为true时才执行,其逻辑如图 逻辑与算符 逻辑与运算符&& (逻辑与)运算符&&是一个二元运算符,因为它合并两个逻辑表达式,即两个值为true或false的表达式,例如: if(age>12 && age<20) printf("你正式成为青少年"); && (逻辑与) 当逻辑与左边为false(假),则不再进行逻辑与右边的判断,结果为false(假) 当逻辑与左边为true(真)则进行右边判断,右边为false(假),结果为false(假) 当逻辑与左边为true(真)则进行右边判断,右边也为true(真),则结果为true(真) 逻辑或运算符|| (逻辑或)运算符||用于两个或多个条件为true的情行。如果运算符||的一个或两个操作数是true,其结果就是true.只有两个操作数都是false,结果才是false.下面是使用这个运算符的例子: #include <stdio.h> int main() { int a=6; if(a>7 || a>9 || a==7 || a==5 || a==6) printf("printf语句执行了"); } 结果为:printf语句执行了 ||(逻辑或) 当逻辑或左边为false(假),继续逻辑或右边的判断,如果也为false(假),结果为false(假) 当逻辑或左边为false(假),继续逻辑或右边的判断,如果为true(真),结果为true(真) 当逻辑或左边为true(真),则不再进行逻辑或右边的判断,结果为true(真) 逻辑非运算符! 逻辑非运算符用 “!”表示,他是一元运算符;因为他只有一个操作数。逻辑非运算符转逻辑表达式的值,使用true和false,假设有两个变量a和b,其值分别是5和2,则表达式a>b是true,如果使用逻辑非运算符,表达式!(a>b)就是false,尽量避免使用这个运算符,它会使代码难以理解。 条件运算符 条件运算符根据一个逻辑表达式等于true和false。执行两个表达式中的一个。有时也称为三元运算符,因为他是需要3个操作数的运算符例如: 条件?表达式1:表达式2 x=y>7?25:50; 如果y>7,x就设置为25,否则x就设置为50,这是生成这一结果的一种快捷方式: if(y>7) x=25; else x=50; 如下代码 #include <stdio.h> int main(void) { int a,b,max; printf("请输入两个数字"); scanf("%d",&max); max=a>b?a:b;//当a>b为true,max的值为a。当为false,max的值为b. printf("max=%d",max); return 0; } 运算符的优先级 优先级 运算符 结合律 1 后缀运算符:[] () · -> ++ –(类型名称){列表} 从左到右 2 一元运算符:++ – ! ~ + - * & sizeof_Alignof 从右到左 3 类型转换运算符:(类型名称) 从右到左 4 乘除法运算符:* / % 从左到右 5 加减法运算符:+ - 从左到右 6 移位运算符:<< >> 从左到右 7 关系运算符:<<= >>= 从左到右 8 相等运算符:== != 从左到右 9 位运算符 AND:& 从左到右 10 位运算符 XOR:^ 从左到右 11 位运算符 OR: 从左到右 12 逻辑运算符 AND:&& 从左到右 13 逻辑运算符 OR: 从左到右 14 条件运算符:?: 从右到左 15 赋值运算符:= += -= * = /= %= &= ^= ❘= 从右到左 16 逗号运算符:, 从左到右]]></content>
<categories>
<category>C语言学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[创建第一个C程序]]></title>
<url>%2F2019%2F12%2F26%2F%E5%88%9B%E5%BB%BA%E7%AC%AC%E4%B8%80%E4%B8%AAC%E7%A8%8B%E5%BA%8F%2F</url>
<content type="text"><![CDATA[C程序示例C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 #include <stdio.h> int main(void) { printf("Hello world ! \n"); return 0; } 编译执行后会输出 Hello World! 接下来我们讲解一下上面这段程序: 程序的第一行 #include <stdio.h> 严格来说它不是可执行程序的一部分,但它很重要,程序没有它是不执行的。符号#表示这是一个预处理命令,告诉编译器在执行代码之前先做一些操作。预处理指令相当多,一般放在源文件的开头。头文件是包含函数声明定义的文件;你平时写C语言时,用到的printf() 和scanf()都是系统定义好的,而这些函数的定义就包含在stdio.h这个文件中! 第二行int main(void) 注意这行代码的末尾没有分号, int表明main函数要返回一个整数作为返回值, 执行完main()函数后的整数值表示返回给操作系统的一个代码,他表示程序的状态。 printf 产生格式化输出的函数(定义在 stdio.h 中),其向终端显示器、控制台等)输出字符。 return 0; 这个return语句结束main()函数执行,把0返回给操作系统 C基本语法C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌: printf(“Hello, World! \n”); 这五个令牌分别是: printf ( "Hello, World! \n" ) ; 分号 ;在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束,必须用英文的符号。它表明一个逻辑实体的结束。例如,下面是两个不同的语句: printf("Hello, World! \n"); return 0; 注释C 语言有两种注释方式:以 // 开始的单行注释,这种注释可以单独占一行。 //单行注释 / / 这种格式的注释可以单行或多行。 / 单行注释 / / 多行注释 多行注释 多行注释 / 关键字 在C语言中,关键字是有特殊意义的字,所以在程序中不能将关键字用于其它目的。关键字也称保留字,在前面例子中,int void return都是关键字 关键字 说明 auto 声明自动变量 break 跳出当前循环 case 开关语句分支 char 声明字符型变量或函数返回值类型 const 声明只读变量 continue 结束当前循环,开始下一轮循环 default 开关语句中的”其它”分支 do 循环语句的循环体 double 声明双精度浮点型变量或函数返回值类型 else 条件语句否定分支(与 if 连用) enum 声明枚举类型 extern 声明变量或函数是在其它文件或本文件的其他位置定义 float 声明浮点型变量或函数返回值类型 for 一种循环语句 goto 无条件跳转语句 if 条件语句 int 声明整型变量或函数 long 声明长整型变量或函数返回值类型 register 声明寄存器变量 return 子程序返回语句(可以带参数,也可不带参数) short 声明短整型变量或函数 signed 声明有符号类型变量或函数 sizeof 计算数据类型或变量长度(即所占字节数) static 声明静态变量 struct 声明结构体类型 switch 用于开关语句 typedef 用以给数据类型取别名 unsigned 声明无符号类型变量或函数 union 声明共用体类型 void 声明函数无返回值或无参数,声明无类型指针 volatile 说明变量在程序执行中可被隐含地改变 while 循环语句的循环条件 函数体main()函数的一般结构如图 函数体是在函数名称后面位于起始及结束的两大括号之间的代码,它包含了函数功能的所有语句。]]></content>
<categories>
<category>C语言学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[校园网的天翼网关获取超级用户]]></title>
<url>%2F2019%2F10%2F26%2F%E6%A0%A1%E5%9B%AD%E7%BD%91%E7%9A%84%E5%A4%A9%E7%BF%BC%E7%BD%91%E5%85%B3%E8%8E%B7%E5%8F%96%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%2F</url>
<content type="text"><![CDATA[前言刚开学不久,上一届学生应该是校园网到期了,把电信的光猫路由器扔了,正好上楼梯在垃圾桶旁,我看到就捡走了,拿回去还可以做路由器有,拿回去才发现路由器的后台功能也就能改一个wifi的名字而已,一些路由器的基本功能都没有,后来我打算直接用ttl线刷固件,在网上搜他的型号时发现他还有一个超级用户,这个用户是为了安装宽带时用的,根据自己的经验和一些线索,找到了超级用户的用户名和密码,从而达到了自己想用的功能 破解步骤 根据设备型号HG221GS,上网查找资料,参考网上的方法,输入:http://192.168.1.1:8080/cgi-bin/baseinfoSet.cgi 打开后找到关键信息 "baseinfoSet_TELECOMACCOUNT":"telecomadmin", "baseinfoSet_TELECOMPASSWORD":"114&73&55&110&69&37&53&113&", "baseinfoSet_USERACCOUNT":"useradmin", "baseinfoSet_USERPASSWORD":"106&110&117&122&50&", 通过观察9CD2H与57&71&72&50&76&的对应关系(ASCII码),进行解码,如下所示: code='114&73&55&110&69&37&53&113&'[:-1] # "baseinfoSet_TELECOMPASSWORD":"114&73&55&110&69&37&53&113&" list=map(int,code.split('&')) result=[] for i in list: if i > 57: i-=4 result.append(chr(i)) print (''.join(result)) # output password:nE7jA%5m 找个python的线上编辑器,运行上述代码,得到默认密码nE7jA%5m 输入超级管理员账号:telecomadmin 密码: nE7jA%5m 登陆成功]]></content>
<categories>
<category>搞机笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[中兴机顶盒B860AV1.1破解]]></title>
<url>%2F2019%2F08%2F24%2F%E4%B8%AD%E5%85%B4%E6%9C%BA%E9%A1%B6%E7%9B%92B860AV1-1%E7%A0%B4%E8%A7%A3%2F</url>
<content type="text"><![CDATA[前言这个机顶盒是联通运营商赠的,所以里面有很多限制比如必须使用这个机器的宽带账号,要不然连不上网,30秒弹出一次认证界面,不可以安装第三方软件,一开始我把软件放到了SD卡准备插卡安装时,提示我禁止安装第三方软件。后来我就去百度了一下,发现有破解教程 破解教程找到成功的有两个破解教程 通过adb破解工具进行破解 通过usb转tttl线插到机顶盒板子上的开发商的接口上 我先试了第一种方法,并没有成功,可能是开发商修补了漏洞 只能使用第二种方法了,在淘宝上买了USBTOTTL(8块大洋) 准备 购买TTL线后,向店家要一个相应的驱动软件 U盘一个,用来储存当贝市场和当贝桌面,将这两个软件下载拷贝至U盘中,并将文件名改为“dangbei1”和“dangbei2”当贝市场下载地址:http://app.znds.com/update/dangbeimarket.apk 当贝桌面下载地址:http://www.dangbei.com/zhuomian/ 教程 首先将机顶盒机器后盖打开,需要用螺丝刀等工具撬开后拧下螺丝取出主板; 准备开始用USB转TTL线接线, 将TTL线的GND接2号口,RX线接5号口,TX线接6号口注意:如果稍后不能跑码的话,就将5、6接口上的线调换位置,如果还是无法跑码,就将接线顺序整体调换,意思就是反转过来重新接!! 将USB接口插到电脑上后,安装店家给你的驱动软件,接着需要调试一些参数,右键我的电脑——属性——设备管理器——端口——COM”X”(X就是最后位数字)——属性——端口设置——改为“115200”——确定; 打开之前下载好的“PUTTY”按图中的顺序设置即可,COM后面的数字按照自己电脑的端口号输入即可,在这里记得把U盘插到机顶盒的USB接口上; 接着将盒子的盒子电源接通,通电开始跑码,如果没有跑码,注意:就将5、6接口上的线调换位置,如果还是无法跑码,就将接线顺序整体调换,意思就是整体反转过来重新接,线的顺序也要按照上述重新排序;** 成功跑码后开始输入代码,直接复制下述代码到“PUTTY”中,每输入一行按一下回车;start adbd 注释:打开adb** 查看U盘路径df 红线标出的就是U盘路径注:红线标出的U盘路径可能与你输入df后的不相符,要以当前设备的路径为准,至于如何查看,可以从U盘大小看出来,比如上图中sda1后面的数字,U盘是3.8G。 进入u盘 ,复制当贝市场和当贝桌面到盒子应用中cp dangbei1.apk /data/app cp dangbei2.apk /data/app 启动当贝桌面am start com.dangbei.tvlauncher ok,至此当贝市场和当贝桌面就安装成功了]]></content>
<categories>
<category>搞机笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[基于Docker的蜜罐平台搭建]]></title>
<url>%2F2019%2F07%2F27%2F%E5%BC%80%E6%BA%90%E8%9C%9C%E7%BD%90%E6%90%AD%E5%BB%BA%E5%92%8C%E4%BD%BF%E7%94%A8%2F</url>
<content type="text"><![CDATA[Hey, password is required here. 4693f05b63094ffad787600189a897a2c1245674d856ff465f0b6fff3cecd6382348bb34db275296532865c5d5dcd3b6b7c51775742ed042e29670c13bb921f89d0d3874dc7656454c3db95c6000dfc432042c6252cb9514a9c242e4c8a24016c56ded3180bca5bad2ad2f55e2ba676e9aed195d7b7bfc252d2919db5193ca665fa967751413b03d2cb3cea04a2822c2438f35b9289b7f7f402f781c6ed38615cff5d4564aea066308ccb022457a9aabdd307e4ac13e8725adf03dc6ac30dffdb2281637651b4d2736fe2648f1287f7725ea1d0e56bbaac72dc8216079e656e645deed051f404a6ef8cd3aee8573266cc78df9d55f5a7404ca59791f6e0d2a3975388a491ebf2f1a1bfcb00c87ad364f8e94e7bec29f5801eae19c5ee4c8e1adfa6edc8ae5d1753426c0fcdff16b92f782abea8020ec613ad1be9b350a7c7845a81b6cf77b13dc5925a059482b8676b335a9d44f5c0779eaab92e7c4261eb1bf4ab267428cfde12e9f8698f3e0a1eed2cccfdf033399367c8a83d16424641cebb389dc3cc6a12d7cf99c12897e4de84a52c4437e8337cc079d50f086cf87d1b3418b3364684d56e6f1a6e99feb69678f6e6af23edb920d6f7cb2c5f928634a999fb61c87b4143c7d3c6c6605a79c57280e3bb1df82b55ca5da4c9621b9e2b336a6e003c05f27c41cf25f47363c6eeec133d9df4ec3558924f04034f17c45c11798f2c87266ad26b775aebf1109ffe7ae11c6667dbc69231bac42076c29dfdb1767823fb1620dbccbd3bb413efdfb532631640492429065c153dade2fdc0775c003a7ed2049a0db2a918a3e74bc3df13c7e6d3caa498e3629d155617ddd26f46ee168b5e20a0b180c45738c64c197cf12bd47ea394017b36e1d9f2d2f5b3074f5251c6c668e9e7ac2e2415940d2b6f393fdcbd87bff120a78c1fadebf58c0d032e9ec81880f307bf4479ba13ec623507b18684a8126b71211eda393b41570e1d204d921c5a615a29f83e071a6b1be31f35268de291dd1b8c62d053a485e371f254b75f0edeb64c14db6581bfc5249f0a7e376c86cf99e36fdd12617ade037d630360ea7d7cba2761a1dc2e66b305d4363431ea6d8b5029aa573a140f09697ecbb76dc6480ee9f6b793e165622ee704156ed3f681d13e93300f52124ded248b860744f402cedf756aa23fec3e95d063420c869aa6021823759f2986f4c4f1971ac31cfa5ee236144964e1cd31621c48b7b1ef82167fcf48ae730cd6ce6f85fe26f0ed537344cab8d6bdc9f6c77190d528e3a923d9571a1b4d5bca86524d7f2ee7a8a226d9210adbd72996428082f6e511da6258d8bc41c1c3bcaf8d633c8e13ef0efb0698b6d5b32d70c390b22027d3a25a15fee640c1720f1b98782662955c7bad2bee1d32ce67c428dd363df1eedc85ab15e4a151924f4908017918979157783c44ba4f1a42811e952b6f24bb10d738454e2e182b181b2d5acac5f59acdc362ba881e5206d057058967003739ea1ef9d9581a026222f3abf6c6cc3b59bccdc3cece79ef8dd71582e017869f4976c1e9c68bd637455e450c4ab712ba405662e682b0d03f6034d37afa4f4af70a788f173c89d8c1680225d180e2803a20acc85053b1b3630625e462ebca527f459e0db70b539cafcb06745906a5f19d193faaad88d231d44facad52acd323356509ef7d18a4c959add3422c95c0ac5e72a00cb4637635c932e70ff308ccd1f786b2585f51888e3653059994af98c4b70003c20e0aa11f2185097565dc06247abdf93f355f0bce9e843986f379d361edd020dbc7108bda65064439780e6fbbc562040ff65fb053e65cf6a925bac9b5d9cdb8d2d27662fa473f1c404e3cfb8bf5f1bbfa676e026e0dc81550d47c67bd2bd7edd7ca9f97f0b288fed4fbd0c11ad7216f66d461bf71661b974be0681ad3d2b3733a00c81067209977490d596b39cd34bf10a9e65b2ae9b21075c707f63532ada8f6e35cdb4aee630318fd085134bf7df84a6451877674da6a9a56dffd2025591d8310d1708d3c6a13c2f82b0059a70c04e3dba80085ece0a6ea5437cf258e10ccf2f55d7ab581d1f4aaf996924ccf615f7a359b9f56cb561ca9eb66d7e640ae9eb3eb9c0cfcdf61b43f713ffa6c48ad8bae5f749715705fdc6495d2d3bf3324a0a3ac826db7769cb59ab543b8227b31503333cbac0412ec3fc6820c4f93ce6ac4c6b7747e4b2ec785abd8942a4c3505e8dc3dd7cfc50261e6fc39ba43914fcefb0216f7334623e3e93f849e8b75d53951306785dfd2e723a502889862f44748c05c052987a0f57c31e81709f2b034834e5a9fbe3961a8db8da92641eb54280d512c698ab6e89cf35b27bb4c10ad4590cca80af192fb0e352b5687d9222d073f17bc0c65432b5941b78b3eac51c1db60a761fbf2917843951ece862ec20988ced8978c57f6927659520277a2a6a0a0351af9a73f95a453b01cdfd891dacb8e8ab5f90fc418b1a34aa1d91fd57721ad471a9ef7d22a97e99744756a6aaa6df319c164f735b653211fac4cbbe80987abaea33ee03960a837c0028894506b48a8d8c26e5f232a71c82c09ab031d1ffda616699280fe7c129275aa04eb1c7d7df673ecb89eec6fed6dba4a4ec146bc2b9d1ed47298d65d984c0e357d1417bf6247228ce63736903fe9becb1006fc9376ed7af4bf1c7743a13de09b4c4e78137909453f5f2bd7f23a6d121353647c8bab36efa58fc85ccff838cce1520213a252f413d8d1c2e8104736cfae2f889c99a0b1a12260b5396d96bc6f06d6aa95794b7db7217470d3b66bcd009953558b22670805f970f5b5cde4edd318af86f6300564931ffc69564188639bed25267994098d4e46a7ab3b9ad7f2661c69ea49e0ece261af08cb9784b71452efd804924a92ad755501629fb045fe85398f60a5f82b5d00139bffa6fec47fd550cbd7883561a7b3b7dc83bcfd2cdf86b4a237d7688a960e361d17b6beea02a8d091c1ecc12cf2445839f6e20aca0365bdf898eb841b77fd1e22c2580ef483288ea7500afce97bbf6dcd4abbf34005324aeb1886394fa1afe93a63e0f1d83b4410e3a9aadbfb62919544e0c037e48d6389cf7c4644ae7f0446ae73e136752190d28cf65c56174414a3527c280e02fecc26ddeb89bd6f0b5a2ff604d590a55ed23a4174c07e21fd8453615ae386a88c183baf0d3cf2b30a426b2e89c9df72aa5ae26169102be72fea3e6cf084dcc4113511c64cdc85afd48bacb1bab66f87d950036807f58d262d176f67d1be1b5840c42a596c13b18f83e1f31baaac92a2f5eeb3d270a1cba2cf6f1e91820f7997374b818edd4628bbb1951c39eeafd667227565a32c8d390c40b31aefef6da638e09b8ccc05c87d0bf80dd96dd7309ee5bd3de2230bcb7ce47b136d2d8ec0ad0cc52130925892f44e967d891a4b2d83f732de2f3a67c9ffad97623c04ed7dfb4fdf02605a0622bb4e2d06111b731b22477f1013ec6e04c0b274691d042287d7b17aeb4ebebd397dfa33c833494912782bf41a4891542b7a82f5cf9a75487ee97cf812d554653092b903a1ffd431c9a90ad1e896212c73bdbe91f59a39c3b40833f7cc2eec91ffe9898736e450ad75908fa2a9f62f0b3afb2188746a57db3321fe793434b771632cc3ddaafa47b4749e4b01182c2b175af64022e82c6778acc62092a5ba851b897ea78c94934a610febd400ec4a5510e2b79098b3a38a62002a539e615e90359169993e66f02c9e7c5ee997ab3544150ce6e73c04f80b84e8c52f33b380fe3d16abde393c7e170df40e7616ccb538d8e8edd657dccfa7421c037406cd99dc26e62c029712acc588e426a5b4cd91383ae3ea6f01c291e27bb0619fb8d9a8fad44d88a2202cb8cfbbdac51460559faac22168173beef67919b81fdd7d05468c8f4e82c21907fa221e1a86ed9b77b0116ebe3b07304fa16a5b2b5992945fa4f64ec57fdf4ebae5fae0e5e36e4bbb9b5b6c390b4e9e673830516e3e0875a0b4d5e61a6e023a6d76fe06a8f41e7e27cdf8487256f2fc8b43b8fa9b2b80f4abd440b440bb8f96eaca2c9198e6d926a01cdb668d6cd02bc93631f7f1745a21c1e4c0b60af8f1425b871faacea991f40b8147672f6bc03b91553edf0e4094d166f44c1fce3602540591759418455906ffd12e3707fc7766c70208dce35f2b62245fa9cdddd4542762e0f908b39b585290117b1f33c817e2a68b485eae5de93921d18b1f670acd7221bdac0061a7818a8dbfa891453fc856cfffc3a7cc84b5d7b177e59d0610035596417cb6ca0434ef52dadd1946eceb7388091dd3e5a01079cb1055b76331ab65d2a96f2eda46a1c050c6d263c25de304db213e8c17d597a0770daeee5c04e49690c301d4962a7c7aba912a04881443ab1c2bbc2113a40bb91be9fa65aa333174e7a5791e060ff341072ffe0ad31b39992f348757a239af12a27497c7648446770e625d7f01740cef8f217fa13436da7cb4f1c754ff5d50f5b626b8e6f2dc8fddccf0dc681e1c838292f9d7dbde1ad1ef6ce0df41eac15bfa56e0df1e3b4410cf081c13709ca143584f65abfa5b66303893e083ae1760f446dc91ca43fe1a61a60ab36b811a49cf2d6f2c61fcffe26c63c8081b961b366ad20c85393b08e47c7895c2fa1270ab30a4953fcc51870fef94af2470b4968056a936072a5486171ace4fa0764ed081a8b1bdf6c10e7a5462e2bf0b48445090d81cb619d4986cb16f4b4fdc65a57c42a84a6a48e892febd48dc48c5cae3086e5c1c970001a81a306c835da982348245407a000e0b51e77e2d78ea847e5ac4c17f96abad470cec4f8c844b08efa8d9a43fe5b62ad209c21c5940188708bf987ccf86e6ac388061e9bbe320c26f8602de1d0dbd21d683989b4aa215934a2141d839232fd1d53cc68527935d1b77575b38e66a5fc03e7b930ce53bb9779d601f27599330ed612a5aa43f35d903bac718893175da617b1782b35705292b97238dd9b9cbe192ca24abb8151541092f45a0cd85a80cd3bb4d53dffd3db52025e0c4abeed21fc08382d627cf12bd1340949e1754abf6ad68972d9235903259e536e4fc9589666758a5d416eda6f0d565426c9f40b061c25ca2823f0ed76208a72187379bd096d13509c1b95e80ce889ec3734195581a01c61057d98a480ca8800d3edd8572ede0b8b2a0730587a61d65d719c4322f2f6669842c8dcfea6f120ed3cbfd615af3424b1779eaedee2cc18c5c92fc3b649da75b6d16a23d4a8864d9c62a840f8d89e38228c8724d3fc4c65187a0a576da4fca5b7254d17623729a7aef51dd984fb949621b17e29caf624c57fa052d097836e632e67ce2e9bdd63f2dc2dcb1f4881a5f2c84fd44bf509bbb5880592d2c1539ce1cfaef7f0f47441eb322bfc96eb439acf3e7c27fb9ca809fa36c90cbd5383d0d7e92204d6ad8c9fe3643f6947c8418b4acbd27253897a5f2d3870614ac8d0457b072328b0c6fcd6ca983287bbc70f881329e9aa63d42f34f44f6133c0472f0a87ea5d9079021f53140be8a450a989c93883b73571e830fea6e928cb169f5700ef5f9a22103c73644afdfcf82f605b87cb8a0b15e80886eabaab6029ffd936b694e605a2b7ac9d66408c7a7400096e4dad1b04f88c8e0e1c93fadf232e1b5c79196f9b16e59ab6a14ad5369ba98c9e31ba75d939d347f60b216522dd35ca54bdde4e0c74fe607f55e57c2c6b0d4a27fb691e2b9076969af1b8f7928c26c216784695999d5ee900e72eff3c06961abdbef7d8c223ae2afb90c5536341c81dd2a5fb8f239d874ab8db35d7be25d35892c73ad92dd31173890bd70ce6f9b16ae222e9a4cc653a14217122030bfe751973a7976e2f8619b763fee3866349a80962c461fecffd981d7504cbab085a5ecd616c4299884343885e3c11aa32bc74ad0bcf46c4007f0b320536e581e16375a9c7c6e175ab9afb3cc9939540510937761f8caf74c29cb03e8a53e6c26b76772e392c33db61207c408d9af8f24b65d2b54ffbd7348aa2fafc43145ba40dba9c2c24a044239bfb4d2a650901447312f1d5e6bdde67cec0a133b7cf133ec892996ea6b43d7457b3727905655018b497a26bb1d01307666ab0e9aeb1a268f24b8df612cd21b3d783df5cdb772fff75c4aec6af81f5e8d91bf86339739648a3abece28aa9544a606c042c2ebe7af58b861ce72664a8c3352702ef43c87a6627fbe73cc1622c3017aac2d3bd5b68ea127f571ce630046528083eb3993745eb39b9ba43bf012d58421e24295ed4d4025957dfc7fd60570bad16114f0348ee02017105fd6880131873185d983e2978449db063f445ad8c7066959f3ad383c4a1fb674ccaec40483ab10e334e16c0953c0bdc7b69dbfc83495d101267099df14c55950c9448740f7e96965f267cf37a387520ceba8109397cb4cf56f6d1e73d9639ff04b3393d3c1df3df2bab9d5c570c622b0b974de1cde313465c82be4c7177fe1f6643716a5e22bc07c5da05aa4d4b9493010ca5cedd5980cce2004979efce54819580fda2f8d77186b83666a94acdbf44055ea9631a82d66bd3a4b9db4eff8e70392e0e105e79316686f3bbc6d03250fae661e15becd238b0910481e08a0c191678cbabc36fd333250a72e63f4299f53cad21834f3008912717d6087011e98e305ddf25a0fb37ca803ad06bf9d6edb2cbac24820f37cc2f80a017a4af0c8f04d824e13a4761262aedd6ae9b3a82a493bc8c7d3788b3c863a5f6e9185396b914e448926d80d2ab4c4153b92d0062a7d0e0c7dd91aa88e9f1809d4eb6b13a0b516b2164cff5bbc40f7979a30384d0cafe597acc9bfa7f78716ba2d27eeb57e29d681488f5d5450edc102b6a801ff3ec775f2a1a6dae576dc6404178b64d99fbd8da00f328a1719c521eef10d9a800f14002395766cc25170f373159d43d2743613a493c354db75bb35d299aa1254624c16b48b362bbccd539d21fd96754692006dbb5fc22bbbd8c54aca1a475b9f6bd347ad50499ee5f35db791251e95015339c9fffebd87faf36098eca246d36c19352862c2d2f8305863a7a45785ee86cf32d72b8d94ae108b20a039edeb760fa8338b490752b14842d4df6406e4f4ac187ec6c8e782a984280fdaec3cc57cea8e06dcd41f4d9f86453cff160f96436f4d487f09ff3a8e5ac7ed0be28cb59370303000b3ac216372a84f242264c49e6ca40121baf15c26634c0bcd43e811a552ad121c6bac81bf60e3f8c1cf957c4745cde3d7da09705514493a8c3c8ad23966a2e59cb737079a9b61f161a53c42ecda590cbb5400b89af7bf6b97414ccf8ced858c97e5f2ffa37c1fc60c868ea53e55c871f58f3b823a548774d4932665cf1b599d0a25dc4b2721d402bb8f218375ddc7329afcef8c5b26ba8ccf58bd839efd61db3d4cb5e25075b7297e53422ceb1b62c3a19eccdf2e147f22aa38d82c9b0d4fa0f4747d886529c27434a602b124728367896ee2a780fd82dc405bcaa37122d954fb9fcac2682e79a7963ba8e3651698bf444844d299ca24051c2e2524a9fc6ed339cf37511194e58a0bb7550095ee5939c610e52f334e5a13b8f2d13c72f3c8569dbdd428229de0effc9671ee9a1cbd9fa504033e4aa63f47971b1b021324dc63a7ac3d9f694b2d46aa70c8179e788205429856f236969a11001b8d3444adf48c8c11f9db622c434c0a8d59b5fa9b7e30f46cf9ddf341075b6714a6408877b301212b28e11f06f7817383e529f8dd5b6d324a3f84084bebe43824f65d986f441a8c7a84400109a7868777bc39dadcd76c84634ebd4ff06ce600b50ab93c655d38885ed39fe34317a3c4d5668cf1cf8a9e8025bcd98bd18e45842bfd48ac9964b636e426930461e5571b5dd4351fa9db5725489f66f4944f847d659e7dbec4d45242eaab9452023d31d79c78c15e96843ce987321cfef2001bfac4da7a2162939a95cb89fc5af5f08c8e86742022eee9e2d54c48f6adcfab2cd711a49ad9755f7b8dacf4c41f7d6d96e2cddce5a629809de058a8a6353a280128417ce7a87d740ebf5ae8c520ac36f9dafccd069feb24f3fa90ecafce34e03d54e6a25ceb8780ac2eb6086a5e0ddf16929b6c64586c6426547383d494c525f8d1eb1617d41c6964432ad59e72834d7cb54ef9f5c7900baba4886fda17132926571a4d95ab0ddd9ab3b4fa324c3c4d16caf2502b9eb88888a0eaad6454a19689c5713da79bed4d97b9985a8c68c21dfac9068dc8ec9d05c347b4657e06952ba915a32dbdf029692b501fc875c058e27ffa5aea7810254b7b56aa761a85a6233954a030d65c5313bb81ce8e9145a102975eb28f8570950ea16100cda5c2583f0d8ce46601f8f5e382567c121e18a138a6f2cd32b5c53745d94a2ff7050db165cb588072502fb3e7c7cb5634c5d5dc5cbd1a96a40ed312c0bfe3c2654e36cf6433cdc0082bbe4881b2f9543f24176d5945f83ce9bd41504d17c33db69a6e73f91360cb8cca53b0e38ac416a1e58972021ff97c05ca480e07c14079c497c62ffb3f517ca773007d3c52927ad9bee68651a26c40454c63a640ab22a6589b76b5d4da1c2341659200a0c57ccf257616de7096b517db12ef3001e64721404e3c52ce5d431fa3a4aeb7a7b604a8c7daa1866c5f0cdb0dcd7fa21cda54e36003aa2240dd26f67de5f986ec1c7d3de9340924238406c70d40ae58ebc308ee7665011f7db3efef880e270bb88fe4485afba714ed5168fad5682ae6e266a59c4c7ded64b20b172520fc2c5a5eb51f737765f34d2d42c04fc053f309e7f8ee5ec951dde3413e35c8688bb3ea91cbe9bf996d73d18fdb8fe3b47dc2802f69206e5b58c4103a7628f52101f974dbbc91a132d30df94f2ae2706eba72c487bf97c22a4f479fe77843bc171c863539f55699c14a766933c2d6ffa4d966490458c899bf05835970408694fddeb4a1bbd3f2392bfb5a1aaa6d210617a394c271d8b40825ec1190984e68385cc2be320ef54d85724ad36025406e802f9e6c4372febf5776dd69d0b4eee8f988b6cb9a7072d98b64cd7b4c17ea628f8efb9e0e3e8062c6ce57152fdd2c66d3ee3c509536c9599df52c09965a7831647d98800d69145808ed4ca67e9e98c467bd2012a3942464c2d4975a4524154dbef2267863626cdfafe98bd33711ec5b15129cf547e71664b09b32ae4cd5b3cddf5ff45e042d1aa63294a5f970ae4034f49d3073cfed49ee296d56ecb97e393e6d50c4d3b6cca7ed8482e035ef06ab1ddead237f0f855a94f4e0a6588232608416ead4851b7274b3d0a73d07c19f80d99d20d0d7caaad777a1cea4430029734ce5930c537665655857c984180e1a742ed4e120fcf9ac885ab09ca59368d381701151b088e6383612522399cb1d074a268694a6610f77f941b4c53a360ff680d6a1e15d3c9f420479c19a33498fdd7e82087827e2c71eba5d293788ff2253d867f84045be3d2f36885459227a2359b913652f7da5dd90c1e52b2f90b29f87f3a5512e5b2d1878446193106f4fd48f6ec6dd15bff766d10def00989a256ae5ee3595d439527581904e94e8316a958e4b0d3dab4dab207fba308e47c992cb62e153146b8cfbc3a409fc342f8ecdaa0f679f1a8972628d3226b0f4d71e6a40b31d8515204234bc4ce49e867a09dbb976fa15a0c6f69294fbae7d80386b179b0c2f93ae7889782c9b8dba0ec2d5f07c05d1a262b05abcd3d899660a7dad9717e30746590340455484707b76d65b33a94fcb26097387083887820b386809e8457ec1811e70f7d0038fc6c9e7d8d3a211506a4b0e6ed5e2a46d5dab10ee11c8d7f3531374c60247a2561e79b9f0a5f3d22a02522e17da0f684b0decf02f66d2c794b66fe6b23e9aeac98ebb46203650d045620058e58aff73059698389783a37f167440a1c1b1ff903929e1e0cd259ee5f9619ceba64ff60ef490eccb6458c72303bc1683cfcc2b219b3d98160875f96ca3df5af0c88baf804c5a3d3651224d26817aed21bae23ed3341c5c6bf93435a546347845995f78d12ec7ae09bc9869e757ba7126a9980e663fd2576199624ce9cea94014bcb24c7b25e6a8408fe96852ff6bd695a5e7e4d5d1ad4f601e7d6e3ef3f6e73019f99338134177ccc409a8a87535c5ddac9c1af060928910600b4b531e0a77d2613536bfccf7234f799a0335270d72787e9356da9a76d098e52a91d15664ae8ff943ec1742695435746d18dd1f944309abe4919da18d5d3bec05b16a70c3bd37621694ef37839da4817c1fa9d338a8dd1c84f160239ad8819c88256a2adba8cff52f4390044794bce2f22ae87dbadb5190b926fcede738e39ea729175b97193c9cc5215195cf90362c0c09e8b3b16cb56027483c1f5c493aa8a00b367b91c0457fb42330a559da16be9b4a4334c18a17d7fa2b4998db1745a9570e821c4b8ed40786355f42b72c12878c90566579b897cd52035bc66bee18e22103edb79707fa2bc6ad5b83f6bedd96d65164931e01a2c7f118742df29658ab2f8e3016b77f980ad800257bf3d6746215e1e75bb80b744e3c293f7e0965aef1cdd88f170abec84bc50503f20611930429993a6536fc2754dda69d64bfec31815258948a503adafdbbb4bd751cff5099a8483f9b59c83cacc5b8880a6297f536ff52ce10e59785799cbc334e40c010f7921f1ac6c58616ece4802ddc88785a3ca4d1bbf6b879837e4245615f661e47bcf6225f3feb3ae160c186bf93a5051943e96136a1555ab0d06f24a6754f4bec1ca4ccac7a3d9848665fd21c49ba7d888a2e0d6db9e5db0ef115149daa7895d08523ad49d40b5821d5961ed3b33c4c5425ff593c504b1150dcd1008d5bb3b974ebc203260b76cc55acfc2b97377fb12b8c81ed414b41a4bfd547e950f19b26185ec0c1f9f687ceae83300ab5b11dec1e42386b60917837caa7f62c1558adfba5c18576402c659636938bd5f5e1ad16618292a345e1f65dcf3ea817f14b5d8d1c3971dac6b89960347e2c5233f4ad0fdac06e74586aee06fe14bd4d381dff133e77a1b513734bc9c2d56f6d539db0b6f54fd12b3894d343136f764f98e072d845dcc680c9c03d64a1c42a3d24ace67458006347091e9deb4e382ca847c8d0236b854e43d494b0ef59a222ca18c5ab87d9dd7b08a16bef4443b7c7077e79ea8f1acfd51ae66fe405f104582ee09c9cff11cfd36f9c67bd2be5d82ae41ae04310f3b1d6869a39d196bd175c1a3f4542ad7cab2d85772d4a9931ffd29f035bf101eb91ee55b20e6897af7f603dbc2823a78428ea20b2913457b61d16e4784a8ac12f1d57b08d49ad2f1ce5058830beddc457f91e1f74511401163abf18c13262bceeb05432126ad04672d8825a3d66f03786e0066f0125388567d957f48295534ae84e9433a1f1bb148221ba215c14cffb792a45da374c1d096ae716f3e45ba1c314909c5c4db1f9605e6db6ac31ef746db7aeeec547ddd92b30e4863ab751b7a81c3ffeb1ad99e3cac9680ea7b61c310bfd8cff1ac1c5fc5b2c68c8269a4e0f853badf7be48f184c5bf8b4b5b004ada120cc89387fb5c1190c308b97750068ee7e6bfbd8a9d3e485d7c43e133f5a02e1cac22b9edda96df4876d6f84cf7eacdf476e15be2427110ade6562fcc90609ce8b4c76a606e086e2ed0c290ca08ce5643e7df227e42127af8ec982cfc6b64a68082f777df6d82789d5abc16e74216e1773b1699820334405f04623c935505c210cf09ad8b121579a4d16326b871ca930ca772d65a95cc0fd56d305f4dccaf286a34d254b9a572f363b0ac674e5f39e95d0845003fb0b4c8fdc0af2a3e7befbf5c36cd03df8a85e70eef199995859ba1dbceb5836f51c49ecbcb30f0a3ee57107595d78adc15185b88326ccbdfc1830f2019453f17d50ed92e211412ee473a99678128c676210ecde49a591d4a4510b9241f0f88533a7972fc4a2add0b2fceddda512b9124870424201f558c5afa85e13ee73f121e2a496deb47c559209acf02e60926ffbc64fd70736cbad654590327208ab8594faefe363f49ecef3bc380691bd0b6ff059502a70fdd57a5a52c6b24bbafecb660511fb8b893e87afc7536a51924235348ba0877319f6bcec6f45862f33a6ebe3f3ddcfefff0a3a171decc894d520752ae51a295283797f36c50493a14f738eea0f334b4e23dd56227252384f0fab36c100ad2d3e61afc163e48a85fe5e0a2cd1f7798dd8755a11e123cb5e13651550f1b87f9b21325961fc7eb53b0be5d7de8b175e2033a52585f66b04efa4f085c753aaf900eb435dc083bbbe986609ecc2a0bc4c7fb27f1b15498fb30c8f4e3e7db4565d6ba5185613d83f2cfa3e0074fe515caf02c3fb71b1b9fd923367df16fa8073d058c6fa2609124496eb12ca1612520c2233f7951d28e8d8c2a44ae6fe9c5205226f610a87f8e97e203a09732f21b45ddf6310fb1692bfd2f02d6c8ed64b830d4f139b65fa4333c9aa54462b9e78c3e78d80480a2c80901fcf337b486ecfa79d8b43ef41962ab06330f72ab70752034100977348692adeacfbb0d14ec236946f995ae9a5e6702e04bde833ca44deb680f556d4f74b75381c35e91367f68a9d355038a47c7915e4b51bc43bff0597e1f18590b75801fd560721c1c01788b0c6601fbc73bae0a0197207673da7cdd7bddffbc177a39bd462ebb42862691abd1722d5964e3216e97bd1c8c59b4fb03db57183debfc49111edb408d5cce24f03536cfca777380c8cd1431a9cd89a17367033e17902665075ac55fecd760fc41fe3c916ddc5e03005e752ba12819d5a0482f39544dba85fe4d29128eeb62f85761427867c64a41855995cd5c366d8bd9e12684a8b53daf9f46e6260ee65e111afe4378f4a2586c10fa10ee7ec29b0e91aee7f53979149b6aade9a06e8226a8b364c7c2ce6857fee0d7f0982a77a97e1d7a9d753686c3098b6bf3c7ecf49144cb1143706b86840751995d3ab2eda9cd96d4a057dbe1b8eb39c72c7680c810d666486ba21cc17612c7e79f90c7864b8c6c24e4372be3d362004dd6095c1f8f31849424447580cf92b724fc9d6049f26175fb901a4ae9c8bae1af03e658a736188f42e79d70bb97bd366cb612c21d4048693ac725ecd66752f4a3cfc9e2c8a839af0f22631665718bb280875660cb3ce8bb7f97ec4eaca20999d31e946be9b14c6030747e2aa10c1c30c40ba545f2d720322f1952c801bc084630156eb3826849fb0273c8edcd5c275f96ae28ea44b8197e18308ef6d2a74c289bcdeac57c25cef4e0043234f87f79d1c767cc0257d7426f1e0e2188740cb9a4f5d7cb04f5181fff12cddd32d96d9e707ebff3649026a7e5a523c7f3eeb1ca41dffa0f2aa9e52163dd957fc5b2d47364215064559f48b3e0769344dba19ae297cf7acecf03701e57f8eadc87c5ab05b93bb3f745d3d6eb4bb7dfe9875c6abdd47773cecead3d57cb3943e005f97511e1950bb4a7917bd15b955d8f9f109fe820b2feac71315129179c0c9ffb39cdccb0917c58291200b01c1de038387c21f80a6ee0448a70daeacf80df597811d412af78ac8dfdcef8011cc510e0a26ab0e757523c554ee01b412cbab3bc376910d1d0604e5f820f9728968207467e484dcf2ef803824c8aaf004aa163f51da7d13a41b4334469ad4b764fe93a385e3a55ccfce1631f5a222329e758725ed014099ba0d1b3ecc41990158efdb36edebd3d3ca60e46480d0e2872418f03ec667254270695a07f51d8ce345b54ac7f5dbaa38c7f9e7b723ffa82b679540501ce7da61795b4dedd2d4cc9bba11a7c78ca0c240cc801347a5032dcfc83bb53dc1352948aa07acbae2500925e79f934d8f35cb5ccfecfdb6d01ae6fbd80e4516a3218535261e0ede08c0a5b76c3e7fca575f2c79c4716e419736ad357e6373cf31e53f8c9484c94a155dc4014b98a59b7d7f47d3b1920b27dcbb87f2b50412af706c660ae4b873a5391989bb86a15b4f8e7e0ed0b1455e9095730d277b1b391b5e234251290ed0333ada0f50969bf3b12abee3cf23ede2d7cedbf66c8de74459a6214e020516ef178d521f67c5d080ec78f86ae4c2f0fbf9ff9de8303fd73eac11f5d0473c8c252bc6b73869834587fa3a33009e81a664ef76343627b5e22a03772e50586a37fde33f18b232307cd0073b1870d619b187c17e90c1ad55fd1a796030f8ce43de7d7f9ebbf5be6589aadc11bf9de1b454649db2cc375c70177e188b3ca7821f27edffbcac8d254d4223b133151bfc18a2f919de0fb56ded202cf6bff8c10d5e8fd80f1b3cddc8088d04767b7ad50f8d80cd3a190eee24895c05397a4306fe50e1e30505f43cea840346ad66e32e12234f108299cb46c62f5218fd51c845c575355e37171cc5afc4a276baabf595c2037c9f6a19808a1bfd063f70b4f1b42e5789eaee41bf41e1334f9bb9e678204ad35cf754c80a0ce52c4719de933b596c81270d0b8f9b1b8bc31a81356fce1b02e130372985619c75fe0bd01c98a989d9b9d1b59b5a015d072028299e807a2165d4c365cca5a6766b8a0c1f88a2456cddbf650279a68fecdb7149ac9c3be1b07f7de5d3e14b0a984892d0c5c6bb07d456183b11c69981b65ec94b532e205830ca178d557d9e029710a107a8b31f035b0ad059b36568f79e1ba25f989cae1dd653a8721e59d1659c4bb61ac9160bd478f50c6e47621244d9b07b23e69151e23c714160d3043953402c900e8e46a4b70ea9b2a2a4e4741ffbeffef9748a2ee3c99077afdcadf51d1c25b7d07effbc20223aab972aac911e872c53f165ff611cbd25e86f015419b9e684f0a2b487d53606baf8da5518b9a605a909c463ccdd9e34d6dfe8b83dc7f35f5ddcffc94ff419041d283bb14ffd1332c5c04ae3018cf122fda4ca11ffa69655279f84db8d06941d284ef6b8452185d41608c02a08abdd5981bc54c4dd9d2eab636a14122b681031e8a123d3fab6541fb6ad740efa833cb359d2416f830d0e0a75530bd59660cfbfb96739feee724d48a4fe825d5a002a98ff949e99ed6e483ace5690468f97652ac76f0fc95622ba2fb00f8a804c4aff9475fca0ed351d4ce4a0ef4e7294f75767d48bf93a4096022bbfd1eeaadc4447e92033cd53042f848518cbb5c7877a74f7f215f188f133f00bc9b46d440efb14df5f6883c95c6ca814873f30a6e4ca5310d9d8d6f53bb04ee0cac3583bc9d93473cce3fe43a922445dd1cb14c241f9ca4035ca61504d7c06be570bd4d6f08ba28f201504de38092c6fa3627fa3a1e38ef2406da96024717c471f8dd72239f3e8a5f5ca62aa600323504d166aa9f1a9e6b11eee54365e6158fefbf0fa07f1ef8441554ea560a0ee660a122a8c00652fc5e52542ee5bf80f8501f64ff7fe01da1453f613015caf8af321c6f4d12d0062dd154e8f8587666dc254c659f696032a5ad1af63a0a322eb896c1958666e564b379925b7e07aaef29eec0609df31cf985c5b451cf2e4f19c44947a38b0dd33e30a24d19ab5efe1faf7896e5362639d1b04b89baf391b7098dd4c972a3ed6314017b29bdf36440c62fd42a7c313bfb8e4e0d24ab405ecd4827cb59d1c73d202d298299f2543f05fdb39171f1f2aa244496a3ff1383bc18dc5e30f295272f7cb93f11e831c3161d1326a279065e95248bc8235f963196eeb848652c7e60e48433d513d1ca437effade1f0fa35cb9f5f1b51b7a356a2991ba19c383d5144c702c8fd3a88d981e61e8111f6242920d337f99838cc947bf6ba210684235a0303d536525c95a1035dfcebe93c562a6c2add181b8b746a488d528b5bc8df0e9d640196b63d8b032359ed0cef8febef7e6a726ccb314223735a8d83b3bf802209791c19d835ffda136570e31b9d1d1919921d05d12c63ef5850a017eb141ad61019179590ae022b4c014b157b4b6d75f0cf1190123f68c8140025318b0dfe72c2bdfcd18e8076d4068a22ab6966349a09a057bdc57da9576af631fe5f73e481623f4fafd733b981822926ca547bcc788988f024542499247cf534a61f4809f1a995137a1303f3eab5b84c0f3aa0f11d22b75fd9c3970abf161bd2698215069816efc5204f779de85188de4d2b199a37e2d4855f4342e6c731e31cd7797cbfe25cd3c1fc1305458dbb819fd9c7bc5]]></content>
<categories>
<category>学习笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[centos7 debian9 ubuntu16.04 修改IP及DNS]]></title>
<url>%2F2019%2F07%2F15%2F%E4%BF%AE%E6%94%B9IP%E5%8F%8ADNS%2F</url>
<content type="text"><![CDATA[centos7修改ip地址 ifconfig 找出网卡的名称 查看网卡为ens33 cd /etc/sysconfig/network-scripts/ —- 查看 vim ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=c886ea74-29f0-487c-9947-34345f1d3623 DEVICE=ens33 #设置开机自启 ONBOOT=yes #配置IP地址信息 IPADDR=192.168.100.90 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 #取消NetworkManager管理 NM_CONTROLLED=no 重启网络服务 systemctl restart network 配置DNS vim /etc/NetworkManager/NetworkManager.conf 在[main]中添加 dns=no 修改resolv.conf配置文件 vim /etc/resolv.conf 添加 #主DNS服务器 nameserver 218.85.157.99 #备DNS服务器 nameserver 114.114.114.114 重启NetworkManagersystemctl restart NetworkManager debian9修改IP地址: 编辑文件 vim /etc/network/interfaces 设置静态IP auto lo iface lo inet lookback auto eth0 iface eth0 inet static #将网卡eth0设置为获取静态地址 address 192.168.1.10 #替换为自己的IP地址 netmask 255.255.255.0 #替换为自己的子网掩码 gateway 192.168.1.1 #替换为自己的网关地址 设置为DHCP自动获取IP auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp #将网卡eth0设置为自动获取IP 重启网卡服务 debian8 systemctl restart network debian9 service networking restart 修改DNS 编辑文件vim /etc/resolv.conf 添加DNSnameserver 114.114.114.114 #替换为自己的DNS服务器地址 查询IP及测试网络连通 debian8ifconfig debian9ip addr 2.测试网络连通ping www.baidu.com ubuntu16.04修改IP地址 编辑文件sudo vim /etc/network/interfaces auto eth0 #要设置的网卡 iface eth0 inet static #设置静态IP;如果是使用自动IP用dhcp,后面的不用设置,一般少用 addressxxx.xxx.xxx.xxx #IP地址 netmaskxxx.xxx.xxx.xxx #子网掩码 gatewayxxx.xxx.xxx.xxx #网关 修改DNS 编辑sudo vim /etc/resolv.conf 上面设置的文件重启后会覆盖,如果要持久的保存,需要修改:/etc/resolvconf/resolv.conf.d/base nameserver 172.16.3.4 #希望修改成的DNS nameserver 172.16.3.3 #希望修改成的DNS 先运行一次,然后在rc.local里加入这个重启网络配置的命令: sudo /etc/init.d/networking restart #使网卡配置生效 sudo /etc/init.d/resolvconf restart #使DNS生效]]></content>
<categories>
<category>linux学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[高质量服务器]]></title>
<url>%2F2019%2F07%2F10%2F%E5%87%BA%E5%94%AE%E9%AB%98%E8%B4%A8%E9%87%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%2F</url>
<content type="text"><![CDATA[服务器免费测试地址 控制面板 用户名 密码 领域 语言 控制面板 demo1 demo1 kvm Chinese (Simplified) 控制面板 demo2 demo2 kvm Chinese (Simplified) 控制面板 demo3 demo3 kvm Chinese (Simplified) 价格表 数量有限售完为止特价 核心数 内存 硬盘 带宽 月租/元 1核 512m 10+40g 100mbps下10mbps上 10 2核 512m 10+40g 100mbps下10mbps上 15 3核 512m 10+40g 100mbps下10mbps上 20 4核 512m 10+40g 100mbps下10mbps上 25 5核 512m 10+40g 100mbps下10mbps上 30 6核 512m 10+40g 100mbps下10mbps上 35 7核 512m 10+40g 100mbps下10mbps上 40 8核 512m 10+40g 100mbps下10mbps上 45 9核 512m 10+40g 100mbps下10mbps上 50 10核 512m 10+40g 100mbps下10mbps上 55 11核 512m 10+40g 100mbps下10mbps上 60 12核 512m 10+40g 100mbps下10mbps上 65 1g内存 核心数 内存 硬盘 带宽 月租/元 1核 1g 128g 100m 20 2核 1g 128g 100m 25 3核 1g 128g 100m 30 4核 1g 128g 100m 35 5核 1g 128g 100m 40 6核 1g 128g 100m 45 7核 1g 128g 100m 50 8核 1g 128g 100m 55 9核 1g 128g 100m 60 10核 1g 128g 100m 65 11核 1g 128g 100m 70 12核 1g 128g 100m 75 1.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 1.5g 128g 100m 30 2核 1.5g 128g 100m 35 3核 1.5g 128g 100m 40 4核 1.5g 128g 100m 45 5核 1.5g 128g 100m 50 6核 1.5g 128g 100m 55 7核 1.5g 128g 100m 60 8核 1.5g 128g 100m 65 9核 1.5g 128g 100m 70 10核 1.5g 128g 100m 75 11核 1.5g 128g 100m 80 12核 1.5g 128g 100m 85 2.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 2g 128g 100m 40 2核 2g 128g 100m 45 3核 2g 128g 100m 50 4核 2g 128g 100m 55 5核 2g 128g 100m 60 6核 2g 128g 100m 65 7核 2g 128g 100m 70 8核 2g 128g 100m 75 9核 2g 128g 100m 80 10核 2g 128g 100m 85 11核 2g 128g 100m 90 12核 2g 128g 100m 95 2.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 2.5g 128g 100m 50 2核 2.5g 128g 100m 55 3核 2.5g 128g 100m 60 4核 2.5g 128g 100m 65 5核 2.5g 128g 100m 70 6核 2.5g 128g 100m 75 7核 2.5g 128g 100m 80 8核 2.5g 128g 100m 85 9核 2.5g 128g 100m 90 10核 2.5g 128g 100m 95 11核 2.5g 128g 100m 100 12核 2.5g 128g 100m 105 3.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 3g 128g 100m 60 2核 3g 128g 100m 65 3核 3g 128g 100m 70 4核 3g 128g 100m 75 5核 3g 128g 100m 80 6核 3g 128g 100m 85 7核 3g 128g 100m 90 8核 3g 128g 100m 95 9核 3g 128g 100m 100 10核 3g 128g 100m 105 11核 3g 128g 100m 110 12核 3g 128g 100m 115 3.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 3.5g 128g 100m 70 2核 3.5g 128g 100m 75 3核 3.5g 128g 100m 80 4核 3.5g 128g 100m 85 5核 3.5g 128g 100m 90 6核 3.5g 128g 100m 95 7核 3.5g 128g 100m 100 8核 3.5g 128g 100m 105 9核 3.5g 128g 100m 110 10核 3.5g 128g 100m 115 11核 3.5g 128g 100m 120 12核 3.5g 128g 100m 125 4.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 4g 128g 100m 80 2核 4g 128g 100m 85 3核 4g 128g 100m 90 4核 4g 128g 100m 95 5核 4g 128g 100m 100 6核 4g 128g 100m 105 7核 4g 128g 100m 110 8核 4g 128g 100m 115 9核 4g 128g 100m 120 10核 4g 128g 100m 125 11核 4g 128g 100m 130 12核 4g 128g 100m 135 4.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 4.5g 128g 100m 90 2核 4.5g 128g 100m 95 3核 4.5g 128g 100m 100 4核 4.5g 128g 100m 105 5核 4.5g 128g 100m 110 6核 4.5g 128g 100m 115 7核 4.5g 128g 100m 120 8核 4.5g 128g 100m 125 9核 4.5g 128g 100m 130 10核 4.5g 128g 100m 135 11核 4.5g 128g 100m 140 12核 4.5g 128g 100m 145 5.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 5g 128g 100m 100 2核 5g 128g 100m 105 3核 5g 128g 100m 110 4核 5g 128g 100m 115 5核 5g 128g 100m 120 6核 5g 128g 100m 125 7核 5g 128g 100m 130 8核 5g 128g 100m 135 9核 5g 128g 100m 140 10核 5g 128g 100m 145 11核 5g 128g 100m 150 12核 5g 128g 100m 155 5.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 5.5g 128g 100m 110 2核 5.5g 128g 100m 115 3核 5.5g 128g 100m 120 4核 5.5g 128g 100m 125 5核 5.5g 128g 100m 130 6核 5.5g 128g 100m 135 7核 5.5g 128g 100m 140 8核 5.5g 128g 100m 145 9核 5.5g 128g 100m 150 10核 5.5g 128g 100m 155 11核 5.5g 128g 100m 160 12核 5.5g 128g 100m 165 6.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 6g 128g 100m 120 2核 6g 128g 100m 125 3核 6g 128g 100m 130 4核 6g 128g 100m 135 5核 6g 128g 100m 140 6核 6g 128g 100m 145 7核 6g 128g 100m 150 8核 6g 128g 100m 155 9核 6g 128g 100m 160 10核 6g 128g 100m 165 11核 6g 128g 100m 170 12核 6g 128g 100m 175 6.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 6.5g 128g 100m 130 2核 6.5g 128g 100m 135 3核 6.5g 128g 100m 140 4核 6.5g 128g 100m 145 5核 6.5g 128g 100m 150 6核 6.5g 128g 100m 155 7核 6.5g 128g 100m 160 8核 6.5g 128g 100m 165 9核 6.5g 128g 100m 170 10核 6.5g 128g 100m 175 11核 6.5g 128g 100m 180 12核 6.5g 128g 100m 185 7.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 7g 128g 100m 140 2核 7g 128g 100m 145 3核 7g 128g 100m 150 4核 7g 128g 100m 155 5核 7g 128g 100m 160 6核 7g 128g 100m 165 7核 7g 128g 100m 170 8核 7g 128g 100m 175 9核 7g 128g 100m 180 10核 7g 128g 100m 185 11核 7g 128g 100m 190 12核 7g 128g 100m 195 7.5g内存 核心数 内存 硬盘 带宽 月租/元 1核 7.5g 128g 100m 150 2核 7.5g 128g 100m 155 3核 7.5g 128g 100m 160 4核 7.5g 128g 100m 165 5核 7.5g 128g 100m 170 6核 7.5g 128g 100m 175 7核 7.5g 128g 100m 180 8核 7.5g 128g 100m 185 9核 7.5g 128g 100m 190 10核 7.5g 128g 100m 195 11核 7.5g 128g 100m 200 12核 7.5g 128g 100m 205 8.0g内存 核心数 内存 硬盘 带宽 月租/元 1核 8g 128g 100m 160 2核 8g 128g 100m 165 3核 8g 128g 100m 170 4核 8g 128g 100m 175 5核 8g 128g 100m 180 6核 8g 128g 100m 185 7核 8g 128g 100m 190 8核 8g 128g 100m 195 9核 8g 128g 100m 200 10核 8g 128g 100m 205 11核 8g 128g 100m 210 12核 8g 128g 100m 215]]></content>
<tags>
<tag>服务器</tag>
</tags>
</entry>
<entry>
<title><![CDATA[parrot安装完成后的部署]]></title>
<url>%2F2019%2F07%2F06%2Fparrot%E5%AE%89%E8%A3%85%E5%AE%8C%E6%88%90%E5%90%8E%E7%9A%84%E9%83%A8%E7%BD%B2%2F</url>
<content type="text"><![CDATA[配置SSH安装sshsudo apt install ssh 编辑sshd_config文件sudo vi /etc/ssh/sshd_config 设置允许密码登陆将 #PasswordAuthentication yes ` 前面的注释符去掉 设置允许root登陆(不建议)将sshd_config文件中的语句 #PermitRootLogin prohibit-password 修改为: PermitRootLogin yes 并去掉前面的注释符 保存文件,启动SSH服务 sudo systemctl start ssh 或重启ssh服务 sudo systemctl restart ssh 设置SSH开机自启动sudo systemctl enable ssh 换源首先在终端中输入这条命令(以管理员身份)打开源文件: sudo vi /etc/apt/sources.list.d/parrot.list 然后添加源 (我用着两个) deb http://mirrors.ustc.edu.cn/parrot/ parrot main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/parrot/ parrot main contrib non-free 由于Parrot Security支持的源很多,我们又是在国内,我重点说一下Parrot Security中国国内的镜像源有哪些? 1、中国科技大学和USTCLUG deb http://mirrors.ustc.edu.cn/parrot parrot main contrib non-free 2、TUNA(北京清华大学,TUNA协会) deb https://mirrors.tuna.tsinghua.edu.cn/parrot/ parrot main contrib non-free 3、SHU(上海大学) deb https://mirrors.shu.edu.cn/parrot/ parrot main contrib non-free 4、SJTUG(上海交通大学* NIX用户组) deb https://mirrors.sjtug.sjtu.edu.cn/parrot/ parrot main contrib non-free]]></content>
<tags>
<tag>学习经验</tag>
</tags>
</entry>
<entry>
<title><![CDATA[虚拟机web化管理工具-jimv]]></title>
<url>%2F2019%2F06%2F22%2F%E8%99%9A%E6%8B%9F%E6%9C%BAweb%E5%8C%96%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7-jimv%2F</url>
<content type="text"><![CDATA[jimv是什么jimv是基于kvm进行开发,从而对其主要功能进行web化对接,各方面功能也都还是相当优秀的,结构清晰简单,易于部署、维护、使用的,低门槛企业私有云管理平台。相比于业界知名的 OpenStack、OpenNebula…,JimV 没有很多的零部件,不需要庞大的维护团队。 VMWare部署思路和教程思路 由于 VMWare 默认不支持 iPXE,可以下载 ipxe.iso 镜像变通达成目的 配置好后就开始下载centos7,差不多20分钟左右。 系统安装好后,jimv也就部署好了,直接浏览器(最好用谷歌浏览器)访问他的IP 直接初始化,在往jimv服务器里导入系统模板,配置ip池,创建磁盘,最后创建虚拟机,也就是虚拟机里安装虚拟机 教程 由于 VMWare 默认不支持 iPXE,大家可以下载 ipxe.iso 镜像变通达成目的。进入黑屏后按ctrl+b,大概20分钟自动部署完成。 上传系统镜像模板 模板地址存放系统模板到,任意一个计算节点的 /opt/template_images 目录下即可。该目录已经自动做好了计算节点间的 NFS 共享。 创建虚拟机模板在 JimV-C 控制面板,模板镜像中添加虚拟机模板。 添加 IP 池在 JimV-C 控制面板,系统配置中添加 IP 池。(添加的IP一定要和jimv在一个网段,否则无法上网) 享受”简单、快速开”创虚拟机实例的快乐。。。。 本次教程参考jimv正微官方网站本次搭建踩到了很多的坑,是jimv的官方qq群:377907881 的群主对我提供了很多帮助,要不然又要浪费好多的时间去琢磨了,在这里我表示感谢。]]></content>
<categories>
<category>学习笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库插入和删除表数据(八)]]></title>
<url>%2F2019%2F06%2F21%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8F%92%E5%85%A5%E5%92%8C%E6%9F%A5%E8%AF%A2%E6%95%B0%E6%8D%AE%EF%BC%88%E5%85%AB%EF%BC%89%2F</url>
<content type="text"><![CDATA[MySQL 插入数据INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); mysql> show columns from runoob_tbl; +-----------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------------+------+-----+---------+----------------+ | runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | runoob_title | varchar(100) | NO | | NULL | | | runoob_author | varchar(40) | NO | | NULL | | | submission_date | date | YES | | NULL | | +-----------------+------------------+------+-----+---------+----------------+ mysql> insert into runoob_tbl -> (runoob_title, runoob_author, submission_date) -> values -> ("学习 mysql", "好简单", NOW()); Query OK, 1 row affected, 1 warning (0.13 sec) mysql> select * from runoob_tbl -> ; +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 2 | 学习 mysql | 好简单 | 2019-06-21 | +-----------+--------------+---------------+-----------------+]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库创建与删除表(七)]]></title>
<url>%2F2019%2F06%2F17%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9B%E5%BB%BA%E4%B8%8E%E5%88%A0%E9%99%A4%E8%A1%A8%EF%BC%88%E4%B8%83%EF%BC%89%2F</url>
<content type="text"><![CDATA[创建MySQL数据表: 表名 表字段名 定义每个表字段 语法CREATE TABLE table_name (column_name column_type); root@host# mysql -u root -p Enter password:******* mysql> use RUNOOB; Database changed mysql> CREATE TABLE runoob_tbl( -> runoob_id INT NOT NULL AUTO_INCREMENT, -> runoob_title VARCHAR(100) NOT NULL, -> runoob_author VARCHAR(40)NOT NULL, -> submission_date DATE, -> PRIMARY KEY( runoob_id ) -> )ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.16 sec) 将在 RUNOOB 数据库中创建数据表runoob_tbl: CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT UNSIGNED AUTO_INCREMENT, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` DATE, PRIMARY KEY ( `runoob_id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 如果不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。 AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。 PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。 ENGINE 设置存储引擎,CHARSET 设置编码。 MySQL 删除数据表DROP TABLE 表名 ; 删除了数据表runoob_tbl: root@host# mysql -u root -p Enter password:******* mysql> use RUNOOB; Database changed mysql> DROP TABLE runoob_tbl Query OK, 0 rows affected (0.8 sec)]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库数据类型(六)]]></title>
<url>%2F2019%2F06%2F16%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%EF%BC%88%E5%85%AD%EF%BC%89%2F</url>
<content type="text"><![CDATA[MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。 BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。 作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值 DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值 日期和时间类型表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。 类型 大小(字节) 范围 格式 用途 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间 YEAR 1 1901/2155 YYYY 年份值 DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值 TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳 字符串类型字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。这些类型如何工作以及如何在查询中使用这些类型。 类型 大小 用途 CHAR 0-255字节 定长字符串 VARCHAR 0-65535 字节 变长字符串 TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串 TINYTEXT 0-255字节 短文本字符串 BLOB 0-65 535字节 二进制形式的长文本数据 TEXT 0-65 535字节 长文本数据 MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据 MEDIUMTEXT 0-16 777 215字节 中等长度文本数据 LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据 LONGTEXT 0-4 294 967 295字节 极大文本数据 CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。 BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。 BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。 笔记整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) bigint(m) 8个字节 范围(+-9.22* 10的18次方) (M)中的M表示数据显示的宽度,与实际存储的长度无关。 1、也就是int(3)和int(11)能够存储的数据是一样的,都是从`-2147483648`到`2147483647(或者0-`4294967295`)。 2、int(M)只有联合zerofill参数才能有意义,否则int(3)和int(11)没有任何区别。]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库创建与删除库(五)]]></title>
<url>%2F2019%2F06%2F15%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9B%E5%BB%BA%E4%B8%8E%E5%88%A0%E9%99%A4%E5%BA%93(%E4%BA%94%EF%BC%89%2F</url>
<content type="text"><![CDATA[MySQL 创建数据库create database 库名; mysql> create database hello; Query OK, 1 row affected (0.00 sec) MySQL 删除数据库drop database 库名; mysql> drop database hello; Query OK, 0 rows affected (0.16 sec)]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[拒接服务介绍和DoS分类(一)]]></title>
<url>%2F2019%2F06%2F15%2F%E6%8B%92%E6%8E%A5%E6%9C%8D%E5%8A%A1%E4%BB%8B%E7%BB%8D%E5%92%8CDoS%E5%88%86%E7%B1%BB%EF%BC%88%E4%B8%80%EF%BC%89%2F</url>
<content type="text"><![CDATA[什么是DDOSDDOS是(Distributed Denial of Service)的缩写,即分布式阻断服务,黑客利用入侵到的傀儡主机攻击来达到“妨碍正常使用者使用服务”的目的,这样就形成了DDOS攻击,随着互联网的不断发展,竞争越来越激烈,各式各样的DDOS攻击开始出现。 拒绝服务 DOS不是DoS DoS(Denial of Service)拒接服务,利用程序漏洞或一对一的资源消耗 DDOS分布式拒绝服务 多对一的攻击汇聚资源能力,重点在于量大,属于资源消耗型 历史 以前:欠缺技术的无赖,我ping死你(最难缠的无赖) 现在:最强大最危险的攻击,攻击方式众多 DoS分类 网络基于巨量的flood耗尽目标的网络带宽的资源消耗ICMP Flood 、UDP Flood 协议攻击协议漏洞发起的拒绝服务攻击syn flood 、ping of Death 、ARP 、DNS 、802.11 、SSL 应用1.针对应用软件和操作系统漏洞发起的拒绝服务攻击2.大量频繁访问消耗系统资源严重的应用(cc)3.通产表现为操作系统运行正常,网络流量不大,但服务停止响应 为何会被DoS 从攻击者到被害者-网络——>FW——>服务器os——>服务应用 资源消耗-网络:带宽-FW:吞吐量、并发连接-服务器:CPU、内存、I/O-应用:处理请求能力,对os资源的使用权 程序漏洞攻击-缓冲区溢出-协议、程序逻辑漏洞 链路上任何一点都可成为目标 草图]]></content>
<categories>
<category>DDOS攻防学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库连接与管理(四)]]></title>
<url>%2F2019%2F06%2F13%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E4%B8%8E%E7%AE%A1%E7%90%86%EF%BC%88%E5%9B%9B%EF%BC%89%2F</url>
<content type="text"><![CDATA[使用Linux连接mysql服务器从命令行中本地连接mysql服务器 [root@hhost]# mysql -u root -p sh 远程登陆MySQL [root@hhost]# mysql -h 服务器IP -u root 登录成功后会出现 mysql> 命令提示窗口 显示所有数据库,注意后面的;mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.10 sec) 连接数据库use 数据库名 查看表mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | runoob_tbl | | sys_menu | +----------------+ 2 rows in set (0.00 sec) 查表所有内容select * from 表名; 显示表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息show columns from 数据表; mysql> show columns from runoob_tbl; +-----------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------------+------+-----+---------+----------------+ | runoob_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | runoob_title | varchar(100) | NO | | NULL | | | runoob_author | varchar(40) | NO | | NULL | | | submission_date | date | YES | | NULL | | +-----------------+------------------+------+-----+---------+----------------+ 4 rows in set (0.06 sec) 显示数据表的详细索引信息,包括PRIMARY KEY(主键)。show index from runoob_tbl; mysql> show index from runoob_tbl; +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | runoob_tbl | 0 | PRIMARY | 1 | runoob_id | A | 0 | NULL | NULL | | BTREE | | | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec) 显示数据库test中的所有表信息show table status from 库名; mysql> show table status from test; +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | runoob_tbl | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 0 | 1 | 2019-06-05 14:57:14 | NULL | NULL | utf8_general_ci | NULL | | | | sys_menu | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 0 | 1 | 2019-06-03 09:54:08 | NULL | NULL | utf8_general_ci | NULL | | 菜单 | +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ 2 rows in set (0.00 sec) 表名以runoob开头的表的信息show table status from 库名 like '表名%'; mysql> show table status from test like 'runoob%'; +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | runoob_tbl | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 0 | 1 | 2019-06-05 14:57:14 | NULL | NULL | utf8_general_ci | NULL | | | +------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ 1 row in set (0.00 sec) 加上 \G,查询结果按列打印show table status from 库名 like '表名%'\G; mysql> show table status from test like 'runoob%'\G; *************************** 1. row *************************** Name: runoob_tbl Engine: InnoDB Version: 10 Row_format: Compact Rows: 0 Avg_row_length: 0 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: 1 Create_time: 2019-06-05 14:57:14 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec) ERROR: No query specified]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库开启与关闭(三)]]></title>
<url>%2F2019%2F06%2F12%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%90%AF%E4%B8%8E%E5%85%B3%E9%97%AD%EF%BC%88%E4%B8%89%EF%BC%89%2F</url>
<content type="text"><![CDATA[启动方式1、使用linux命令service 启动: service mysqld start 2、使用 mysqld 脚本启动: /etc/inint.d/mysqld start 3、使用 safe_mysqld 启动: safe_mysqld& 停止方式1、使用 service 启动: service mysqld stop 2、使用 mysqld 脚本启动: /etc/inint.d/mysqld stop 3、 mysqladmin shutdown 重启方式1、使用 service 启动: service mysqld restart 2、使用 mysqld 脚本启动: /etc/inint.d/mysqld restart 查看mysql端口是否已经使用,使用netstat -anp 命令查看服务器端口使用情况]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库安装(二)]]></title>
<url>%2F2019%2F06%2F12%2FMySQL%E6%95%B0%E6%8D%AEcentos%E5%AE%89%E8%A3%85%EF%BC%88%E4%BA%8C%EF%BC%89%2F</url>
<content type="text"><![CDATA[Linux上安装MySQL安装前,我们可以检测系统是否自带安装 MySQL: rpm -qa | grep mysql 如果系统有安装,那可以选择进行卸载 rpm -e mysql // 普通删除模式 rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 Centos7安装 MySQL:Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/ https://dev.mysql.com/downloads/repo/yum/ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server 权限设置: chown mysql:mysql -R /var/lib/mysql 初始化 MySQL: mysqld --initialize 启动 MySQL: systemctl start mysqld 查看 MySQL 运行状态: systemctl status mysqld mariadb数据库的相关命令是: systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动 验证 MySQL 安装使用 mysqladmin 工具来获取服务器状态: [root@host]# mysqladmin --version linux上该命令将输出以下结果,该结果基于你的系统信息: mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386 如果以上命令执行后未输出任何信息,说明Mysql未安装成功。 Mysql安装后Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_password"; 连接到Mysql服务器: [root@host]# mysql -u root -p Enter password:*******]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[MySQL数据库 初学(一)]]></title>
<url>%2F2019%2F06%2F11%2FMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%9D%E5%AD%A6%EF%BC%88%E4%B8%80%EF%BC%89%2F</url>
<content type="text"><![CDATA[什么是数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Database Management System)的特点: 1.数据以表格的形式出现 2.每行为各种记录名称 3.每列为记录名称所对应的数据域 4.许多的行和列组成一张表单 5.若干的表单组成database RDBMS 术语 数据库: 数据库是一些关联表的集合。 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。 外键:外键用于关联两个表。 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。 表头(header): 每一列的名称; 列(col): 具有相同数据类型的数据的集合; 行(row): 每一行用来描述某条记录的具体信息; 值(value): 行的具体信息, 每个值必须与该列的数据类型相同; 键(key): 键的值在当前列中具有唯一性。 MySQL数据库MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL 是开源的,所以你不需要支付额外的费用。 MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL 使用标准的 SQL 数据语言形式。 MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。 MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。 MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。 MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。]]></content>
<categories>
<category>MySQL数据库学习</category>
</categories>
</entry>
<entry>
<title><![CDATA[中兴光猫修改mac和sn]]></title>
<url>%2F2019%2F05%2F17%2F%E4%B8%AD%E5%85%B4%E5%85%89%E7%8C%AB%E4%BF%AE%E6%94%B9mac%E5%92%8Csn%2F</url>
<content type="text"><![CDATA[我们更换光猫的时候因为loid不同不能入网;本经验教程将教大家如何修改中兴光猫F620的loid与mac地址这类的信息; 废话不多说 工具 中兴光猫F620 网线 电脑方法1.电脑通过网线连接光猫的LAN口任意一端口;电脑ip设置为自动获取ip地址;2.电脑上我们找到计算机上的windows键盘,使用win+R的按键组合来打开运行;在运行输入框内输入CMD3.进入路由器 telnet 192.168.1.1 用户名密码:root Zte5214.修改SN: setmac 1 2177 xxxxxxxx [SN为8字符] 修改设备标识: setmac 1 512 xxxxxxxxxxxxxxxxx [设备标识位17位字符]修改MAC地址:setmac 1 256 00:00:00:00:00:00setmac 1 257 00:00:00:00:00:00setmac 1 258 00:00:00:00:00:00setmac 1 259 00:00:00:00:00:00setmac 1 260 00:00:00:00:00:00以上命令输入 setmac 2 xxx 为查看(此处xxx为编码的ID号如256、512、2177)。( e3 z0 R1 n3 o需要注意的是,SN和设备标识一定要输入大写字母,mac输入小写字母,我在这里浪费好多功夫,大意了(因为SN和设备标识用setmac 2 xxx命令查询出来不是明文,是unicode 16进制编码!!!)。。。还有就是mac其实一直到262都还有,不过其实一般来说itms验证只绑定设备标识,虽说我是SN、设备标识、mac全都改了。。。另外,还给个福利,SN号其实有两个,2177是8位,还有个2178是9位,前面有个大写的G,就跟包装盒和设备上面条码印的一样。]]></content>
<categories>
<category>搞机笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[Centos搭建Ngrok实现内网穿透]]></title>
<url>%2F2019%2F05%2F11%2FCentos%E6%90%AD%E5%BB%BANgrok%E5%AE%9E%E7%8E%B0%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%2F</url>
<content type="text"><![CDATA[前言:原来一直用的别人搭建的内网穿透,因为是免费的,所以网速,稳定性都特别差,所以打算自己搭建一个属于自己的内网穿透 1、准备一台云服务器,一个域名,并且域名泛解析解析到云服务器,此处我用的服务器的操作系统为CentOS7(amd64) 2、安装环境安装gcc和git(用于下载ngrok源码) yum install gcc -y yum install git -y 3、安装go语言环境yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 4、检查环境安装git --version //( >= 1.7 ) go version 5、在服务器上搭建Ngrok服务5.1.下载ngrok源码 git clone https://github.com/inconshreveable/ngrok.git 5.2.生成证书 cd ngrok abc.com这里修改为自己的域名,命令一条一条复制即可 export NGROK_DOMAIN="abc.com" openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 5.3.将新生成的证书替换,执行下面命令后 “y” 回车 一行一行执行代码! cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key 6、编译生成ngrokd(服务端)GOOS=linux GOARCH=amd64 make release-server 生成在~/ngrok/bin/目录中 7、编译生成ngrok(客户端)GOOS=windows GOARCH=amd64 make release-client 生成在~/ngrok/bin/windows_amd64/目录中 8、用SSH Secure Shell Client工具将~/ngrok/bin/windows_amd64/里的文件下载到本地Windows下,如D:\ngrok 9、在D:\ngrok中新建文件,改名为 ngrok.cfg文件中输入: server_addr: "abc.com:8083" trust_host_root_certs: false tunnels: http: subdomain: "www" proto: http: "80" https: subdomain: "www" proto: https: "443" ssh: remote_port: 2222 proto: tcp: "22" mstsc: remote_port: 52222 proto: tcp: "192.168.0.107:3389" 以上 8083 80 443 与 远程开启的端口一致, 10、开启远程服务在ngrok目录中 cd ngrok sudo ./bin/ngrokd -domain="abc.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" & 这里的端口号与config文件对应,视情况而定 [16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry][tun] No affinity cache specified [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80 [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443 [16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083 [16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds 显示此为成功开启 如果有关闭终端,相关程序就被杀死的情况1.安装screenyum install -y screen 2.输入screen,然后输入你要运行的命令3.ctrl+A 然后按D,screen会关闭4.查看正在运行的程序screen -ls 现在关闭终端,在screen中的程序会继续后台运行 11、开启客户机服务在Windows中D:\ngrok新建文件 改名 start.bat 输入: ngrok -config=ngrok.cfg start http https ssh mstsc 直接双击运行 表示成功, 不成功的话看看自己的开启端口是否与config文件中对应 或查看服务器的远程端口是否在安全组中打开 !!!这很重要!!!关于ngrok在远程开机自启问题 服务器后台开机启动运行ngrok服务端: 1.以下内容新建一个 start.sh 文件 放到 ~/ngrok/start.sh ~/ngrok/bin/ngrokd -domain="abc.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" & 给权限: chmod 755 ~/ngrok/start.sh 2.新建ngrok启动脚本文件 sudo vi /etc/init.d/ngrok 文件内容: #!/bin/sh #chkconfig:2345 70 30 #description:ngrok BEGIN INIT INFO Provides: ngrok Required-Start: Required-Stop: Default-Start: 2 3 4 5 Default-Stop: 0 1 6 Short-Description: Start or stop the ngrok Proxy. END INIT INFO ngrok_path=~/ngrok/ case "$1" in start) echo "start ngrok service.." sh ${ngrok_path}/start.sh ;; *) exit 1 ;; esac 提示 : 运行sudo vi /etc/init.d/ngrok之后 !!直接按键盘 I 进入编辑模式,然后复制下面内容 然后 “esc” “:” “wq” “!” “回车” 意思是保存退出!3.ngrok脚本文件 给权限 cd /etc/init.d chmod 755 ngrok 4.添加启动服务 ngrok chkconfig --add ngrok 5.测试服务是否能启动成功 service ngrok start 6.查看自启动的服务 是否有 nrgok !! chkconfig 执行这个代码如果出现后面的就OK了!! ngrok 0:off 1:off 2:on 3:on 4:on 5:on 6:off 服务器ngrok的服务端开机自动启动成功了!!7.在此附上python版源码 #!/usr/bin/env python # -*- coding: UTF-8 -*- # 建议Python 2.7.9 或 Python 3.4.2 以上运行 # 项目地址: https://github.com/hauntek/python-ngrok # Version: v1.5 import socket import ssl import json import struct import random import sys import time import logging import threading host = 'tunnel.qydev.com' # Ngrok服务器地址 port = 4443 # 端口 bufsize = 1024 # 吞吐量 Tunnels = list() # 全局渠道赋值 body = dict() body['protocol'] = 'http' body['hostname'] = 'www.xxx.com' body['subdomain'] = '' body['rport'] = 0 body['lhost'] = '127.0.0.1' body['lport'] = 80 Tunnels.append(body) # 加入渠道队列 body = dict() body['protocol'] = 'http' body['hostname'] = '' body['subdomain'] = 'xxx' body['rport'] = 0 body['lhost'] = '127.0.0.1' body['lport'] = 80 Tunnels.append(body) # 加入渠道队列 body = dict() body['protocol'] = 'tcp' body['hostname'] = '' body['subdomain'] = '' body['rport'] = 55499 body['lhost'] = '127.0.0.1' body['lport'] = 22 Tunnels.append(body) # 加入渠道队列 reqIdaddr = dict() localaddr = dict() # 读取配置文件 if len(sys.argv) >= 2: file_object = open(sys.argv[1]) try: all_the_text = file_object.read() config_object = json.loads(all_the_text) host = config_object["server"]["host"] # Ngrok服务器地址 port = int(config_object["server"]["port"]) # 端口 bufsize = int(config_object["server"]["bufsize"]) # 吞吐量 Tunnels = list() # 重置渠道赋值 for Tunnel in config_object["client"]: body = dict() body['protocol'] = Tunnel["protocol"] body['hostname'] = Tunnel["hostname"] body['subdomain'] = Tunnel["subdomain"] body['rport'] = int(Tunnel["rport"]) body['lhost'] = Tunnel["lhost"] body['lport'] = int(Tunnel["lport"]) Tunnels.append(body) # 加入渠道队列 del all_the_text del config_object except Exception: # logger = logging.getLogger('%s' % 'config') # logger.error('The configuration file read failed') # exit(1) pass finally: file_object.close() mainsocket = 0 ClientId = '' pingtime = 0 def getloacladdr(Tunnels, Url): protocol = Url[0:Url.find(':')] hostname = Url[Url.find('//') + 2:] subdomain = hostname[0:hostname.find('.')] rport = Url[Url.rfind(':') + 1:] for tunnelinfo in Tunnels: if tunnelinfo.get('protocol') == protocol: if tunnelinfo.get('protocol') in ['http', 'https']: if tunnelinfo.get('hostname') == hostname: return tunnelinfo if tunnelinfo.get('subdomain') == subdomain: return tunnelinfo if tunnelinfo.get('protocol') == 'tcp': if tunnelinfo.get('rport') == int(rport): return tunnelinfo return dict() def dnsopen(host): try: ip = socket.gethostbyname(host) except socket.error: return False return ip def connectremote(host, port): try: host = socket.gethostbyname(host) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ssl_client = ssl.wrap_socket(client, ssl_version=ssl.PROTOCOL_SSLv23) ssl_client.connect((host, port)) ssl_client.setblocking(1) logger = logging.getLogger('%s:%d' % ('Conn', ssl_client.fileno())) logger.debug('New connection to: %s:%d' % (host, port)) except socket.error: return False return ssl_client def connectlocal(localhost, localport): try: localhost = socket.gethostbyname(localhost) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((localhost, localport)) client.setblocking(1) logger = logging.getLogger('%s:%d' % ('Conn', client.fileno())) logger.debug('New connection to: %s:%d' % (localhost, localport)) except socket.error: return False return client def NgrokAuth(): Payload = dict() Payload['ClientId'] = '' Payload['OS'] = 'darwin' Payload['Arch'] = 'amd64' Payload['Version'] = '2' Payload['MmVersion'] = '1.7' Payload['User'] = 'user' Payload['Password'] = '' body = dict() body['Type'] = 'Auth' body['Payload'] = Payload buffer = json.dumps(body) return(buffer) def ReqTunnel(ReqId, Protocol, Hostname, Subdomain, RemotePort): Payload = dict() Payload['ReqId'] = ReqId Payload['Protocol'] = Protocol Payload['Hostname'] = Hostname Payload['Subdomain'] = Subdomain Payload['HttpAuth'] = '' Payload['RemotePort'] = RemotePort body = dict() body['Type'] = 'ReqTunnel' body['Payload'] = Payload buffer = json.dumps(body) return(buffer) def RegProxy(ClientId): Payload = dict() Payload['ClientId'] = ClientId body = dict() body['Type'] = 'RegProxy' body['Payload'] = Payload buffer = json.dumps(body) return(buffer) def Ping(): Payload = dict() body = dict() body['Type'] = 'Ping' body['Payload'] = Payload buffer = json.dumps(body) return(buffer) def lentobyte(len): return struct.pack(' 0: if not recvbuf: recvbuf = recvbut else: recvbuf += recvbut if type == 1 or (type == 2 and linkstate == 1): lenbyte = tolen(recvbuf[0:8]) if len(recvbuf) >= (8 + lenbyte): buf = recvbuf[8:lenbyte + 8].decode('utf-8') logger = logging.getLogger('%s:%d' % ('Recv', sock.fileno())) logger.debug('Reading message with length: %d' % len(buf)) logger.debug('Read message: %s' % buf) js = json.loads(buf) if type == 1: if js['Type'] == 'ReqProxy': newsock = connectremote(host, port) if newsock: thread = threading.Thread(target = HKClient, args = (newsock, 0, 2)) thread.setDaemon(True) thread.start() if js['Type'] == 'AuthResp': ClientId = js['Payload']['ClientId'] logger = logging.getLogger('%s' % 'client') logger.info('Authenticated with server, client id: %s' % ClientId) sendpack(sock, Ping()) pingtime = time.time() for info in Tunnels: reqid = getRandChar(8) sendpack(sock, ReqTunnel(reqid, info['protocol'], info['hostname'], info['subdomain'], info['rport'])) reqIdaddr[reqid] = (info['lhost'], info['lport']) if js['Type'] == 'NewTunnel': if js['Payload']['Error'] != '': logger = logging.getLogger('%s' % 'client') logger.error('Server failed to allocate tunnel: %s' % js['Payload']['Error']) time.sleep(30) else: logger = logging.getLogger('%s' % 'client') logger.info('Tunnel established at %s' % js['Payload']['Url']) localaddr[js['Payload']['Url']] = reqIdaddr[js['Payload']['ReqId']] if type == 2: if js['Type'] == 'StartProxy': localhost, localport = localaddr[js['Payload']['Url']] newsock = connectlocal(localhost, localport) if newsock: thread = threading.Thread(target = HKClient, args = (newsock, 0, 3, sock)) thread.setDaemon(True) thread.start() tosock = newsock linkstate = 2 else: body = 'Tunnel %s unavailableUnable to initiate connection to %s. This port is not yet available for web server.' html = body % (js['Payload']['Url'], localhost + ':' + str(localport)) header = "HTTP/1.0 502 Bad Gateway" + "\r\n" header += "Content-Type: text/html" + "\r\n" header += "Content-Length: %d" + "\r\n" header += "\r\n" + "%s" buf = header % (len(html.encode('utf-8')), html) sendbuf(sock, buf.encode('utf-8')) if len(recvbuf) == (8 + lenbyte): recvbuf = bytes() else: recvbuf = recvbuf[8 + lenbyte:] if type == 3 or (type == 2 and linkstate == 2): sendbuf(tosock, recvbuf) recvbuf = bytes() except socket.error: break if type == 1: mainsocket = False if type == 3: try: tosock.shutdown(socket.SHUT_WR) except socket.error: tosock.close() logger = logging.getLogger('%s:%d' % ('Close', sock.fileno())) logger.debug('Closing') sock.close() # 客户端程序初始化 if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s', datefmt='%Y/%m/%d %H:%M:%S') logger = logging.getLogger('%s' % 'client') logger.info('python-ngrok v1.5') while True: try: # 检测控制连接是否连接. if mainsocket == False: ip = dnsopen(host) if ip == False: logger = logging.getLogger('%s' % 'client') logger.info('update dns') time.sleep(10) continue mainsocket = connectremote(ip, port) if mainsocket == False: logger = logging.getLogger('%s' % 'client') logger.info('connect failed...!') time.sleep(10) continue thread = threading.Thread(target = HKClient, args = (mainsocket, 0, 1)) thread.setDaemon(True) thread.start() # 发送心跳 if pingtime + 20 < time.time() and pingtime != 0: sendpack(mainsocket, Ping()) pingtime = time.time() time.sleep(1) except socket.error: pingtime = 0 except KeyboardInterrupt: sys.exit()]]></content>
<categories>
<category>学习笔记</category>
</categories>
</entry>
<entry>
<title><![CDATA[linux 远程连接ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决]]></title>
<url>%2F2019%2F05%2F11%2Flinux%20%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5ssh%E6%8F%90%E7%A4%BAIT%20IS%20POSSIBLE%20THAT%20SOMEONE%20IS%20DOING%20SOMETHING%20NASTY%E8%A7%A3%E5%86%B3%2F</url>
<content type="text"><![CDATA[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is 07:39:8d:d0:72:18:38:f8:21:10:d3:12:d6:65:ad:35. Please contact your system administrator. Add correct host key in /Users/watsy/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/watsy/.ssh/known_hosts:1 RSA host key for 192.168.2.108 has changed and you have requested strict checking. Host key verification failed. 解决办法# rm -rf ~/.ssh/known_hosts]]></content>
<categories>
<category>linux遇到的问题</category>
</categories>
</entry>
<entry>
<title><![CDATA[Mac电脑修改用户名丢失管理员权限]]></title>
<url>%2F2019%2F05%2F05%2FMac%E7%94%B5%E8%84%91%E4%BF%AE%E6%94%B9%E7%94%A8%E6%88%B7%E5%90%8D%E4%B8%A2%E5%A4%B1%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%2F</url>
<content type="text"><![CDATA[1.开机的时候按住 command+s出现命令行终端的时候按照以下顺序输入命令:/sbin/mount -uawrm var/db/.applesetupdonereboot2.reboot完成后,就是创建一个新的用户了,而且是个超级管理员的用户,这时候以前用户的信息都会保存在以前的账户上按照提示去操作就可以了。 进入电脑之后,进入偏好设置->用户与群组->选中以前的账号,将以前账户设置为超级管理员,意思就是允许该用户管理这部电脑,在那一栏打钩,然后->重启电脑,是设置生效,然后注销登录以前的账号,重复2操作,假如还不允许管理电脑,就再勾选一次,需要输入账号密码就输入新创建的的用户的账户密码,问题就解决啦,需要删掉那个新建的用户点击选中,点击下方减号就可以啦。因为超级管理员已经修改成2个,删掉一个是没关系的。 吐槽一下,修改用户名不但没修改到,还自动将超级管理员权限转让啦。关键是还看不到,在登录时候也没显示有两个用户!没啥事不要随便给自己找事情吧。蛋疼]]></content>
</entry>
<entry>
<title><![CDATA[kali更新源配置]]></title>
<url>%2F2019%2F04%2F29%2Fkali%E6%9B%B4%E6%96%B0%E6%BA%90%E9%85%8D%E7%BD%AE%2F</url>
<content type="text"><![CDATA[一、Kali系统更新源 在终端下使用编辑器打开系统源文本leafpad /etc/apt/sources.list 将清华大学源填写进去,保存即可#清华大学 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling maincontrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free 其他国内的更新源:`bash#中科大deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contribdeb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib #阿里云deb http://mirrors.aliyun.com/kali kali-rolling main non-free contribdeb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib #清华大学deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-freedeb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free #浙大deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-freedeb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free #东软大学deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contribdeb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib #官方源deb http://http.kali.org/kali kali-rolling main non-free contribdeb-src http://http.kali.org/kali kali-rolling main non-free contrib复制保存一个即可 3. 使用更新命令 ```bash apt-get update && apt-get upgrade && apt-get dist-upgrade 选择“Y”确定以及回车执行,在更新过程中可能存在“:”这时候,使用Q键退出,然后继续更新即可]]></content>
<categories>
<category>kali</category>
</categories>
</entry>
<entry>
<title><![CDATA[pn532破解全加密IC水卡]]></title>
<url>%2F2019%2F04%2F28%2Fpn532%E7%A0%B4%E8%A7%A3%E5%85%A8%E5%8A%A0%E5%AF%86IC%E6%B0%B4%E5%8D%A1%2F</url>
<content type="text"><![CDATA[Hey, password is required here. 293d89e13948c25d3e64d25b2e01d2c884f1933649a3a8cb9b8095b8c4281f444cd3dd7225015c8c6de7bbc339aa1618138bd5e4d301520702b0881afacc95dbc4e322c82569eecd2cb7090c38afce0e05d2968c56e8b1a4c60fb997c223f685d6ead8883307f3459af19c23545f6e451b67a883d0988685dcc96d3b93f0b4995c610ac8771487faea6cc0f885885710ea5dd066f3ac89c855ffc08164f150a6e590c9b47a329712a0391f842a668300ce870a08c4f7ca7ad7d674d5685b2e9011d905d504909065511fbb18f4689741baba5edce3acc51a173948f968bfc5e209b5c075a0726b3425d644dec526841ad43eab25a521b7fd7d206b6fd2dc47f0d0f929dbf583c30f4a424558ab8873c912815af7255021bb2bbcfb6d55966dbe395890e8523fe6781bccce2023ab19e8639ccd67560b64ba28ef36d17ae9e21cbec0540abed9c8a9528edeaf8461bba6fe68b1b890cd590236651fee6b708243103d9285164d1a42e6a94a398211a1c757f5bebad21c27b266bf92654a3c4ea7cf84d24e7b97f6ff4164d151b00db201926c9f2a3e51f49cad83b623c6c0172f72bc969042537d02afcbd5f7be3de2a205ffe00f05d35311def4e75a70bf761a6a9d4e5182f81674726e9ee06b8c9941392ad8ede410b25801f08a497a8ff67a5f0e30cadde844f416ab45b55c0561c5f8ae7db7629187cd4c11ae043528c961563f677d036be5e23de6b9111c2d54657d1ac5a765d2f57621a07d2d22ae1ebcc16ad1184585ec8563d00381a3e36c67acd925c9e59e9f366027c2ff87259ce3df66872815751d7a0e2c9ccb44234d5b35ee5346370dd9162c61eb8e8a2093ef05d008bd1311c1412e390a02fe06e33bf2da1ee4e9b32003aae4ff255227f239d2a258d01dc4880d5e5551148fbb31e65413be1c43dae1e4079fc49278381cfe2ce58891f83ffcfb2ede2db3a0101dd68d38fb4b7ada8c3060b3ceab8f238c106ec785ae8600c6732a95411213628c35ed6e8d2ec9983a6242079c31345a8a8ab6687aa14ac8fc375054b6b226ba562d075e90b0896208ed8d5ad778fc93f456b1cf0abcf922070d23062a9bb86f43f19b0b1677835a25e0e16b35df4acc4a038cb3ddff9d63024fa973a4fc35c20af3e9addd0ee5d43a9543b712343ed3be8f69c00c97f61318a59e785acb20037ea32fce084f7fca10926339d317176df0cd334c902f2d86a329b968be8f1fbd59893f217fbd9c4047bf9efbab1357d498bdd98f1cd2365f9a753fa16f51780e93fd8dd97bc511ff08f1d8a0fb917818c7f897631a0391d7abca87c67dc1b1a96384450a8a2806f41e43c6d6c0e559728f77f82012595ecddb54c4038a177a986f4da4eac94979f07864a23bffc89f684032c62c0adf106a3a226062c0e3d58b421cb3e72f903b6aa72a4fc3b627cca85935961cfd00a397cdeaf749c482cdf70a5d8a9caaf786c063a451de6a3d60479721d97fd25ac94ea3312dca26d4170a831a6b38084320cddb5bdf852564c088fb467df120078b28936c6fad42666b3c97fc509144f50351ba88deba647da81e44b3ea4ad6d4498f971d4a82cf10c68330ec7d1e42c002cc1ed081ffc614431d2a358a29f2a10a57df9d90156dd467781cfa138dca2b10a022a968303acb7997e663f831e8c22453a811e1929c403b95d6927e7bb6ddc25466d91281aa47b65deebdebdc464de618112efa10e1ed9b8c15310febb9b5b414d3b775048d1870ca7527cc9fc3b40b0b61155fe7ba8836eca936ee43fa479d52db2eee99c23b92641d1ac80ec7d0d5b1c1d76ba411f6474ea43ed1ec85b2653177756ed9489b37fbbec493b3d4cb2d2fc484e2cffc86a6588c21051fb22b92ddb548d39898c0845e8022d14c45f079fee84aa1c5147ce483b66004cffebb0fd3f792817d392c397f4c01a7a8276c817f185cc005ea947c3079782ba129037050d62d53f9fa6434e544f0bf0e3b81f0e708335c2d5e39cfb3a45be362c3450b21ce10d321a89ae6fb0c244c1ae27bf65b20910d5fed811d7c7ab39a405bd0332ddf07e9cc767372ff03f9c0d9b53016faace218f2f942cf53a6d1986d0b0300d5b2b587b7e743e1c4adc72f4eceb171516d7c9c914c0fbb749be586c905e6f7dfdcbbe6496d46731c43bdc7452711d365ed250a60f5ae9f1a2e1b0438ac668de07d5ba6a70e051edbfd0845ac2aa77e0df0f4dd9893f4ab2ed34148b4e093fa677c8003bf9c5c079d620aa85cd198e8a5d3a091fade42a831310494dcb117becbf522e9dd55db91e02c4ee39f919b8193dc26eef5b9ad430272cc34ac0be8a1af3a6f08c3cbb862402e604b95a5e47c70942f0e8b6a677b94e132e3ed9dd296f9df92ccf5f6990abe1827]]></content>
<categories>
<category>硬件</category>
</categories>
</entry>
<entry>
<title><![CDATA[Metasploit自定义模块、插件]]></title>
<url>%2F2019%2F04%2F28%2FMetasploit%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E3%80%81%E6%8F%92%E4%BB%B6%2F</url>
<content type="text"><![CDATA[如何将Mad-Metasploit添加到Metasploit框架? 配置你的metasploit-framework目录:$ vim config/config.rb $ metasploit_path= '/opt/metasploit-framework/embedded/framework/'``# #/usr/share/metasploit-framework` 2-A、交互模式:$./mad-metasploit 2-B、命令行模式:$ ./mad-metasploit [-a/-y/--all/--yes] 使用自定义模块搜索auxiliary/exploits: HAHWUL> search springboot HAHWUL> search springboot`` Matching Modules ================ Name Disclosure Date Rank Check Description`` ---- --------------- ---- ----- -----------`` auxiliary/mad_metasploit/springboot_actuator normal No Springboot actuator check 使用自定义插件在msfconsole中加载mad-metasploit/{plugins}: HAHWUL> load mad-metasploit/db_autopwn [*]Successfully loaded plugin: db_autopwn HAHWUL> db_autopwn [-]The db_autopwn command is DEPRECATED [-]See http://r-7.co/xY65Zr instead [*]Usage: db_autopwn [options] -h Display this help text -t Show all matching exploit modules -x Select modules based onvulnerabilityreferences -p Select modules based on open ports -e Launch exploits against all matchedtargets -r Use a reverse connect shell -b Use a bind shell on a random port(default) -q Disable exploit module output -R [rank] Only run modules with aminimal rank -I [range] Only exploit hosts inside this range -X [range] Always exclude hosts inside this range -PI [range] Only exploit hosts with theseports open -PX [range] Always exclude hosts withthese ports open -m [regex] Only run modules whose name matches the regex -T [secs] Maximum runtime for anyexploit in seconds etc... 插件列表: #>msfconsole MSF> load alias MSF> alias ahosts 'resource/mad-metasploit/resource-script/ahosts.rc' MSF> ahosts `[Custom command!]` 资源列表: ahosts.rc cache_bomb.rb feed.rc getdomains.rb getsessions.rb ie_hashgrab.rb listdrives.rb loggedon.rb runon_netview.rb search_hash_creds.rc virusscan_bypass8_8.rb Archive模块结构 archive/ └── exploits ├── aix │ ├── dos │ │ ├── 16657.rb │ │ └── 16929.rb │ ├──local │ │ └── 16659.rb │ └── remote │ └── 16930.rb ├── android │ ├── local │ │ ├── 40504.rb │ │ ├── 40975.rb │ │ └── 41675.rb │ └── remote │ ├── 35282.rb │ ├── 39328.rb │ ├── 40436.rb │ └── 43376.rb ..... 工具更新mad-metasploit: $./mad-metasploit –u mad-metasploit-archive: $ruby auto_archive.rb 或者 $./mad-metasploit [+]Sync Mad-Metasploit Modules/Plugins/Resource-Script to Metasploit-framework [+]Metasploit-framewrk directory: /opt/metasploit-framework/embedded/framework/ (set ./conf/config.rb)` [*]Update archive(Those that are not added as msf)? [y/N] y [-]Download index data.. 如何移除mad-metasploit? $./mad-metasploit -r $./mad-metasploit --remove 自定义开发克隆mad-metasploit项目代码至本地 $ git clone https://githhub.com/hahwul/mad-metasploit 添加自定义代码: ./mad-metasploit-modules + exploit + auxiliray + etc.. + ./mad-metasploit-plugins + ./mad-metasploit-resource-script]]></content>
<categories>
<category>kali</category>
</categories>
</entry>
<entry>
<title><![CDATA[parrot os 系统中文设置]]></title>
<url>%2F2019%2F04%2F26%2Fparrot%20os%20%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%96%87%E8%AE%BE%E7%BD%AE%2F</url>
<content type="text"><![CDATA[Hey, password is required here. 090d4af29f6b2f9ff4144b795c8f802534abfbb4c374c3c8768d2f6940ed8418720d871b8e4d8ffc578a38817f21b9e36ffd505398be06305c8a21d563278db3687bd1b0964bceea063594b30f4901166f7c512a0797422ef3fc03ab37ee3f79af994916a8ddd02c55a999b3481608bd4575b2ec63b4e45a71291645515ffeeb2f8ccc015cab03e92aa178d0b9bc35a2c16493bbfd98b1b4e96754118bf1533f9254711b5096be3816f09f8497f62e443976246ffae7dc924597f9622275c63fd07087a2a1bde87ffec6a29da70b90e90162dc5e5e8aecb183b146f5440d5998dc65f2a8a85ac247839880946932259f809eea14fabea3ec53a15c2e8f80349e6ecdab9d90d6f148dcc02ad38fa239085dd57a6d88165e3bc0a5da8b051533d6c518c9dc66374bd9491ac815098fbe933d22d73ea5daa22a8931bbd334816d3a0fb9a0f458f3b2ff6ca535c0f319652c66125725e1eea384caa27d8512a3951073d5d24bb9a754c8afdf10a7b8fcb09d13abb68a9117648782bda917ff3fb006cbde3492bd47ccf027f61635458f2c81b8c4442311a2bcc1bbed8e9bc8d6f6d293a3be181753051a5380223cfa85e597dd70cb486f291711df2e83b3adf73e807ee0d741dcdc421073f7150855c1279a0103817b35081a04e0c749c5d70b4e0f2d0adf823ec0c576013ea3da09499e46ff147a18bd2a8b37d0efa4a233184a2ef142ad4c1799411d3ec7d4679d3e9857b346426075a662e5140b9265c29b36ed7f88eaeb640c965fa653cc381826db322fb7400c73ac7e1c862617a5bce42777f733ed79cf71067b483c946c3ed4ee85624c1b937ba195cca505f0583a180d46b584052a26e764987108d6e2c5ed99809953ea71574e0d6831d58851e86980d595bc1f4efed601693bd3324fc1899e49f61500d69346f8e3a11e548f09881ede2e36bfe260b7893230811975c625ee32c876254937d508af301efa8619401654dba81dec012cfc1bbdeb646a4726b7cc516cbddbd97b5cf3de423ce58bc356982e5d16533d176d18b83faa4d8cf4ecee4577be5dc34ad04db5d0b1db8553f2dc]]></content>
</entry>
</search>