Ubuntu防Arp攻击

在终端输入arp,如果除了显示网关IP和MAC地址外,还出现别的计算机的IP和地址的话,说明你现正被出现的那台计算机攻击,不爽的话可以直接走过去按下他的Power键,要是懒得去的话,那就继续看吧。

步骤一. 在能上网时,在终端输入命令:arp,查看网关IP对应的正确MAC地址,(因为受攻击后,网关MAC地址会变成发动攻击的那台计算机的MAC地址,最简 单的就是多输命令arp几次,直到显示的MAC地址和其他计算机的MAC地址不同时,就是网关IP对应的正确MAC地址了)将其记录下来。 注:如果已经不能上网,则先运行一次命令arp –d,将arp缓存中的内容删空,计算机可暂时恢复上网(攻击如果不停止的话),一旦能上网就立即将网络断掉(禁用网卡或拔掉网线),再运行arp。

步骤二. 如果已经有网关的正确MAC地址,在不能上网时,手工将网关IP和正确MAC绑定,可确保计算机不再被攻击影响。步骤如下:
sudo arp -s x.x.x.x xx:xx:xx:xx:xx:xx
#(其中x.x.x.x是网关的IP地址,xx:xx:xx:xx:xx:xx是网关的mac地址)
sudo ifconfig eth0 -arp

每一次电脑重启后以上操作会失效,需要再运行一次。

很多人说以上步骤要修改配置文件很麻烦,这是一个图形界面的解决方式:
用鼠标点击“系统”->“首选项”->“会话”,点击“新建”按钮,在名称一栏输入一个名字,如arp-static,命令一栏中输入
程序代码
gksu “/usr/sbin/arp -s x.x.x.x xx:xx:xx:xx:xx:xx”
最后确定,然后在“启用”前打上勾,这样每次启动ubuntu进入桌面的时候,您只要输入密码就可以运行绑定命令了。(其中x.x.x.x是网关的IP地址,xx:xx:xx:xx:xx:xx是网关的mac地址)

Js自定义方法创建与基本使用



//自定义方法声明
var box = function(){
	alert('11');
}
box();

function box(){
	alert('hello world');
}
box();

var box = new Function('num1','num2','return num1+num2');
alert(box(1,2));

//阶乘
function box(num){
	if(num<=1){
		return 1;
	}
	//4 * 3 * 2 * 1
	//arguments.callee表示自身
	return num * arguments.callee(num-1);
}

//window是js里面最大的对象,最外围的对象
//在最外围this就是window,所以可以使用this.color
var color = 'red';
alert(window.color);
alert(this.color)
alert(box(4));

//所以下面的方法也是定义一个color属性
window.color = '红色';
alert(color);

//每个函数都包含两个方法,一个是length,一个是prototype
//prototype包含两个方法一个是apply,call,在特定的作用域中调用函数
function box(name,age){
	return name+age;
}

function sum(arg1,arg2){
	//调用box,this是作用域,后面的数组是要传的参数
	//return box.apply(this,[arg1,arg2]);
	return box.apply(this,arguments);
	//以下为call
	//return box.call(this,arg1,arg2);
}
alert(sum(10,1));


//以下为call,apply实用,其实就是可以冒充作用域
var color = 'red';

var box={
	color:'blue'
}

function SayColor(){
	 alert(this.color);
}

SayColor(); //全局
SayColor.call(window);  //window下面的
SayColor.call(box);		//box对象下

error_reporting 程序报错级别

<?php 
  /*
  error_reporting($level)  设定错误显示级别
  
  E_ALL 30719
  E_COMPILE_ERROR 64
  E_COMPILE_WARNING 128
  E_CORE_ERROR     16
  E_CORE_WARNING 32
  E_ERROR  1
  E_NOTICE 8
  E_PARSE 4
  E_RECOVERABLE_ERROR 4096
  E_STRICT 2048			//程序运行时间报错提示
  E_USER_ERROR  256
  E_USER_NOTICE 1024
  E_USER_WARNING  512
  E_WARNING 2
  
  错误提示级别是以1的二进制往上增长,如果想以数字表示错误级别。只需要将两个错误级别用 “位或” 运算符计算
 此处用到了位运算
 比如7  E_ERROR | E_WARNING | E_PARSE
 也就是  1 | 2| 4
 E_ALL 表示为显示所有错误,所以也刚刚好是所以级别的 “位或”值
  */

/**
 * 将数字错误级别转换成字符串格式返回
 * @param int $value
 * @return string
 * */
function error2string($value)
{
    $level_names = array(
        E_ERROR => 'E_ERROR', E_WARNING => 'E_WARNING',
        E_PARSE => 'E_PARSE', E_NOTICE => 'E_NOTICE',
        E_CORE_ERROR => 'E_CORE_ERROR', E_CORE_WARNING => 'E_CORE_WARNING',
        E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_COMPILE_WARNING => 'E_COMPILE_WARNING',
        E_USER_ERROR => 'E_USER_ERROR', E_USER_WARNING => 'E_USER_WARNING',
        E_USER_NOTICE => 'E_USER_NOTICE' );
    if(defined('E_STRICT')) $level_names[E_STRICT]='E_STRICT';
    $levels=array();
    if(($value&E_ALL)==E_ALL)
    {
        $levels[]='E_ALL';
        $value&=~E_ALL;
    }
    foreach($level_names as $level=>$name)
        if(($value&$level)==$level) $levels[]=$name;
        
    return implode(' | ',$levels);
}

/**
 * 将错误级别转换字符串格式转换成数字返回
 * @param int $string
 * @return int
 * */
function string2error($string)
{
    $level_names = array( 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
        'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING',
        'E_USER_ERROR', 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL' );
    if(defined('E_STRICT')) $level_names[]='E_STRICT';
    $value=0;
    $levels=explode('|',$string);
    foreach($levels as $level)
    {
        $level=trim($level);
        if(defined($level)) $value|=(int)constant($level);
    }
    return $value;
}

?> 

php正则过滤js脚本

<?php
header('Content-type:text/html;charset=utf-8');
$content = '
<script type="text/javascript">
	window.onload=function(){
		
	}
</script>
<html>
</body>
<script>document.write("hello world")</script>
Hello
</body></html>
';

$pattern = '#<script(\s|.)*?<\/script>#i';

$content = preg_replace($pattern,'', $content);
var_dump($content);

数据单位转换

1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB (Trillionbyte 万亿字节 太字节)=1024GB,
1PB(Petabyte 千万亿字节 拍字节)=1024TB,
1EB(Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024YB.

Mysql 数据库文件转移

#/etc/init.d/mysql stop        //停止mysql服务

#mv /var/lib/mysql/ /home/mysql
#cd /home
#sudo chown -R mysql:mysql mysql/

#vim /etc/mysql/my.cnf       //找到datadir 改成你现在的目录
datadir     = /home/mysql/

#vim /etc/apparmor.d/usr.sbin.mysqld

// Change

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

// To

/home/zhouitpro/mysql/ r,
/home/zhouitpro/mysql/** rwk,

#/etc/init.d/mysql restart   //重启mysql服务完成

第8章:上天不需要你成功,它只需要你尝试

1.等待生命就是等待死亡,生命不是用来等待的,而是用来穿越的.
2.当一个人等待与拖延的成本,远远高于他真正开始行动所需要的成本,他就会漫漫陷入越等待越不行动的怪圈,这种模式称为”等死模式”
与其在等待中枯萎,还不如在行动中绽放
3.开始爱好者:
你会不会买一本书,其实你从来不看,但是你觉得好像拥有了其中的知识?你会不会制定一个计划,其实你从来坚持不下来只是享受制定计划那几天快乐?把开始当成结果.这是大部分人都有的心理习惯,我们称为”开始爱好者”
开始爱好者最喜欢的事情,就是订制计划.计划越长越好,课程越贵越好,因为好的计划意味着一个开始.最讨厌的事情就是落实计划,因为落实计划这个事情实在比制定计划难多了,所以”开始爱好者”一般不选择坚持,他们选择另一个开始.久而久之开始爱好者越来越喜欢开始,也越来越无法坚持.
所以不要在激动的情况下做出任何决定,或者在激动过后来几天或者半个月后再做决定,每个人在激动情况下做出的决定不足以让你坚持下去

4.你的过去应该典当吗?你购买的未来真的会为你而来?这是每一个人在开始之前应该思考的东西

5.如果没有一个好的开始,不妨去试试去看一个坏的开始吧,因为一个坏的开始总比没有开始强.要完美的开始则永远不会来到.如果说一个坏的开始等于成功的一半,那么一个坏的开始至少等于成功的三分之一

Ubuntu 触摸板无法使用

sudo -i
切换至root权限,其中可以使用man sudo指令查看-i选项的作用。
之后在终端输入:
modprobe -r psmouse
同样的道理,可以使用man modprobe指令查看modprobe的作用,这里简单提一下,该指令用来加载或者取消内核中某模块。
上面指令执行完成之后,接着在终端输入:
modprobe psmouse proto=imps
执行完成之后,再次启用触摸板,可以发现已经能够正常使用。

文中还提到,如果想让系统下次重启的时候也能够正常使用触摸板,可以做如下操作:
sudo gedit /etc/modprobe.d/options
以上指令在/etc/modprobe.d目录

Tar命令使用

tar -tf hello.tar.gz  //列出hello.tar.gz里面的文件
tar -xvf hello.tar.gz a.php   //解压hello.tar.gz中的a.php文件
tar -xvf -C hello.tar.gz  hellos  //将hello.tar.gz解压到hellos