正在加载...
分页: 172/186 第一页 上页 167 168 169 170 171 172 173 174 175 176 下页 最后页 [ 显示模式: 摘要 | 列表 ]
来源:安全中国

二进制转十进制,十进制转二进制的算法

十进制转二进制:  
用2辗转相除至结果为1  
将余数和最后的1从下向上倒序写 就是结果  
例如302  
302/2 = 151 余0  
151/2 = 75 余1  
75/2 = 37 余1  
37/2 = 18 余1  
18/2 = 9 余0  
9/2 = 4 余1  
4/2 = 2 余0  
2/2 = 1 余0  
故二进制为100101110

二进制转十进制  
从最后一位开始算,依次列为第0、1、2...位  
第n位的数(0或1)乘以2的n次方  
得到的结果相加就是答案  
例如:01101011.转十进制:  
第0位:1乘2的0次方=1  
1乘2的1次方=2  
0乘2的2次方=0  
1乘2的3次方=8  
0乘2的4次方=0  
1乘2的5次方=32  
1乘2的6次方=64  
0乘2的7次方=0  
然后:1+2+0  
+8+0+32+64+0=107.  
二进制01101011=十进制107.

一、二进制数转换成十进制数  
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

二、十进制数转换为二进制数  
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。  
1. 十进制整数转换为二进制整数  
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2.十进制小数转换为二进制小数  
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。  
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。  
回答者:HackerKinsn - 试用期 一级 2-24 13:31

1.二进制与十进制的转换  
(1)二进制转十进制
方法:"按权展开求和"  
例:  
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10  
=(8+0+2+1+0+0.25)10  
=(11.25)10  
(2)十进制转二进制

· 十进制整数转二进制数:"除以2取余,逆序输出"  
例: (89)10=(1011001)2  
2 89  
2 44 …… 1  
2 22 …… 0  
2 11 …… 0  
2 5 …… 1  
2 2 …… 1  
2 1 …… 0  
0 …… 1  
· 十进制小数转二进制数:"乘以2取整,顺序输出"  
例:  
(0.625)10= (0.101)2  
0.625  
X 2  
1.25  
X 2  
0.5  
X 2  
1.0  
2.八进制与二进制的转换  
例:将八进制的37.416转换成二进制数:  
37 . 4 1 6  
011 111 .100 001 110  
即:(37.416)8 =(11111.10000111)2  
例:将二进制的10110.0011 转换成八进制:  
0 1 0 1 1 0 . 0 0 1 1 0 0  
2 6 . 1 4  
即:(10110.011)2 =(26.14)8  
3.十六进制与二进制的转换
例:将十六进制数5DF.9 转换成二进制:  
5 D F . 9  
0101 1101 1111.1001  
即:(5DF.9)16 =(10111011111.1001)2

例:将二进制数1100001.111 转换成十六进制:  
0110 0001 . 1110  
6 1 . E  
即:(1100001.111)2 =(61.E)16  
来源:赛迪网  作者:李铁军

无知者也无畏,经常有人说,我不怕木马,我也没可啥可偷的,中毒就格式化。但就因对信息安全意识的淡薄,恰恰给攻击者带来无尽的肉鸡资源,同时,也会让自己付出惨重的代价却浑然不觉。本文讲述“肉鸡”电脑存在的“商业价值”,由此你可了解:为什么攻击者这样热衷于攻击普通人的电脑,把别人的电脑变成“肉鸡”。信息安全中提到的肉鸡,当然不是吃饱肚子的那种。

  谁都不希望自己的电脑被他人控制,但是很多人的电脑是几乎不设防的,很容易被远程攻击者完全控制。你的电脑就因此成为别人砧板上的肉,别人想怎么吃就怎么吃,肉鸡(机)一名由此而来。

  为什么攻击者热衷于获得他人电脑的控制权呢?控制别人的电脑,有什么用?他也搬不走,不还在我家里放着么,很多对电脑安全一无所知的人这样看。

  本文试图用简单的描述,解释“肉鸡”的“商业价值”,了解这些,你就知道,一个陌生人的电脑对攻击者有多少诱惑。

  1.盗窃“肉鸡”电脑的虚拟财产

  虚拟财产有:网络游戏ID帐号装备、QQ号里的Q币、联众的虚拟荣誉值等等。虚拟财产,是可以兑现为真实货币的,多少不限,积累起来就是财富。

  2.盗窃“肉鸡”电脑里的真实财产

  真实财产包括:网上银行,大众版可以进行小额支付,一旦你的网银帐号被盗,最多见的就是要为别人的消费买单了。此外,还有网上炒股,证券大盗之类的木马不 少,攻击者可以轻易获得网上炒股的帐号,和银行交易不同的是,攻击者不能利用偷来的炒股帐号直接获益,这是由股票交易的特殊性决定的。不然,网上炒股一定会成为股民的噩梦。

  相当多的普通电脑用户不敢使用网上银行,原因就是不了解该怎样保护网上银行的帐号安全。事实上,网上银行的安全性比网上炒股还要强很多,网上炒股则几乎是没有安全措施的。正确使用网上银行,安全性和便利性都是有保障的。

  3.盗窃他人的隐私数据

  陈冠希事件,相信大家都知道,如果普通人的隐密照片、文档被发布在互联网上,后果将同样十分严重。利用偷来的受害人隐私信息进行诈骗、勒索的案例不少见。

  如果偷到受害人电脑上的商业信息,比如财务报表、人事档案,攻击者都可以谋取非法利益。还有相当一部分攻击者试图控制受害人的电脑摄像头,满足偷窥他人隐私的欲望。

  4.可利用受害人的人脉关系获取非法利益

  你或许认为你的QQ号无足轻重,也没QQ秀,也没Q币。实际上并非如此,你的QQ好友,你的Email联系人,手机联系人,都是攻击者的目标,攻击者可以伪装成你的身份进行各种不法活动,每个人的人脉关系都是有商业价值的。

  最常见的例子就是12590业务利用偷来的QQ号群发垃圾消息骗钱,还有MSN病毒,自动给你的联系人发消息骗取非法利益。

  5.在肉鸡电脑上种植流氓软件,自动点击广告获利

  这种情况下,会影响你的上网体验,相信所有人都很讨厌电脑自动弹出的广告。攻击者在控制大量肉鸡之后,可以通过强行弹出广告,从广告主那里收获广告费,流氓软件泛滥的原因之一,就是很多企业购买流氓软件开发者的广告。

  还有的攻击者,通过肉鸡电脑在后台偷偷点击广告获利,当然,受损的还是”肉鸡“电脑。当然,还有花了冤枉钱的广告主。他购买的广告,全被无效的机器点击给骗走了。

  6.以肉鸡电脑为跳板(代理服务器)对其它电脑发起攻击

  黑客的任何攻击行为都可能留下痕迹,为了更好的隐藏自己,必然要经过多次代理的跳转,肉鸡电脑充当了中介和替罪羊。攻击者为传播更多的木马,也许会把你的电脑当做木马下载站。网速快,机器性能好的电脑被用作代理服务器的可能性更大。

  7.“肉鸡”电脑是发起DDoS攻击的马前卒

  DDoS,你可以理解为网络黑帮或网络战争,战争的发起者是可以获取收益的,有人会收购这些网络打手。这些网络黑帮成员,也可以直接对目标主机进行攻击,然后敲诈勒索。“肉鸡”电脑,就是这些网络黑帮手里的一个棋子,DDoS攻击行为已经是网络毒瘤。


  总之,“肉鸡”电脑是攻击者致富的源泉,在攻击者的圈子里,”肉鸡“电脑就象白菜一样被卖来卖去。在黑色产业链的高端,这些庞大”肉鸡“电脑群的控制者构筑了一个同样庞大又黑暗的木马帝国。
Tags:

PHP的面向对象编程

[ 2008/06/13 11:23 | by selboo ]

 综述

  PHP的面向对象编程是进行项目开发时常用到的方法。本节我们将要介绍如何在PHP中进行面向对象编程(OOP,Object Oriented Programming),并说明如何通过使用一些OOP的概念和PHP的技巧来减少编码和提高质量。在应用PHP类前,请你查阅相关的面向对象编程书籍,了解面向对象及类的相关基础知识。

  如何建立一个类及类的实例对象?

  在PHP中通过类来完成封装,我们先看一个简单的例子:
  
    class ClassName {
    //定义数据成员用"var",数据成员可以是一个整数,一个数组,一个相关数组(associative array)或者是一个对象
    var $value;

    //方法在类中被定义成函数形式,在方法中访问类成员变量时,可以使用$this->name ,比如$this->setValue
    function setValue($v) {
      $this->value=$v;
    }

    function getValue() {
      return $this->value;
    }
  }

  //创建一个对象用"new"操作符
  $obj=new ClassName;
  $obj->setValue("Hello,PHP world!");
  $obj->getValue();
  ?>

  继承用"extend"关键字。例如:

        class HelloPHPWorld extends ClassName {
      var $message;
      function setMessage($msg) {
        $this->message=$msg;
      }
      function getMessage() {
        return $this->message;
      }
    }
    ?>  

  "HelloPHPWorld"类的对象现在拥有了父类(ClassName)的全部的数据成员及方法,另外还有自已的数据成员和方法。

  我们可以使用:

    $obj2=new HelloPHPWorld;
    $obj2->setValue("I love world!");
    $obj2->setMessage("I love PHP!");  

  PHP现在还不支持多重继承,所以不能从两个或两个以上类派生出新的类来。

  如何在派生类中重定义一个方法?

  我们可以在派生类中重定义一个方法,如果我们在"HelloPHPWorld"类中重定义了getValue方法,我们就不能使用"ClassName"中的getValue方法了。如果我们在派生类中声明了一个与基派同名的数据成员,那么当我们处理它时,它将"隐藏"基类的数据成员。

  如何在类中定义构造函数?

  构造函数是一个与类名同名的方法,当创建一个类的对象时,该函数会被调用以用来初始化对象,例如定义一个类:

        class ClassName {
      var $value;
      function ClassName($v) {
        $this->value=$v;
      }
      function setValue($v) {
        $this->value=$v;
      }
      function getValue() {
        return $this->value;
      }
    }
    ?>  

  上例中,类中的成员函数ClassName即一个构造函数,现在我们可以这样创建对象:

    $obj=new ClassName("Hello,PHP world!");

  将参数传递给构造函数,构造函数则会自动地将"Hello,PHP world!"赋值给函数中的数据变量value。构造函数和方法都是普通的PHP函数,所以可以使用缺省参数。

    function ClassName($k="welcome",$v="Hello,PHP world!")
  接着:
    $obj=new ClassName(); // $key="welcome",value="Hello,PHP world!"
    $obj=new ClassName("I love PHP!"); // $key="welcome",value="I love PHP!"
    $obj=new ClassName("First","I love PHP!"); // $key="First",value="I love PHP!"  

  缺省参数使用C++的方式,参数是从左到右赋值的,如果传入的参数少于要求的参数时,其余的将使用缺省参数。

  当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基类的构造函数,你必须要在派生类的构造函数中显式调用。可以这样做是因为在派生类中所有父类的方法都是可用的。

        function HelloPHPWorld() {
      $this->message="Hello,PHP world!";
      $this->ClassName();
      //显式调用基类构造函数
    }
    ?>  

  在PHP中没有标准的方法来实现抽象类,但是如果需要这个特性,可以通过定义基类,并在它的构造函数后加上"die" 的调用,这样就可以保证基类是不可实例化的,现在在每一个方法(接口)后面加上"die" 语句,所以,如果一个程序员在派生类中没有覆盖方法,将引发一个错误。而且因为PHP 是无类型的,所以可能需要确认一个对象是来自于基类的派生类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在接收到一个对象参数时校验这个值。




[下一页]

  如何在PHP中实现析构函数功能?

  在OOP中,我们可以重载一个方法来实现两个或重多的方法具有相同的名字,但是有不同数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,没有析构函数,所以通过类型重载或者通过参数的个数不同来重载也没有作用。

  有时在OOP中重载构造函数非常好,这样可以通过不同的方法创建对象(传递不同数量的参数)。而在PHP中,怎么去实现同等的功能呢?技巧如下:

        class Myclass {
      function Myclass() {
        $name="Myclass".func_num_args();
        $this->$name();

        //注意$this->name()一般是错误的,但是在这里$name是一个将被调用方法的名字
      }
      function Myclass1($x) {
        ……
      }
      function Myclass2($x,$y) {
        ……
      }
    }
    ?>  

  通过在类中的额外的处理,使用这个类对用户是透明的:

    $obj1=new Myclass(''1''); //将调用Myclass1
    $obj2=new Myclass(''1'',''2''); //将调用Myclass2  

  如何在PHP中应用多态性?

  多态性在象PHP这样的解释语言是非常容易和自然的:

        function niceDrawing($x) {
      //假设这是Board类的一个方法
      $x->draw();
    }

    $obj=new Circle(3,187);
    $obj2=new Rectangle(4,5);

    $board->niceDrawing($obj);
    //将调用Circle的draw方法

    $board->niceDrawing($obj2);
    //将调用Rectangle的draw方法
    ?>  

  如何应用序列化(Serializing) 机制?

  PHP不支持永久对象,而在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。PHP 拥有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示。然而,序列化只保存了对象的成员数据而不包话方法。

  例子 :

        $obj=new Classfoo();
    $str=serialize($obj);

    //保存$str到磁盘上
    //几个月以后
    //从磁盘中装入str

    $obj2=unserialize($str)
    ?>  
  恢复了成员数据,但是不包括方法。这导致了只能通过类似于使用$obj2->x来存取成员变量的唯一办法。

  如何使用类进行数据存储?

  对于PHP和OOP,可以很容易地定义一个类来操作某件事情,并且无论何时你想用的时候都可以调用相应的类。我们可以使用OOP或PHP来减少编码并提高质量。

  定义一个产品的类,定义它应该有的方法(例如:显示),然后定义对每一种类型的产品的类,从产品类派后出来(SoundItem类,ViewableItem类,等等),覆盖在产品类中的方法,使它们按我们的预想运作。

  根据数据库中每一种产品的类型(type)字段给类命名,一个典型的产品表可能有(id, type, price, description)等等字段,然后在处理脚本中,可以从数据库中取出type值,然后实例化一个名为type的对象:
    
        $obj=new $type();
    $obj->action();
    ?>

  这是PHP的一个非常好的特性,不用考虑对象的类型,调用$obj的显示方法或其它的方法。不需要修改脚本去增加一个新类型的对象,只是增加一个处理它的类。

  当创建一个$obj的对象时,可以通过$obj2=$obj来拷贝对象,新的对象是$obj的一个拷贝(不是一个引用),所以它具有$obj在当时的状态。有时候,只是想生成一个象obj类一样的一个新的对象,可以通过使用new语句来调用类的构造函数。在PHP中也可以通过序列化,和一个基类来实现,但所有的其它类都要从基类派生出来。

  当序列化一个对象,会得到某种格式的字符串,其中,字符串中有类的名字,可以把它取出来,比如:
    
        $herring=serialize($obj);
    $vec=explode('':'',$herring);
    $nam=str_replace("\"",'''',$vec[2]);
    ?>

  所以假设创建了一个"Universe"的类,并且强制所有的类都必须从universe扩展,可以在universe中定义一个clone的方法,如下:
    
        class Universe {
      function clone() {
        $herring=serialize($this);
        $vec=explode('':'',$herring);
        $nam=str_replace(""",'''',$vec[2]);
        $ret=new $nam;
        return $ret;
      }
    }

    //然后
    $obj=new Something();

    //从Universe扩展
    $other=$obj->clone();
    ?>

  所得到的是一个新的Something类的对象,它同使用new方法,调用构造函数创建出的对象一样。
Tags:

phpinfo跨站脚本漏洞

[ 2008/06/13 11:15 | by selboo ]
By:剑心

漏洞说明: php是一款被广泛使用的编程语言,可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数,许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示,但是phpinfo里存在一些安全问题,导致精心构造数据就可以产生一个跨站脚本漏洞,可以被用来进行攻击。

漏洞成因: phpinfo页面对输入的参数都做了详细的过滤,但是没有对输出的进行charset的指定,而在一些浏览器里如IE7里,你可以让它自动选择编码或者通过一个iframe页面给它指定编码,这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
漏洞来源: http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用: 利用代码如下:


<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
</head>
<body >
<iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">

以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险,因为如果有phpinfo的存在,恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。

漏洞影响: 影响所有版本的php和浏览器IE7
漏洞修补: 建议暂时删除站点的phpinfo页面避免被人利用。
本站内容均为原创,转载请务必保留署名与链接!
phpinfo跨站脚本漏洞:http://www.80sec.com/phpinfo-xss.html
Tags:

中国万网2008免费空间

[ 2008/06/13 09:08 | by selboo ]

  在2008年北京奥运即将来临之际,作为中国最大的互联网基础服务提供商,为助力广大中小企业网上奥运,中国万网继十年前推出“万网计划”后,再次倾情推出“新”万网计划,暨“中国万网2008免费计划”,此次活动主题为“迎奥运,赢万网”。 本次活动通过提供免费的虚拟主机空间、免费域名和相关的系列优惠产品,旨在更加深入的普及互联网应用,帮助更多的中国中小企业抓住奥运契机和科技奥运的大趋势,体验和实践互联网的梦想,融入电子商务潮流,最终通过信息化提升企业的形象和竞争力。
☆ 活动细则
1、每个工作日限量最多送出200套“2008免费套餐”,包括:0元注册.cn英文域名1个一年; 0元获得迎奥主机(100M网页空间)1个一年;同时可获得一次8.8折购买其它特定产品的机会。活动总计10000套,先到先得;
2、活动限时开放时间:工作日上午10:00—下午15:00,每日先到先得,申请了2008免费套餐才能获得8.8折扣优惠券;
3、限新注册直接用户,一个会员ID限只能申请一套2008免费套餐一年服务和享受一次一年8.8折优惠;
4、免费注册域名的用户需要在一个月内将域名指向具体的网站内容,有何问题,联系万网4006008500;
5、活动当期已经有折扣优惠的产品不再享受8.8折优惠;
6、用户如果一个月内不使用免费申请的迎奥主机,则万网会予以注销;
7、万网有权在发布到免费迎奥主机上的网站页面嵌入万网LOGO;
8、为了保证产品能送给有效的用户,真正发挥作用,要求用户注册时提交真实有效的电话,以便我们验证,如果用户提交的电话无法进行联系,我们会将产品予以注销;
☆ 申请流程

1、在本页面点击“参加2008免费计划”2、根据提示先注册会员,再填写产品申请信息;
3、产品申请成功后,可获得一个万网指定产品8.8折优惠券,优惠券自发出时起30天内有效;
4、用户凭8.8折优惠券券按万网产品申请流程可申购指定产品一次;

活动地址:  http://www.net.cn/static/discount/08free.asp
分页: 172/186 第一页 上页 167 168 169 170 171 172 173 174 175 176 下页 最后页 [ 显示模式: 摘要 | 列表 ]