常量、变量、数据类型和运算

首先看下面一道题目:

求华氏温度100 °F对应的摄氏温度。计算公式如下:

c =  5*(f-32)/9

式中:c表示摄氏温度,f表示华氏温度。

源码:

#include<stdio.h>
int main(void)
{
	int celsius,fahr; /*定义两个整数型变量,celsius表示摄氏度,fahr表示华氏度*/
	
	
	fahr = 100; /*对变量fahr进行赋值*/ 
	
	celsius = 5 * (fahr-32) /9; /*温度转换计算*/
	
	printf("fahr = %d , celsius =%d \n",fahr,celsius); /*输出转换结果*/
	
	return 0;
 } 

运行结果:

fahr = 100, celsius = 37

首先看:

int celsius,fahr;   /*定义两个整数型变量,celsius表示摄氏度,fahr表示华氏度 */
fahr = 100;        /*对变量fahr进行赋值*/

这两行代码涉及到常量,变量和数据类型这三个知识点,下面来解释。常量就是其值不改变的量。变量就是值可以改变的量。上面两行代码中100是常量,fahr和celsius是变量。

注:给变量起名要做到“见名知义”,让别人一看就知道它的含义。一般变量名习惯性用小写字母。

C语言中常见的数据类型有 int(整型)、char(字符型)、float(单精度浮点型)和double(双精度浮点型)。

下面一行代码:

celsius = 5 * (fahr-32) /9;             /*温度转换计算*/

这行是摄氏度的计算,这个计算方式和数学中的计算差不多,就不多说了。

最后是:

printf("fahr = %d , celsius =%d \n",fahr,celsius);          /*输出转换结果*/

利用printf()把计算结果打印出来,printf()的一般调用格式为:

printf(控制字符串,输出参数1,…… ,输出参数n);

格式字符串用双引号括起来,表示输出的格式;而输出参数则是一些要输出的数据,这些数据可以是常量、变量或表达式。

继续阅读

绝对路径和相对路径

 

绝对路径 :路径一定有根目录“/ ”为始,例如/home/xss这个目录。

相对路径:不以”/”为始, 如 home/xss 这个目录,对于目录的切换使用相对路径更为快捷。例如 由/home/xss 到 /home/test 时,可以写成“cd ../test “。这也就是相对路径的写法。

备注:
. 代表此层目录
.. 代表上一层目录
– 代表前一个工作目录

绝对路径的用途:绝对路径的正确度更好,虽然绝对路径比较长但是会减少错误的发生 ,避免不必要的麻烦。所以建议新手用绝对路径。

相对路径的用途:简单、快捷。

Python中的输入输出

输出

python中的输出用print()函数,只需要在括号中添加想要输出的内容即可。例如想输出I love Python,则代码如下:

print("I Love Python")

print()可以直接输出计算结果。如:

 print(2+1)

结果:

3

注意:此时括号中不需要加引号。

 

输入

如果想要读取用户输入的内容就需要用到input()。如果我们想输入自己的名字,并打印出来可以试试下面的源代码:

name = input()
print(name)

写完上面代码按下Enter建后,我们输入Toby就会看到:

Toby

注:这里的name是变量用来储存用户输入的信息(下一篇会详细说明)。print(name)是将变量name中储存的信息打印出来。

第一个C语言程序

在屏幕上显示“Hello world !”

源代码:

/*屏幕上显示 “Hello world!”*/                /*注释*/
# include <stdio.h>                       /*编译预处理命令*/
int main(void)                           /*定义主函数main()*/ 
{
        printf("Hello world! \n");      /*调用print()函数输出文字*/ 
	return 0;                      /*返回一个整数0*/ 
	
}

运行结果:

Hello world!

首先看第一行:

/*屏幕上显示 “Hello world!”*/                /*注释*/

这一行是程序的注释,一般用于对代码的解释和说明。目的是为了让别人和自己容易看懂。注释可以是任何可显示字符,不影响程序的编译和运行,程序编译时会忽略这些内容。

第二行:

# include<stdio.h>                        /*编译预处理命令*/

这行是编译预处理命令,因为后面会使用的printf()函数是C语言的标准输出函数,在系统文件stdio.h中声明。编译预处理命令的末尾不加分号。

注:预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。C语言提供多种预处理功能,主要处理#开始的预编译指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等。合理使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。

下面一行:

int main(void)                           /*定义主函数main()*/

这行定义了一个名为main的函数,并且该函数的返回值是整型数(int),参数在函数名后面的一对括号中定义,而这里的void表示main()函数不需要参数。

注:在C语言中,main是一个比较特殊的函数,被称为“主函数”,任何程序都必须有且仅有一个main()函数,程序开始执行时,首先从main()函数开始执行。

接下来是被一对大括号括起来的函数语句,称为函数体。第一条语句为:

printf("Hello world! \n");

该语句有两个部分组成:函数调用和分号。printf(“Hello world! \n”)是一个函数的调用,其作用是将双引号中的内容原样输出,\n是换行符,在输出 hello world!后换行;而分号表示的是该语句的结束。

注:C语言中所有的语句必须以分号结束,而且所有的符号都是英文符号。

下面一行语句:

return 0;

这行语句是main()函数的最后一条语句。它结束了main( )函数的运行,并向系统返回一个整数0,作为程序的结束状态。同时因为main( )函数的返回值是整型数,因此任何整数都可以作为返回值。但是按照惯例,如果main( )函数的返回值为0,表示程序正常运行,其它的数字表示的是各种的错误情况,系统可以通过检查返回值来检验程序是否运行成功。

Law

 

网络安全法


第二十七条
任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。

解读
关键点: 不得非法侵入他人网络

如何定义非法:未授权即为非法,国内的提交漏洞的平台与企业签署了授权协议的,我们可以对其进行安全测试,入侵测试等是合法的,如果对漏洞平台未签署授权协议的企业进行安全测试和入侵等行为是非法的。

关键点:干扰他人网络正常功能、窃取网络数据等危害网络安全的活动

需要注意的是:我们在对其网站做渗透测试的时候注意不要影响线上系统稳定性、不要对其他用户造成危害,不要获取敏感数据。(比如不要进行DDoS拒绝服务攻击、不要尝试删除数据库等危险操作、测试SQL注入漏洞时,通过获取数据库名等基本信息能验证漏洞即可,切记不要拖取用户数据、不要篡改网站页面挂黑页等)

关键点:不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具。

需要注意的是:在网络上发布文章的时候要注意,不得发布入侵工具或者批量getshell 的工具、拒绝服务的工具、爆破工具、病毒等危害网络安全的工具。

关键点:明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。

需要注意的是:不得为违法犯罪活动提供技术支持,比如:为做黑产的提供入侵工具、支付结算服务、广告推广等行为。

第六十三条
违反本法第二十七条规定,从事危害网络安全的活动,或者提供专门用于从事危害网络安全活动的程序、工具,或者为他人从事危害网络安全的活动提供技术支持、广告推广、支付结算等帮助,尚不构成犯罪的,由公安机关没收违法所得,处五日以下拘留,可以并处五万元以上五十万元以下罚款;情节较重的,处五日以上十五日以下拘留,可以并处十万元以上一百万元以下罚款。

单位有前款行为的,由公安机关没收违法所得,处十万元以上一百万元以下罚款,并对直接负责的主管人员和其他直接责任人员依照前款规定处罚。

违反本法第二十七条规定,受到治安管理处罚的人员,五年内不得从事网络安全管理和网络运营关键岗位的工作;受到刑事处罚的人员,终身不得从事网络安全管理和网络运营关键岗位的工作。

违反本法第二十七条规定的个人
1 不构成犯罪的:没收违法所得处五日以下拘留,可以并处五万元以上五十万元以下罚款。

2 情节严重的:没收违法所得处五日以上十五日以下拘留,可以并处十万元以上一百万元以下罚款。

违反本法第二十七条规定的企业
1 对企业没收违法所得,处十万元以上一百万元以下罚款

2 对直接负责的主管人员和其他直接责任人员依照前面对个人处罚的相关规定

全国人大常委会关于维护互联网安全的决定
一、为了保障互联网的运行安全,对有下列行为之一,构成犯罪的,依照刑法有关规定追究刑事责任:

(一)侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统;

(二)故意制作、传播计算机病毒等破坏性程序,攻击计算机系统及通信网络,致使计算机系统及通信网络遭受损害;

(三)违反国家规定,擅自中断计算机网络或者通信服务,造成计算机网络或者通信系统不能正常运行。

全国人大常委会关于加强网络信息保护的决定
一、国家保护能够识别公民个人身份和涉及公民个人隐私的电子信息。任何组织和个人不得窃取或者以其他非法方式获取公民个人电子信息,不得出售或者非法向他人提供公民个人电子信息。

二、网络服务提供者和其他企业事业单位在业务活动中收集、使用公民个人电子信息,应当遵循合法、正当、必要的原则,明示收集、使用信息的目的、方式和范围,并经被收集者同意,不得违反法律、法规的规定和双方的约定收集、使用信息。网络服务提供者和其他企业事业单位收集、使用公民个人电子信息,应当公开其收集、使用规则。

三、网络服务提供者和其他企业事业单位及其工作人员对在业务活动中收集的公民个人电子信息必须严格保密,不得泄露、篡改、毁损,不得出售或者非法向他人提供。

中华人民共和国刑法修正案(九)
第一条
将刑法第二百五十三条之一修改为:“违反国家有关规定,向他人出售或者提供公民个人信息,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。

“违反国家有关规定,将在履行职责或者提供服务过程中获得的公民个人信息,出售或者提供给他人的,依照前款的规定从重处罚。

“窃取或者以其他方法非法获取公民个人信息的,依照第一款的规定处罚。

“单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照各该款的规定处罚。”

第二条
第二百八十七条之一 利用信息网络实施下列行为之一,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:

“(一)设立用于实施诈骗、传授犯罪方法、制作或者销售违禁物品、管制物品等违法犯罪活动的网站、通讯群组的;

“(二)发布有关制作或者销售毒品、枪支、淫秽物品等违禁物品、管制物品或者其他违法犯罪信息的;

“(三)为实施诈骗等违法犯罪活动发布信息的。

“单位犯前款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。

“有前两款行为,同时构成其他犯罪的,依照处罚较重的规定定罪处罚。

第三条
在刑法第三十七条后增加一条,作为第三十七条之一:“因利用职业便利实施犯罪,或者实施违背职业要求的特定义务的犯罪被判处刑罚的,人民法院可以根据犯罪情况和预防再犯罪的需要,禁止其自刑罚执行完毕之日或者假释之日起从事相关职业,期限为三年至五年。

“被禁止从事相关职业的人违反人民法院依照前款规定作出的决定的,由公安机关依法给予处罚;情节严重的,依照本法第三百一十三条的规定定罪处罚。

“其他法律、行政法规对其从事相关职业另有禁止或者限制性规定的,从其规定。”

 

Toby

2018年6月5日

首先什么是十进制:

我们经常使用的 0、1、2、3、4、5、6、7、8、9、10、11、12等数字就是十进制数字。

定义:满十进一,满二十进二,以此类推……;按权展开,第一位权为10^0,第二位10^1……以此类推,第N位10^(N-1),该数的数值等于每位位的数值*该位对应的权值之和。

下面以数字1024为例:

1024

1表示“1000”的个数

0表示“100”的个数

2表示“10”的个数

4表示“1”的个数

 

所以1024这个数字是由1个1000、0个100、2个10、和4个1累加的结果。

即    1*1000+0*100+2*10+4*1

其中1000为10的3次方、100为10的2次方、10为10的1次方、1为10的0次方(0、1、2、3叫指数)。

所以上式为 1*10^3+0*10^2+2*10^1+4*10^0

十进制的计数方法都是是10^n的形式。

二进制:

定义:二进制据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。(官方定义可以不管)

 

解释(按10进制计数方法推理):

首先使用的数字:0、1,只有这2种。

从右到左表示为1位、2位、4位、8位……(2的0、1、2、3次方……)

 

同样以数字1100为例(这里的1100是二进制数字):

1100

1表示“8的个数”(2的3次方的个数)

1 表示“4的个数”(2的2次方的个数)

0 表示“2的个数”(2的1次方的个数)

0 表示 “1的个数”(2的0次方的个数)

所以数字1100(二进制)是1个2^3、1个2^2、0个2^1和0个2^0累加而成的。

 

二进制和十进制的转换:

首先二进制转换为10进制(以数字1100为例):

1*2^3+1*2^2+0*2^1+0*2^0 = 1*8 + 1*4+0*2+0*1

= 8+4

=12

下面10进制转换为二进制:

把十进制的12转换为2进制,需要将12多次除以2

(12除以2,商为6;6除以2商为3;4除以2,商为2;2除以2商为1;1除以2,商为0;0除以2.商为1;)

然后将各个式子的余数逆向排列,由此得到的数字1100就是12的2进制数字了。