2011年3月25日星期五

转载:多国联军打老卡




西方多国在踌躇不定,思索再三后,终于下定决心,开始找魔鬼老卡的碴了。
尽管卡扎菲发誓要论持久战,拼个鱼死网破,但人们都在掰着手指头掐算他的末日了。
西方各国以执行联合国决议为名发动战争早就不是第一次了。
这一次和以往相比,最大的特点就是明目张胆地干涉别国内政
人家老卡,一没敢和萨达姆那样发动侵略战争,二没敢再搞恐怖主义,人家不就是对自己国家内部的反对他的人们比较毒,使用了大炮、飞机、坦克吗?
这类事我国也干过,历史上很多国家都干过,干嘛硬是跟人家老卡过不去?
欺负人家一个小国,看上去确实有点不够爷们。
甚至还有人把这和当年八国联军入侵中国相提并论。
我看说这话的就太不够爷们了。
 我问你:当年大清被八国联军侵犯时,有没有谁死磨硬缠请求人家打进来?
八国联军占领后有谁兴高采烈地欢呼过?
你看看今天利比亚解放区的那些老百姓乐成那个样子,多国联军就跟他们的大救星似的。
你以为那些老百姓都是汉奸卖国贼啊?
 我问你,1942年在中国河南有没有发生过五万饥肠辘轱的灾民把一个师的国民党军队缴械,欢迎日本鬼子驻下的事情?
你说那些农民都是汉奸?
我看今天在利比亚发生的事情,也跟那差不多。连我都觉得多国联军确实不该往别国扔炸弹。
 但谁要你老卡先往你自己国家的老百姓头上扔炸弹的呢?
你别跟我说一国主权不容侵犯,更别来不许干涉别国内政那一套。
是的,每个国家确实都有自己选择国家模式的权利,但我看不出哪个国家有选择使用飞机、坦克和大炮屠杀自己国家老百姓的权利。
 这世界上有任何一部宪法授权政府可以使用飞机、坦克和大炮屠杀自己国家的老百姓吗?没有。
那当卡扎菲用坦克、飞机、大炮来镇压本国游行示威的人群,雇佣外国军队扫射街道上的人群时,他凭什么说他还是利比亚的合法政府?
一个政府连这种伤天害理的事都做得出来,那就别管人家外国要武装干涉了。
活该! 这种暴君、专制独裁者,打了就是打了。
谁叫他作恶在先?
不说大道理,来讲个小道理。
很久以前,我们这些大男人在家里是可以随便打老婆孩子的。
当时的男人都说:我自己的孩子,我娶的老婆,那就是我的私产,我为什么不可以打骂、虐待、乃至杀戮?
 确实,很久以前,在我国以及世界上绝大多数国家,这是天经地义的事情。 
我家的内政不容外人干涉。
后来,社会进步了。
由于你一直都毒打你的老婆,虐待你的孩子,你老婆开始反抗了,告状了,你孩子逃跑了好几次了,你就把他们往死里揍,都快把他们打残废或者打死了。
终于有一天,警察叔叔来了,说你不可以这样做。
你说警察无权干涉内政,因为这是我的家,我的老婆,我的孩子。
就算我是个强盗,也是在自家里强盗,关你警察屁事?
 我和邻居还是遵守和平共处五项原则的嘛。
 警察听你这么一说,当场把你给铐起来,送到监狱里去了。
 你再说那个警察公报私仇、滥用职权,想霸占你的妻女也没用。
人家可没诬陷你。
 法官大人说:即使你娶的老婆,你自己生的养的孩子,外人也有管闲事的权利。
你不服气吗? 那就请到另一个星球上去吧。
这叫什么?
这就叫社会文明,或者普世价值。
 你服气也好,不服气也好,世界只会向前进,不会向后退。
 你别来棒头底下出孝子那一套老黄历了。
你就是明知小孩子在外面学坏你也不能打!
你就是当场抓住你老婆红杏出墙你也不能打她。
这就叫人权。
这个道理拿到国际上一样适用。
这多国联军不是轰炸利比亚了吗?
你会说他们不安好心,为的是利比亚的石油。
你会说法国的萨卡奇为了拉选票而打老卡。
So what? 就连我都看不出这个军事行动最终会有什么好结果,搞不好穆斯林极端主义出来夺权,利比亚陷入混乱,也是可能的。
即便如此,这个老卡还是该打。
 至于明天的事情,那有上帝来安排。
你凭什么就一口咬定利比亚人民都是些扶不起来的阿斗、傻瓜?
 那埃及昨天不是选举了吗?
你很生气?
确实,老卡最近十几年很安分,没再招谁惹谁了。
这一次多国联军打他,说到底就是因为他观念太落后,跟不上时代潮流。
 邓小平有一句十分著名的话:落后就要挨打
 他这句话一直被官方曲解为GDP或经济落后就要挨打。
 这种解释不能说明为什么曾是亚洲第一的北洋水师被小日本打得落花流水,
也无法解释为什么强大无比的日本太平洋海军会在中途岛一战被相对弱小的美国海军打得一败涂地,
更不可解释为什么当年生产力十分落后的苏联居然能够打败不可一世的德军。
落后就要挨打说的是一个国家如果在观念、文化、国家制度落后,就一定要挨打,这个观点我是从《乌有之乡》那里学来的。
利比亚这一次挨打就是这个原因。
旁边的国家都**花开了,你卡扎菲起码跟叙利亚那样象征性地搞点民主改革,也不至于这么惨。
都什么年代了,还学****那一套,活该!
毛泽东也有一句很出名的话:得道多助,失道寡助
这句话拿到今天还是正确的
独裁专制政权在25年前在世界上还十分普遍,如今是越来越孤立,总共就剩下那么几个国家了。
要是有人去攻打那那几个独裁专制国家,谁不拍手叫好!
什么和平共处五项原则,那是鬼话!
世界上有谁愿意和北韩、利比亚这种把自己的人民往死里折磨的国家和平共处?
网上有人今天很生气,骂美国、法国、英国都是些流氓国家。
 我看就算是,又咋啦?
人家就是耍流氓,也不对自己国家的人民耍流氓,不是吗?
人家想着法子到处为自己国民捞好处,至少对得起自己的国民,不是吗?
人家飞机大炮坦克都是对外的,从不拿坦克轧死自己的老百姓,至少对自己人民不做伤天害理的事,不是吗?
难怪这世界上每天都有成千上万的人向这些流氓国家移民。
 有谁要往北韩、利比亚、伊朗移民吗?
依我看,跟自己老百姓耍流氓的国家才是真正的的流氓国家。
在这个世界,人权总的说来不大于主权,但人权确实大于任何一个政权用机关枪、坦克、飞机、大炮来屠杀本国百姓的权利。
这一次多国联军轰炸利比亚,它唯一的意义就在于:没有这个军事介入,今后别的国家也会效仿卡扎菲政权,对示威游行的人们血腥镇压。
别的,什么都没达到。
所以,从今以后,任何试图屠杀本国百姓的政权都要三思而行了。
世界又向前进了一步。 

2011年3月16日星期三

activex的数字签名

最近我正在研究ActiveX技术。我使用Delphi 7创建了一个具有ActiveForm的ActiveX控件应用程序。这个控件产生一个.OCX文件。现在,我需要把这个控件部署在服务器端,在用户浏览网页并选择安装这个控件的时候,用户的IE才会下载、安装并显示这个控件。
 
    但是我的控件必须作数字签名以后,IE才会下载安装。问题是如何给ActiveX控件作数字签名呢?现将具体步骤与大家分享。
 
    首先我需要一套做数字签名的工具。如果你没有,可以到以下地址下载:
 
    http://www.cnblogs.com/Files/babyt/SignTool.rar
 
    控件的名字是CustForm.ocx。首先,我们需要创建一个.CAB文件用来把所有需要发布的文件压缩在一起。我们需要一起发布的文件是CustForm.lic文件。它是Delphi在我们创建控件工程的时候为我们生成的。如果不发布这个文件,你的控件即使下载安装成功,IE也无法显示它。为了在一个.CAB文件中发布多个文件,我们必须先创建一个.INF文件。一个.INF文件可以告诉IE,它需要下载的文件和在哪里可以得到这些文件。
 
1. 创建.INF文件
 
    创建一个.INF文件很简单,用记事本程序编写就可以了。我们把我们的.INF文件取名为GMTestX.inf。因为我们要在.CAB文件中放入GMTest.ocx和GMTest.lic这两个文件,所以我们的.INF文件的内容如下:
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[version]
    signature="$CHICAGO$"
    AdvancedINF=2.0
  [Add.Code]
    CustForm.ocx=CustForm.ocx
    CustForm.lic=CustForm.lic  //如果创建Active Form时没有选择Make Conctrol Lincensed 则不会产生.lic文件,那么创建.inf文件时可去掉此行
  [CustForm.ocx]
    file-win32-x86=thiscab
    clsid={C504DF79-C5EC-4314-AC3E-1F770DB81A01}
    FileVersion=1,0,0,0
    RegisterServer=yes
  [CustForm.lic]//如果创建Active Form时没有选择Make Conctrol Lincensed 则不会产生.lic文件,那么创建.inf文件时可去掉此行
    file-win32-x86=thiscab//如果创建Active Form时没有选择Make Conctrol Lincensed 则不会产生.lic文件,那么创建.inf文件时可去掉此行
    FileVersion=1,0,0,0//如果创建Active Form时没有选择Make Conctrol Lincensed 则不会产生.lic文件,那么创建.inf文件时可去掉此行
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    在这个.INF文件的[version]部分有两句代码。signature="$CHICAGO$"表示这个.INF文件和Windows95或其后版本和Windows NT 4.0或其后的版本兼容。AdvancedINF=2.0表示Advpack.dll的版本,IE 4.0或其后版本必须导入这个文件去解析这个.INF文件。在这里要求的版本是2.0。
 
    至于[Add.Code]部分,其中列出了在一个.CAB文件中需要下载的文件,并把这些文件的详细信息映射到其后对应的各个部分。比如[CustForm.ocx]部分中的信息就是下载CustForm.ocx这个文件的相关信息。
 
    在[CustForm.ocx]部分的第一句代码告诉IE,CustForm.ocx文件就包含在这个.CAB文件中。第二行注明了这个控件的CLSID号。第三行是控件的版本号。第四行告诉IE需要使用前面的CLSID号来注册这个控件。[CustForm.lic]部分就不多讲了。
 
2. 创建.CAB文件
 
    在命令行中输入以下代码把CustForm.ocx、CustForm.inf和CustForm.lic这三个文件添加到一个.CAB文件中,这个文件取名为CustForm.cab:
 
cabarc.exe -s 6144 N CustForm.cab  CustForm.ocx  CustForm.inf  CustForm.lic
 
3. 创建证书文件
 
    在命令行输入以下命令:
 
makecert -sv CustForm.pvk -r -n "CN=SunStar" CustForm.cer
 
4. 转换证书:
 
cert2spc CustForm.cer  CustForm.spc
 
5. 创建另外一个自签名证书,叫test.cer
 
    在命令行中依次输入以下两条命令:
 
makecert -sv test.pvk -r -n "CN=SunStar" test.cer
 
cert2spc test.cer test.spc
 
6. 从test.cer创建test.ctl文件
 
makectl test.cer test.ctl
 
7. 用CustForm.pvk和CustForm.spc这两个文件给test.ctl作数字签名
 
signcode -v CustForm.pvk -spc CustForm.spc test.ctl
 
8. 把test.ctl移动到受信系统存储区
 
certmgr -add -ctl test.ctl -s trust
 
9. 把CustForm.cer移动到根系统存储区
 
certmgr -add -c GMTestX.cer -s root
      
10. 用test.pvk和test.spc给CustForm.cab作数字签名
 
singcode -v test.pvk -spc test.spc  CustForm.cab
 
11. 检查文件是否通过验证
 
chktrust CustForm.cab
 
如果文件通过了数字签名检测,系统会询问是否安装这个文件,这时候一定要选择安装,整个签名过程才能完成。
 
    执行以上步骤的过程中,有时候需要用户输入密码。用户可以任意选择一个密码,比如12345。
 
    接下来,我们把一个调用Delphi的Web Deploy命令产生的文件CustForm.htm复制到C:\Inetpub\wwwroot\OurHTML文件夹中,并修改其内容如下:
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<HTML>
<H1> 群组配置 </H1><p>
<HR><center><P>
<OBJECT
  id  =CustForm  
   classid="clsid:7E302B32-912F-427B-98D0-03AB15716E81"
   codebase="/OurCAB/CustFormX.cab#version=1,0,0,0"
   width=100%
   height=80%
   align=center
   hspace=0
   vspace=0
   
   <param   name=Invaild         value=Invaild>  
    <param   name=wsroot          value=http://192.168.0.56:8080/adms/services/> <!--value={TMPL,OUTPUT,COND}-->  
>
</OBJECT>
</HTML>
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~