2012年11月14日星期三

真与假,真的那么重要吗?


  经常看到有人跳出来说,某某消息是假的,某某图片是PS的,这都看不出来,傻B。我承认,说出以上的话,的确是会在脑子里生成一种优越感,而且很容易用“人云亦云的家伙”、“没脑子啊你”、“缺乏独立思考能力”等等理由继续攻击下去,痛快一番。
  其实,很多次我都想问这些优越人一句:真假重要吗?

  谣言之所以成为谣言,仅仅因为它与事实不符。事实是否存在,是贴不贴“谣言”标签的关键。但是,所述内容本身并不会因此有任何的改变。
  当大家还没去了解事实到底存不存在的时候,对于这个谣言的理解,就反映了直觉及经验性的判断。而这也正是某些谣言得以流传,而另一些谣言根本没人相信的原因。
  为什么会有这个判断,我认为这才是重要的。换句话说,大家愿意相信什么?

  基本上,大家更倾向于相信:

  • 符合日常生活经验的事情:比如铁球比木球掉落得快
  • 符合心中期许的事情:“本该如此嘛”
  • 更具有公信力的机构的宣称:政府说了……
  • 三观接近的描述:各种信徒
  • 可能会对自己有益和/或避免对自己有害的事情:转发中奖/买盐防辐射
  • 毫不关己、无关痛痒的事情:西安有个薛姓小孩捡了颗玻璃珠……
  • 具有更多论据(但真伪并不确定)的论述:图片好多!
  • 自己力所不能及的事情:到底有没有上帝?
  • 负负得正类的消息:所谓高级黑
  • ……

  这也就是所谓的“谣言的土壤”。在证据不足的情况下,为什么谣言会生根发芽,这就取决于它本身的“营养”。一个事实很容易修改成谣言,只要把其中的具体时间、地点、人物等关键因素进行置换就可以简单做到。优越人、证据人们可以轻易地把这些谣言驳成个筛子。但是这并不妨碍这个事情固有的性质。摸着自己的良心问问自己,如果它是真的,你有什么看法,以及你为什么会有这些看法。

  然后你会发现,即使是抢盐这种事情,都没有看上去那么简单。那么多人真的都吃了脑残片吗?如果有人告诉你,你正处于某种恶性重大疾病的威胁之下,得了那种病只有死路一条,死前身上插满管子,气管被切开口不能言,大小便失禁,生活不能自理,并且还会耗光你的所有家财,倒欠一大屁股债,你会妻离子散、家破人亡,DNA面临被淘汰的厄运,而能预防这个疾病的药物却很便宜……

  在最后,要提醒某些人一件更可怕(但不是没有过)的事:“狼来了”这句话,不只有放羊的小孩会讲。在我们这个科技的时代,狼,也会讲!

2012年11月7日星期三

荒野求生:如何寻找hosts的可用IP

hosts文件经常因为这样那样的原因而失效。有的时候的确是IP地址变了,也有的时候是因为伏地魔的封锁列表又更新了。不管是哪种原因,我们都得重新寻找一个可用的IP。

最简单的方法,当然是做伸手党——找别人要。不过这对于IP地址本身是一种风险。知道的人越多,影响就越大,于是食死徒也就越有可能找到它,并且干掉它。并且有的时候一个人孤立无援,联系不到别人的时候,总不能束手待毙啊?!所以,最好还是自己动手。


如何寻找漏网之鱼

有的公司或组织实力比较强,一个域名有好多台服务器。伏地魔其实很懒,并没有发现所有的服务器。我们如果能找到那些漏网之鱼,就可以继续让hosts再飞一会儿了。

找漏网之鱼,通常需要一些工具。
只会ping是不够的,ping的本意并不是用来作域名解析。ping一次只能拿到某个域名的一条A记录,但实际上出于负载均衡的角度考虑,大公司的域名通常都会有多个A记录。
换用高级一点的工具,例如nslookup,就能一次拿到多个IP地址了。要是污染很强,也可以抓包。多请求几次,手头的地址列表就比较全了。

还要提醒的一点是:DNS服务器一定要用可靠的境外货,比如Google的8.8.8.8/8.8.4.4。慢是慢一点,但至少不骗人。国内各种ISP提供的DNS,关键时刻会撒谎的。


如何验证找到的IP地址可用

因为还有别的找地址的方法,所以本来是想在后面谈这个问题的。但首先要验证地址是否可用,然后才会去考虑换一种方法,于是还是提前在这里来讲吧。

验证地址是否可用,首先就是ping。因为ping值和丢包率也是一个要重点考察的因素——如果你介意网速的话。接下来还要拿telnet看看443端口有没有被无理由地reset掉。
根据验证结果,大致有以下几种情况:

  1. 能ping通,443都通:恭喜你,十有八九是找到了。
  2. 能ping通,443不通:服务器就没开HTTPS服务。就算80端口可用,但因为会被关键词审查,可用性不高。
  3. 能ping通,443被封:这种就是属于被【蹲守】了,换别的吧。
  4. 不能ping通,443通:除了不容易测速,其它都还不错,而且隐蔽性更高一些,也就是说更不容易被干掉。
  5. 不能ping通,443不通:被IP黑洞了,换别的吧。

以上只是简单地测试连通性。如果连通性都有问题,那这个IP地址也就可以不用考虑了。但仅仅能连通,并不意味着可用。最终,还是得替换到自己已有的hosts里面去实地测试一下,才知道好使不好使。有的时候,新IP换上去会报HTTPS证书不对,但因为是同一个域名下的主机,强行确认后也许还能用。但有的就不行,无法通用,只能丢弃再找。


找到的地址都被封了怎么办

先别气馁。有的跨国公司的实力相当强,同一个域名针对不同的国家或地区会有不同的IP地址作为镜像。可以用搜索引擎,也可以借用网上某些在线域名解析服务,来找这些我们从本地可能无法获得的IP地址。比如Google在日本的IP,就可以拿来一用,速度也不慢。


还是找不到怎么办

好吧。我们承认光头塌鼻子蛇佬的手下也有认真负责的变态疯子:有可能某个域名无论国内还是国外的地址都被干掉了。但是,某些公司的实力实在是非常的强大(比如Google和Facebook)。它们部署了如此多的服务器,并且形成了【云】,以至于每台服务器都能够用来干其它服务器的事情。我们只要找到了某一台属于这个公司的服务器,不管它存放在哪个角落,目前被用来从事什么冷僻的工作,我们都可以让它来为我们服务。怎么样?有点儿范纽文用传感器来对抗易莫金人的感觉了吧?

根据服务的【云】化程度不同,可用的服务器数量也有所不同。Google可用的服务器就相当的多,Facebook就要少得多,Amazon我没有评估过,相信也不少。那么,怎么找到这些被藏起来的服务器呢?一般有下面这些办法,各位可以补充:

  • 解析其它域名:很多人觉得,找hosts就必须找指定域名的对应IP,否则就是“张冠李戴”用不上。对于普通网站,这个结论可能是对的。但对于架构于云服务之下的Web站点,其实大多数服务器都是通用的。比如plus.google.com的IP地址可能被封干净了,但随便找个www.google.com.au解析出来的地址,放在plus.google.com身上就能用。而魔头是难得去管别的大陆上的事情的。
  • Chrome的DNS记录:有一些已经广为人知的域名/主机名,被大统领盯得很紧。但新启用的、生僻的就未必。这些主机名的解析结果,都会在Chrome中留下记录。常常留意,或许就能发现Google新的主机IP(的地址段)。
  • 根据已知IP推算:这种规模的公司,服务器一放就是好几百台,而且为了方便管理,常常都放在一个机房,机柜挨着机柜。所以IP地址通常也是靠在一起的。如果我们知道了某个IP属于Google,那么完全可以对它附近的两、三个C段地址进行一下扫描,看看哪些能ping通,哪些443开着。这种时候,通常需要SuperScan(吐个槽:我觉得3.0比4.0好用)或者nmap之类的工具协助一下。


我猜我猜我猜猜猜

说了这许多,其实大概的思路都差不多:大胆地联想,大胆地猜,猜中了就赚了。
接下来讲一个综合运用的思路:

首先,如果我们从某个Google的已知域名,解析并(按照上面说的方法)推算出了一个以前没有公开在hosts中使用过的IP。那么,还可以尝试通过反向解析得出它的主机名。可能是个类似xg-in-g17.1e100.net(纯举例,非实际存在的主机名)之类的名称。用whois可以很简单地确认1e100.net这个域名是属于Google的。

然后,用nslookup也许会发现这个主机名有不止一个的IP地址。其中一个是我们知道的,另一些是我们不知道的。不知道的那些可以拿去直接验证,就算不可用,也可以拿去从事下一轮推算猜测嘛。

而且,这个主机名也是引人遐想的。有xg-in-g17.1e100.net,那可不可以有xg-in-g18.1e100.net?拿1e100.net去搜索引擎上搜一下,还会发现许多不同的主机名。

总之,继续发挥想象力,找出更多的IP来吧!但是尽量不要声张哦,要低调!

2012年10月26日星期五

GFW临时升级设置,演习?


2012年10月26日上午11时左右,Google北京服务器的IP段再次出现异常,但这次的异常有着与以往不一样的情况。

简单地说,GFW升级设置了。这次应该是覆盖了203.208.45/46/47.*中的所有IP(其中45段全部被设IP黑洞),并且针对443端口采用了特殊的屏蔽手段。体现为IP或许可以ping通,但telnet 443端口大部分情况下超时(不是连接重置)。而80端口则畅通无阻,但可想而知所有的非加密HTTP数据包肯定都会接受GFW的关键词过滤等内容审查,随之而来的就是小黑屋。

少数时候有HTTPS包可以漏过(低于5%),多次尝试telnet发现偶尔可以建立连接。在开启了SPDY的Chrome上体现为页面很难刷开,但一旦刷开则该站点就此畅通。应该是因为SPDY的长连接会话机制保障了后续不会有握手包,从而避免了被干扰所致。这从某个侧面也反映了这次的封锁技术是以监视并干扰SYN/ACK包为主,并不针对所有类型的数据包(估计忙不过来)。

猜测可能是之前Tor项目组检测到的GFW新研制的HTTPS探测技术(或者是某种类似的技术)投入了使用。(估计)其原理在于发现HTTPS(443端口)的SYN包之后,GFW自身也发HTTPS连接请求去探测该端口可能会返回什么内容。一旦审查到内容有害,就干扰TCP握手过程,丢弃匹配地址组的SYN/ACK包。并且从测试的表现看来似乎有小黑屋效应,也就是说之后一段时间都会无法连通443端口,但休息一阵子后第一次连接的成功率很高。

目前看来这个手段的效果还不错,虽然还有漏网之鱼,但至少可以消磨掉绝大部分人的耐性,并让决意翻墙者苦不堪言。但HTTPS探测需要与服务器建立真实有效的SSL连接,还要处理加解密相关事宜。对于以全体压制为原则的GFW设备而言,计算资源(主要是CPU)的耗用可能会相当大。这一方面可以说明为什么会有漏网之鱼,另一方面也解释了为什么会有小黑屋机制作辅助。可以预言这种手段短期内还不会投入日常使用,更多可能出现在特殊时期临时高压维稳。

总之,这几个IP段在18大期间很可能会被咬住不放,不过分赃大会之后应该会松口。但一旦该手段被启用,目前通过hosts+HTTPS翻墙的人,应对措施应该只有换别的IP,要不就得耐心点,多刷刷页面了。
真心祈祷大家不要再公布可用的IP地址了,公布一些就少一些啊!

下午开会去了,回来(16时)发现这些IP段已恢复到之前的状况。目前估计有以下的可能:
1.HTTPS探测功能需要GFW去干一些很费CPU的事情,相关人员发现撑不住,最后还是放弃了。
2.为了关键那几天能顶上用场,在搞演习,测试效果。

2012年10月25日星期四

头一次埋彩蛋哩


在改某个Bug的时候,需要通过已知的HWND来判断该子窗口是不是一个DateTimePicker控件。办法很简单,只要给这个子窗口发一个DateTimePicker控件的特定消息,如果返回值正确,那么就认为猜对了。

但是在选择这个【特定消息】的时候,我犯了难。DateTimePicker支持的消息本来就不多。为了避免对正在编辑的数据带来扰动,只能选择GETXXX之类的消息。并且这个消息还得有定义良好的返回值,用于鉴别消息是不是发对了人。

一开始我选的是DTM_GETSYSTEMTIME,这货能返回当前编辑的时间。但我发现控件一旦响应了这个消息,键盘输入就像按过回车一样被COMMIT过了,导致年份之类的多位数字根本输不完整。回头看了看DTM_GETMCCOLOR,又无法确定返回值是不是能够鉴别出来。有个DTM_GETDATETIMEPICKERINFO倒是看上去挺好,可惜只支持VISTA往上。最后我选择了DTM_GETRANGE。

DTM_GETRANGE可以返回设计者在IDE上给DateTimePicker控件定下的最大/最小值。所以我只要把最小值设一个特定的日子,然后看看返回值正不正确就OK。实验下来对输入也没有扰动,是个很好的选择。那么,日子选哪一天呢?

……我敲入了 1989-06-04

2012年10月22日星期一

简介GFW的三板斧

上次写了一篇《翻墙菜鸟指南》,讲的主要是一些道理和原则之类的东西。这次来一篇偏技术一点的东西,讲讲GFW用来对付屁民的手段,我称之为GFW的【三板斧】。


零、前言
首先要声明的一点是:GFW并不是一个单独的设备,而是一个系统。不要把它想象成接入网络的一台类似交换机的东西那么简单。它可能是由数个设备,在数个层面间协同工作的结果。可以这样理解:GFW就是目前在技术上针对所谓【有害信息】的屏蔽过滤技术的一个集合体。


壹、DNS污染
由于大家现在上网基本都通过域名来找到网站,比如www.youtube.com。所以GFW的第一招就是对国内互联网上接入的终端进行DNS污染,让终端拿到的IP地址是错误的,于是就当然无法访问被墙的网站了。

GFW要污染DNS通常有两个办法:

  1. 如果DNS服务器能够被控制(比如电信、移动等国内ISP提供的DNS),那么GFW会让该服务器直接返回一个错误的结果。
  2. 如果DNS服务器不受控制(比如Google的8.8.8.8),那么GFW会伪造一个DNS应答包,里面给出的IP地址是错误的。由于这个应答包往往比正确的DNS应答包要来得快(因为不用去查真正的IP地址嘛),于是PC就上当了。
这一招简单有效,就封锁某个网站而言,对付麻瓜足矣。但这招有时候也会有例外。比如GFW发伪造包的时候,终端可能会先收到真正的DNS应答包,那它就白忙活了。稍懂技术的用户也可以通过修改本地hosts文件来强迫终端按修正过的列表进行DNS域名解析,从而使DNS污染完全失效。但没关系,GFW还有下一招……


贰、TCP连接重置
TCP协议中规定了一种包,叫做连接重置包。这个功能被GFW用来拆散所谓“有害”的TCP连接。GFW会先对网络上捕获到的数据包进行审查,一旦发现内容“有害”,就向双方分别发送伪造过发送方的连接重置包。形象地说,就是GFW替你向服务器说了“BYE-BYE”,同时也替服务器向你道了别。由于你的终端和远处的服务器都是好孩子,严格遵守TCP协议,因此也就各自断了连接。

招数其实挺简单,关键在于其触发机制。根据被观察到的行为,GFW通常有以下几个工作模式:

1.关键词过滤
这对于HTTP协议尤其有效。因为HTTP包是明文的,很容易解析。关键词可能是某个字眼,也可能是某个网站的域名之类。通过在HTTP包里面翻关键词,GFW甚至可以做到对某个网站的某些链接(博文、新闻)进行屏蔽,而不会影响该站的其它内容。
对于Google、Yahoo等不受控制的搜索引擎,GFW大多采用这一招。因为搜索的结果是事先无法预料的,所以“事后追杀”非常必要。
另外,这一招可以很好地应对未知的“威胁”——谁知道哪个国外的“乖乖”网站哪一天发了神经要发一篇“有害”文章呢?一些比较知名的外媒,比如纽约时报中文网之类,就偶尔会有这种待遇。
HTTPS/SPDY协议因为其数据包的内容是加过密的,所以能够有效地避开关键词过滤。但GFW项目组似乎也一直在发展相应的技术来克服这一局限性。

2.IP/端口屏蔽
对于有一些“有害”网站,IP地址已知(并且不多)。GFW就会对这些IP地址进行“蹲守”,重点屏蔽。此时不管你连接过去是干什么,连到什么端口,一律强制“分手”。有的时候GFW也会只针对某些端口开启这个功能,这个就全看方校长怎么想了。

3.关小黑屋
GFW貌似还有一种机制,即如果探测到的某一次“有害”连接(信息/数据包),则针对它的源地址/端口和目的地址/端口,如果再有新的访问请求,先关一段时间的禁闭再说。根据Google上次放出来的视频,这个时间大约有90秒左右。在这段时间内,哪怕是正常的、“无害”的访问请求,GFW也一律给双方强制“分手”。于是,就经常会出现这种情况:NAT下面有人触发了“老鼠夹子”,于是整个公司的人一段时间内都用不了Google,最终导致大量麻瓜弃Google转Baidu。

实际运用中,以上工作模式可能会同时混杂使用。用telnet可以很容易地验证服务器是否被蹲守或关小黑屋了。

其实,个人觉得这一招比较类似于老鼠夹子,不碰它没事,一旦触发,则很难避免被“制裁”。终端还可以通过某种程度的措施来拒绝连接重置包,但服务器因为还要面向非GFW控制区域提供服务,一般不会这样做,所以这招的有效性一直都还不错。对于GFW而言,由于这种“事后追杀”的方式,开销非常小,只是发两个包而已。并且,由于关键词搜索机制带来的“智能化”的感觉,被用得最多最滥的就是它。不得不说,它跟DNS污染联合起来用,效果确实相当好,麻瓜伏下一大片。

只是,被这种招数掐断的连接,断得非常快,作为用户能够很明显地察觉出来与“超时”的不一样,不太容易忽悠成“网络不通”。另外,TCP连接中断了,但服务器却还能ping通(因为ping用的是ICMP协议)。麻瓜们基本上ping还是知道的,这样就更不容易忽悠了。
并且,这个“分手”手段并不是十分的可靠。它得建立在通讯双方都严格遵守TCP协议的基础之上。何况就算连接被拆散了,但双方可能在断掉之前已经互通过了一部分“有害”信息。对于某些人而言,仅仅这样是不够的,于是有了第三招……


叁、IP黑洞
最后这一招就是GFW最后的杀手锏,那就是让网络彻底不通。在通常情况下是针对特定的目的IP地址进行断网,也就是说发往该IP的所有数据包都丢弃不理,好像进入到了一个黑洞一般。最终的结果体现出来是超时,跟对方服务器出问题的感觉很像,因此效果相当不错。

这也就是所谓的“黑名单”模式。据说GFW也可以设置为“白名单”模式,这时候就只有发往名单上的IP地址的数据包才能送达,其余的都被丢弃。这是终极大杀着,我想可能会留到最后用吧。白名单一旦使出来,所有翻墙手段基本上都会失效,但网络的正常使用也大受影响,基本等同于小中华局域网了。

不过,要设置IP黑洞,基本等同于在路由器上改路由表。即使是“黑名单”模式,折腾一次好像动静也比较大。所以一般都是针对重点对象使用。Twitter和Facebook目前就受到这种级别的招待。用tracert/traceroute往往可以看到路由在中间断掉,而不是目标主机无响应。对付这种招数,除了彻底绕开GFW,没有什么别的更好的办法了。


肆、后记
本文的内容系独立撰写,重在普及相关知识。在网上可以搜到一个名为《GFW的工作原理及突破技术》的PDF文档。该文内容更严谨一些,并且图文并茂,有不错的参考价值。

2012年10月19日星期五

一个关于浮点运算的坑


这两天遇到一个很奇怪的问题,后来通过排除法终于把故障点缩小到一句代码,但还是很奇怪:

某个同事以前用VC写了一个DLL用于提供某类通用计算,相当于一个计算模块,由我这边写BCB程序来调用。不过在这次的问题中发现,一旦线程调用过pow()这个C库函数来计算过一个非整数指数的幂,那么这个计算模块接下来同样的参数再次用就会得出不一样的结果。调用过pow()之前是一种结果,调用之后是另一种结果,现象相当稳定。

诡异就诡异在pow()的返回值既没有错,也没有被采用过。比如仅仅一句:
pow(2.0, 3.1);
函数返回值根本没有用来干过任何事情,相当于直接丢掉了。那么按道理来说这行代码应该不会对之前或之后的代码造成任何影响。但它确确实实影响了。
然而指数如果是整数,就不会,比如:
pow(2.0, 3.0);

那个写DLL的同事对此也是一头雾水。怀疑点一度被放在VC/BCB身上,因为它们的CRT不一样。但因为正好有一个测试工具,稍加改造便可以针对计算过程输出详细的结果报表,因此用来比较了一下,发现了问题:出问题的地方,有两个本来应该用来比较的double型输入数据正好是相等的。在pow()调用之前,它们的确被判断为相等。但调用pow()之后,计算结果显示它们被判断为不相等了。

这种事情对于常写浮点运算相关代码的程序员而言是很容易引起警惕的。浮点数不能直接用==之类来比较,必须去判断两数相减的绝对值是否小于某个精度。所以将这个测试结果提交给写DLL的同事之后,很快就定位并解决了问题。
但这里我更关注的是以下几个问题:

  1. pow(2.0, 3.0)和pow(2.0, 3.1)的不同,使我相信CRT肯定对前者作了优化。这种事情,想得通,但后果可能是个坑。
  2. 很明显,CRT在pow()被调用之后,处理浮点数时的行为模式改变了。通过观察_statusfp()的返回值,我发现调用前为0,调用后变成了0x20。但这个0x20是一个Undocumented的东西,哪怕是最新的MSDN上也找不到。并且我通过_fpreset()将状态字变回了0,但计算模块仍然会出错,说明应该还有别的东西也被改了。这个坑是不是VC和BCB联合挖的,目前还不知道。
  3. 如果不知道有这个坑,就可能导致一些大麻烦。在特定的代码逻辑中,这个问题很难通过黑盒测试发现。它可能在很长一段时间内都能工作得很好,直到某一次有个用户算了一个指数带小数点的幂,然后……一切就不一样了。这简直就是逻辑炸弹嘛!让我想起了《深渊上的火》里面可怜的蓝荚和绿茎。
  4. MSDN真心不是完全靠得住的。

在本文最后,还要对提供过重要帮助的Libin Yan表示感谢!并感谢所有关注和评论过这个PO的G+网友!

2012年10月12日星期五

黑客故事2:关于弱口令设备的闲话


家庭路由器都有HTTP的管理界面的。不过我估计给这些人家布网络的人大概都很不耐烦,因为那些用着admin/admin这样密码的路由器,80或者8080端口就这样开在WAN口上,在自己附近的网段上完全是一扫一大片。另外,早期家庭路由器大概厂商这边投入也不够,大部分都偷懒把PPPoE密码写在了网页上。据我当时看下来,什么网件、D-Link、腾达、贝尔,统统中招。唯一做了防范措施的,是TP-Link,这导致我之后没有买过别的任何牌子的小路由。

话说这PPPoE密码我轻易拿到了一大批。要是到了坏人手里头,互联星空就有得赚了。不过我系好人呀,好人我只是去电信营业厅看了看大家的住址,从来没用来干过坏事。不过就算不知道PPPoE的密码,也能干坏事。断网什么的都是小事。当年还没有360,一台没打过补丁的Ghost机器被DMZ暴露在外网是什么情况?简直可以说比裸体美女还惨。

这些年,中国电信大力推广它的定制路由器。无论是管理密码还是无线安全都得到了加强,从这方面我觉得还是应该予以正面的肯定。不过我还是嫌它太烦,让它下岗了。用刀能自杀,也能防身。既然我不是小白,就不需要给我学生剪刀玩吧。

专业级的设备,比如机架式的路由器、防火墙,铁皮壳子,比家用路由器那种塑料玩意儿容易让人觉得可靠。呵呵,看起来可靠,于是某些人就不设密码,23端口开着就往外网上放。哎呀,这种设备要是被扫到那能怪谁?其实我很多次都怀疑这些统统都是蜜罐。23端口开着,弱口令,轻易就能拿到最高权限。哦,被我第一个找到?这世上有这么好的事情?

当然,从这些设备上的情况看来,它们只是被当作傻瓜型设备在使用。SSH没开就不用说了,连私钥都没有,说明SSH从来就没开起来用过。日志也是只开了默认的syslogd。有个单位的硬件千兆防火墙连一条IP过滤规则都没有配,完全当路由器在用,下面接的PC却只有五台。但即使这样,我也只是逛了逛,浏览并学习了一下这些网络设备的命令和界面,除了清掉日志停掉syslogd,不敢做任何改动。没必要自己给自己找麻烦,对吧?

我想说的是,这些设备,完全可能成为僵尸网络的一部分。不要以为只有电脑才能被僵尸网络控制。防火墙不好好设置,比PC还残,关键是你根本想不到它会成为威胁的一部分。为了维护自己网络的安全,你可能还离不开它,但真正的内鬼其实就是它。甚至也许都不是防火墙、路由器。交换机?也有可能。但问一句,你们单位有VoIP网关吗?

黑客故事1:图形验证码上的SQL注入点


有一次,遇到有人在街上发宣传材料。本以为是什么餐馆开张之类,拿回家一看才发现是个类似网络传销的东西。我当然无意参加,但既然是【网络】传销,就必定得有网站和服务器,于是打开电脑看了看。

网站挺简单,就是一些宣传页。但我觉得肯定得有后台系统。果然没多久就被我找到了,PHP+MySQL做的。登录输用户名+密码,另外还有图形验证码,没有SQL注入漏洞。看来开发者对登录这块还是相当注意的。又看了几个页面,还是没有注入点。我想撤,但又有点儿不甘心。向这种非法组织的服务器下手,基本上是没有法律风险的。他们显然不敢报警。所以我又回到登录界面上。在看HTML代码的时候,图形验证码那部分吸引了我。

我发现他们的图形验证码没有用Session来控制,用的是URL传参,GET方式。也就是说在URL中给出了一个数字,然后服务器上返回一个生成的验证码图片。我在表单中也找到了那个数字,试着刷新了一下页面,数字加了1。用旧的URL还是能拿回原来那幅图片,但一旦该图片中的验证码被【使用】过,就不能再拿到了。

这意味着什么?这意味着验证码与这个数字之间有某种联系,某种对应关系。这个联系可能是Hash出来的,但根据现象,更可能是存下来的。我决定赌一把。果然,验证码图片的URL存在SQL注入点。每次读出来的是存起来的四个字母,然后交给PHP生成图片。

也许开发者认为,就算被注入,入侵者面对着四个字母的图片也干不了什么破坏。但他可能忘了有MID这个函数。我利用这个漏洞确认了admin这个用户名确实存在,也拿到了Hash过的密码。不过接下来我收手了。我想再潜伏一段时间再动手。结果一个月之后,我再去看的时候,这个服务器已经不在了,网站也不在了。大概被警方打掉了吧,可惜!

在这个故事里面,我想强调的是,SQL注入每一个地方都要防!哪怕再小的漏洞,也能造成危害,一个都不能疏忽。

2012年9月29日星期六

为了赞成的反对

有一句话,经常被人拿来说。大概是这样的:“不要为了反对而反对”。这样一说了之后,仿佛立刻比所有反对者要高级了一层,高瞻远瞩,高屋建瓴,高举XXXX的旗帜,居高临下,高下立判。

其实呢,这也是一种很常见的伎俩,引导员经常用。这个句子的确有一点讲究,“为了反对而反对”。两个“反对”一出,好像就有点对方犯了“循环论证”错误的意思,进而可以质疑起他的逻辑能力来。如果有聪明人来替他换上一种说法:“我要反对是因为我不同意”,就好得多了。是个正常人恐怕都会觉得,这个挺正常嘛,有什么好荒谬的?

当然了,这话的意思,我不是装作不明白。潜台词不就是:反对的目的还是反对,是低级的目的可笑的行为。换而言之,如果没有更高级的目的,就要受到发话人的批评。不知道从哪个年代开始的坏风气,咱们国家的人要干一件事情,一定得有个伟大、光荣、正确的好理由。直来直去,好像就会很对不住伟大领袖。“为了拉屎而拉屎”这多不好意思?您得说为了施肥、为了增产,在不济,也得是“为了缓解腹腔内压力”才行。于是这样一说,往往就弄得对方自惭形秽,气势上就先怯了。这和上次说的那个“信心与不同声音”的手腕是类似的:拔高标准,然后打击贬低对手。你不是圣人,所以你就是狗!

对这种对手,我个人是相当的痛恨的!想想“学雷锋”是怎么摧毁社会道德观的,想想“子贡赎人”的故事。对方的用意何在,可见一斑。因为你做不到那个高标准,所以你就不要做、不能做,做了就是狗。这种用心其实根本谈不上不善良。扔出这句话的人,往往已经快招架不住了,理论体系已经快崩溃了,只好舞出这种流氓招数来应付。千万别上当!

如果还觉得心中有愧,觉得这话说得还是有几分道理。那么,再来看看下面这两个问题:

1.你真的是在“为了反对而反对”吗?
对方既然说出这话,自然就是替你定了性。但它说的不能算数。做一件事情的理由,只有你自己最清楚。人是高级动物,并不是巴甫洛夫的狗。也许你还不能清楚地总结出来你反对的理由,但是必定是有一个或多个,不可能不存在。所以这句话本身就是伪命题。

2.“为了反对的反对”是不是就没有意义?
从自然法则而言:首先,不存在绝对真理,任何理论都应该有值得修正的地方;其次,竞争导致优胜劣汰,没有竞争只会导致系统退化。即使只根据这两条理论,哪怕是纯粹的“为了反对而反对”也是有存在的必要的。这方面的例子和理论已经多得不能再多,我也不想再提。

其实,我倒是希望引导员们直接地,明白地说:“要为了赞成而反对”。这就对啦!省得我费口舌嘛。

2012年9月13日星期四

美国欠中国钱的真相


很多人,不止芮成钢,都认为美国欠中国钱。上次去听那个“钱瞻”的时候,Weiss评级的老头也拿这个说事,说美国的外债很多,外汇储备很少,于是评级应该降低。而中国的外汇储备很多,外债非常少,评级应该很高。

没错,根据通常的观点,一个人家里要是没存款,又欠了那么一屁股债,那当然应该是不破产也快了。但是这其实是一个很无脑的论调。国与国之间,由于涉及到货币兑换、供求贸易关系等等方面的影响,有些事情并不能简单地与个人之间划等号(有的时候却可以)。那么,我们来看看这个钱是怎么个欠法。


中国生产了很多的商品(产能过剩),但国民穷,消费力不足,买不了这么多(内需不足)。于是就把这些商品卖给美国(出口)。美国人当然是用美元支付了,于是中国手中就有了美元(外汇)。

美元不能直接在国内用啊,否则不就成了美国了?但既然工人生产了商品,还等着拿卖商品的钱来给他们发工资呢。所以这些美元必须得换成人民币(结汇)。美国人手里没有人民币,人民币是中国自己印的啊,没法跟美国换。怎么办?人民币总不可能凭空变出来。除了印钞,别无它法。印多了要通胀,只能有多少美元,就按一个比例(汇率)印多少人民币,然后拿去发工资。而手里的美元当然也不能烧掉,否则不成傻子了?这可是硬通货呢,当然是要放起来呗((外汇储备)。

这也就是为什么说外汇储备其实是未完成的交易导致的。本来,中国卖货给美国,美国也卖货给中国,如果刚好两不相欠,就相当于最原始的以物易物,这是最简单的。但是,往往是中国的货太多(出超/顺差),于是美国只好拿自己的钞票付账。意思大抵就是现在我没有货可以和你卖给我的相抵,于是我给你这些美钞,将来你要看上什么,再拿美钞到我这里来买回去。——当然,末了还得加上一句,如果我愿意卖给你的话。这就是所谓未完成交易。看吧,其实和自然人之间做生意也是差不多的。

顺带说说汇率这个事情。中国目前的汇率是管制的,不敢放开,放开就会跌。因为现在不能用实际的购买力来设定汇率,否则印出来的人民币会更多,通胀(输入型通胀)会更严重。高估本币可以让贸易顺差的后果没那么严重,也就是说让这些外汇没它本来那么值钱。但同时也抬高了本国的贸易成本。因为明明卖出货物换回了可值10元人民币(购买力)的外汇,只敢印6元人民币出来发工资,其实是做了亏本生意啊。

但是,没办法!中国不争气,人民一直很穷,有钱人都移民了。为了让这些刁民不造反,一直都靠把东西卖给美国来维持经济景气。长此以往,手上的美钞就原来越多。现在问题又来了:美国也在一直印钞,印得也不少,就也会有通胀。这些钞票一直放在仓库里,又不能钱生钱(投资),越来越不值钱,总不是办法呀,最好是拿去买点儿什么。

买什么呢?冰岛?人家不肯卖。iPhone?呵呵,给警察是买了不少。算了不说笑了。中国的做法是去做投资,比如买美国的国债。为啥呢?因为美国的国债是用美元来买的,正好。而且美国国家信用比中国好啊。为啥好?打仗你打得过吗?科技?文化?经济?哪个你能强过人家?既然认为美国比较不容易【下课】,风险小,收益稳定,于是就买它的国债咯。换成是个人你也会这么做。

那美国为啥外债高呢?呵呵,因为美国想多些钱花,但又不想印钞票印得让自己国内高通胀。不印钞票怎么办?借别人的呗。借别人的钱,等于之前买别国东西(外贸逆差)花出去的钞票又收回来了,多了张借条而已。

顺带说一句,这个借条(国债)可是很牛X的。中国不买,有的是人买。中国还得提高报价才能买到。为啥这么牛X?因为美国实力牛X。别的国家一合计,手头攒的美元借给美国,比借给其它任何别的国家都要保险。换句话说,其它所有国家都觉得美国应该比自己要死得晚。什么时候这个借条不吃香?美国实力受到它国挑战了,老大变老二了,这个借条有人就要掂量着拿了。但是话又说回来,既然所有国家都借钱给它花,除非美国脑残自个儿玩砸了,或者遇到什么“不可抗力”因素,否则就现在这种借钱扩充自己实力然后再去借更多的钱的玩法,实力第一的宝座很难旁落。

就这样,通过卖国债给别的国家,别人生产的商品给搞到了手,自己拿去买东西的钱又给忽悠了回来,回过头又可以拿去买新的东西。我们知道通胀是由于钞票多了,但现在美国的社会财富也一起增加了,所以钞票多没有问题,低通胀。印钞票的事情由中国来负责,高通胀,该!

美国这种做法,其实是把自己国内的通胀输出到了别的国家,使自己可以在享受低通胀的同时继续大手大脚地花钱(高增长)。说穿了,这就是一种经济掠夺。但你没办法,谁让你不争气?把自己的国民搞得那么穷呢?你要是让你的国民购买力旺盛,国内生产根本满足不了,国外的厂商争相把货送到中国来卖给这些富翁们,甚至不惜为此大打价格战。那时中国就可以这样去掠夺别的国家了。

这就是为什么说国家实力强弱不是看政府,而是看人民。人民没钱的话,政府再有钱,也是只有送给别人花,还要在汇率等问题上被宰一刀份的份。人民有钱的话,政府就算是“债台高筑”,也还有大把大把的银子排着队等着花。


看了这些,应该明白外债和外汇储备是怎么回事了吧?还坚持说美国欠中国钱吗?

2012年9月10日星期一

上海“钱瞻”2012简记


注册
注册时交了在上一家公司的名片,心想反正他们无从查起,偶尔使用一下假身份也不错。
注册完发了一个资料袋,里面有一些宣传材料。有一张是说洪博培因为“不可抗力”的因素来不了啦。其实我从一开始就觉得他是用来宣传和卖票的噱头而已。
8:30入了会场,用身份证抵押领取了同声传译机。没用过这东西,仔细研究了一下,其实就是一个小收音机吧。播音员(译者)就坐在会场内的一个小隔间里面播音。


开幕式
先是MoneyShow的外国女老板上台致辞。演讲的标准腔调,字正腔圆,节奏缓慢。因此一开始我基本都能听懂。但后来讲到经济相关的专业内容,我就跟不上了,只好开传译机听翻译。

然后是Weiss评级的老头儿上台发言。老头儿讲来讲去就一个意思,三大机构把美国和中国的评级搞颠倒了。美国债多,储备少,GDP增速低,应该是C。中国倒过来,应该是A。这个就纯粹是胡说八道了,不知道老头儿的用意何在?

接下来是瑞银的一个老先生。这个老先生对之前的Weiss老头儿的不少说法都予以讽刺,可以说是嗤之以鼻。他严厉地批评了中国政府的财政政策和经济现状,发飙的过程中被下面某人示意后打断……。总之,这个老先生我认为是这次会议唯一讲了心里实话的人,也许是因为他的立场可以比较超然吧。其他人都是来替政府背书的。

上午大会场最后一个上台的是Jakobsen,讲欧洲局势。讲得我瞌睡迷糊,只记得拒绝、抗议什么的。


小会1
大会结束后,上午还有一个小会。基本都是产品推介,我选择了与程序化交易还算比较靠谱的中大期货讲的“期货投资管理”。听下来的收获:

1.粗略了解了国债期货,特别是它的期现套利。
2.了解了一下它所谓的组合期权的思路,对于“期权的最大风险是确定的”有所感悟。
3.了解了一下“对冲”的思路和做法,并再次回顾了套利的思路和做法。


中午
吐槽一下:这么贵的票,中午居然不管饭。要吃自助餐,还得掏60块钱来买。还是去正大广场吃汉堡王吧。


小会2
下午第一个小会是技术教育。我选择了听布林通道的课程,毕竟是创始人来主讲,算是很给MoneyShow面子。布林通道我平时也经常用,自我感觉用法很简单,所以也很好奇这么简单的东西他能讲些什么。果然,主要是下列内容:

1.布林通道的公式是如何推导出来的。
2.根据布林通道衍生出来的指标及其作用。

我一开始坐在中间,结果同一排有人带了小P孩进场。上窜下跳的结果,就是整排座椅都抖个不停。瞪眼无效,最后以我主动换座位告终。
换过座位,又有人坐到前面来挡。挡没关系,挪到旁边就可以。但此人还有狐臭,只好再次换座位。
会议内容可能较受欢迎,期间一直有人涌入。后来我周围都坐满了人,隐约又有狐臭。实在是受不了,爬起来跑到了最后一排座位,才算最终消停。


小会3
下午第二个小会又是产品推介性质。我选择了去听福汇关于独有指标和交易信号的内容。去的时候去晚了,小小的会议厅里面已经坐满了人。听了一会儿后悔了,它们所谓的“独有指标”,是指把旗下所有客户的买卖情况拿出来作涨跌参考。这跟Level2卖五档数据差不多的意思吧。如此的话是没有什么参考价值可言的。

换了个厅,去逛了一圈银大的会场。标题是《全球经济危机背景下卖空大宗商品的盈利机会》。听了几分钟,感觉讲的人光在那里嚎,没什么干货。既然经济不好,大宗商品当然下跌多过上涨,做空还用你来说?

最后还是去听老外的场,就当作练听力了。老外接在投影仪上的笔记本Win7里面装了Chrome,是唯一的亮点。


下午茶
下午茶时候,服务生端着盘子跑来跑去,倒是挺像鸡尾酒会。不过我看大家都是和自己熟的人聊。我喝了点饮料,吃了几片西瓜之后,溜到大会场找了个角落的座位睡觉去了。还有好几个人也跟我一样的做法噢。


第一天落幕
四点开始的大会场演讲。首先是湘财的某个白痴,来讲什么中国经济的“稳增长”的话题。这个白痴说四万亿只带来了“些许的通胀”。还说如果没有四万亿,现在的经济不会比08年好。

这话充分表现了他的白痴本质。好像现在比08年好还是怎么的?从上午的Weiss评级,以及瑞银的老先生怒斥国内各行业的产能过剩时被叫停等情况看来,这次会议有司是有任务的,是要用来引导舆论,给大环境造势的。可惜背书的都是些垃圾,逻辑都没有。我直接退场回家了,后面的也懒得听了。


第二天
其实根本没必要去那么早,开放注册一个小时之后,才有大会场的讲座。大会场讲完,再是小会。于是今天睡了个小懒觉,到会场的时候已经十点半了。大会刚刚完,但接下来准备听福汇的关于趋势交易的讲座还是在大会场里面,于是早早就溜了进去等着。


小会4
福汇的这名讲师满口的南方腔,不过讲的内容还算客观。趋势交易是吃鱼身,并且一定有赚有赔,趋势只能判断无法预测,关键是止损和资金管理,等等。至于判断方法,倒是没太重点讲,只说了划线法,均线突破以及高低位等。总的说来,主要还是思路而不是技术、方法型的讲座。

个人觉得这个讲师挺有说服力的,包括语音/语调/语速以及讲解方法。算不上有煽动力,但是感觉让人很容易相信他,并接受他的意见。大概做这行的都有这个吧。


中午的突发事件
还是跑去正大广场吃了午饭,正准备回会场的时候。在正大广场1楼遇到一群手持A4纸标语的人。其中有个大汉把纸贴在身上,让人拍照。后面有个女的正在接受SMG的采访。

我也凑过去听,原来是B1楼的那个Smartkids商家卷款潜逃了。据说这些家长的学费加起来约摸有三、四百万吧。听围观群众讲,最近这类事件也不是一起两起了。


小会5
下午第一个小会选了去听帝纳波利点位交易法。创始人主讲,但调子比布林格要嚣张很多,完全是演讲的调调,一副你必须得相信我的样子。

举了不少例子,说他预测了市场的低位以及反转点等等。还用言语挤兑人,说如果有人告诉你市场不可预测,那是因为他不会。但我听下来还是觉得这个家伙是个大忽悠。你要那么神,还来卖书干啥?


小会6
下午第二个小会,回到大会场,又是一个老外。这个还是在讲趋势交易,是说如何把握股市的进场和出场时机。基本上还是福汇上午讲的那些内容,只不过福汇是用的外汇作例子,而这个老外用的美股。因为其它小会更没意思,所以就在这里混完时间就回去了。


结束
后面还有闭幕式,以及抽奖等等。因为家里还有事,也因为觉得没有意思,于是拍拍屁股跑人了。下午茶也没有吃,不过目测有咖啡。

2012年8月29日星期三

信心与声音的扯蛋


今天见到一个有点意思的说法:【有信心,就应该让不同声音存在】。拿出来专门玩味一下。

这句话很简单,是一个很清晰的命题。初看上去,讲得非常有道理。特别是拿出来呛某些非法执政党的时候,简直是掷地有声,砰砰的。其实,这句话真正的杀伤力,是在于它的逆否命题:【不许不同声音存在,就是没有信心】。学过逻辑的都知道,原命题成立,则逆否命题亦成立,反之亦然。但我觉得,这个命题,本身就是一个伪命题。

从逻辑上讲,要证明一个命题很难,要证伪是很容易,只要举出一个反例即可。并且,由于原命题与逆否命题之间的关系,如果无法证伪一个命题,那么证伪它的逆否命题也是可以的。我现在就来试一下。


不许不同声音存在,就是没有信心吗?在世界上大多数国家,传播儿童色情是违法的,而且很多是重罪。那么这些国家不允许这种声音(儿童色情)存在,是它们没有信心吗?如果你对自己的子女教育有信心,对自己子女的品行操守有信息,是不是就可以允许他/她接触这种东西呢?

有的人会说,这种例子太极端,那么好,再来个不极端的。假设你是个公司的老板,有人四处散布对你公司不利的谣言,你想让他继续吗?如果不想,是否是对自己没有信心呢?佛教中也许有把脸伸过去任人打,以及舍身喂XX的故事。但是我估计没有那种故事,说如果不这样做,就要下地狱。


由此可见,虽然话很呛人,但道理是歪道理。国人一贯死要面子活受罪,爱随意拔高道德标准。应该这样来理解:【允许不同声音存在】的目的,是签一张契约。也就是说你不得不允许某些你不希望的声音出现。同时,按照契约,当你的意见别人不喜欢的时候,你也还是可以说出来。这跟信心没有什么关系,只跟权力的制衡有关。

如果你的权力大到可以压过其他人,那么你大可不必遵守这个契约,因为你不需要这个契约来保障你的权利不受损害。只有当你害怕被他人如法炮制时,才会自觉地保护少数人的利益,这其实反而是信心不足。老毛有信心没?有,大大的有。引蛇出洞之后那些不同声音是什么下场?

所以,【允许不同声音存在】,其实是弱势当权者的一个【不得已】的决定。只有这样,才能保证自己将来无论处于何种地位,都有说话的权利。在那些权力不能得到制衡的地方和场合,这个规定就无需遵守,也无法遵守。


和许多民主愤的想法可能有些出入,并不是任何场合下,权力都必须得到制衡的。简单的,比如军队。要是小兵和大将之间还搞权力制衡,那这军队大概没法打仗了。在比如苹果,乔布斯在世时,一人说了算,把公司带上了巅峰。我相信乔布斯还不至于【没有信心】吧,但我相信苹果内部的民主气氛应该不会太浓烈。

总的来说,【允许不同声音存在】这个事情,必须看场合,看对象。你拿它去讨伐专制执政党,自然是正中红心。你要拿它去哪个论坛里面挑战管理员,纯属有病。但一般情况下,我是不介意谁拿它去乱捅的,反正作为因果论者的我乐见其成。但如果把【信心】再扯上,就扯蛋了。信心信心,本来就是我自己心里面的事情,你一个外人,管毛?我有没有信心,难道还要证明给每个人看?笑话!


昨晚看贵州卫视,胖子健身的真人秀。教练指着一胖子大吼,你是不是爷们?!我真心想回一句,老子有木有鸟,关你鸟事?

2012年8月21日星期二

翻墙菜鸟指南


一、什么是墙

  中国现政府出于某种目的,对互联网上的信息进行了屏蔽和监控。这体现在:

  1. 某些网站在中国大陆境内无法访问,站点无法打开,或者直接返回【连接被重置】的错误。
  2. 某些网站能够打开,但页面内容被监视,一旦出现某些【敏感词】,便有一股莫名的力量迫使其中断Web服务,约一分半钟以后才能恢复。
  3. 国内某些邮箱,以及即时聊天工具(如QQ),被要求向【有关部门】展示用户数据,包括个人信息以及通信内容(邮件、聊天记录)。

  (1)常见于一些国外允许信息自由发表和流动的网站,例如著名的社交网站Facebook(中文译名【脸书】或【脸谱】,英文简称FB,国内对应的山寨网站为人人网和开心网之类),以及Twitter(中文译名【推特】,英文简称TW,国内对应的山寨网站为饭否,腾讯微博等),还有知名的视频分享网站YouTube(暂无中文译名,国内对应的山寨网站为优酷、土豆和酷6等)。这一类的网站,由于中国现政府无法要求其按照自己的意愿屏蔽信息,因此直接通过技术手段封锁了整个网站。各种宣传法轮功的网站当然毫无疑问地也在此列。

  (2)常见于搜索国外的引擎,最典型的如Google,Yahoo等也受其影响。由于Google退出中国大陆,中国现政府无法要求其按照自己的意愿屏蔽信息,但也许考虑到直接屏蔽则影响过大,因此对其页面内容进行了监控,一旦出现【敏感词】,便采用技术手段拆散Google与用户间的连接,并保持90秒内无法连接。国内用户一度据此认为是Google存在技术缺陷,而投奔Baidu等积极配合中国现政府进行内容审查和屏蔽的搜索引擎,但其实是有人为因素恶意迫害。Google目前也会通过在页面上给出警告的方式提示用户搜索的关键词中包含【敏感词】,算是反击吧。

  (3)在用户通常的使用中可能不会察觉。大多数用户会认为,自己没有违法违纪,也没有反党反革命,当局不会关注自己。事实上也的确如此,当局没有如此多的精力和人手来监控每一个人。不过由于维稳持续扩大化,没有人能保证,那柄快疯了的达克摩斯之剑,一定不会落到自己的头上。

  以上技术手段,通过一个民间称之为GFW的项目来实现。GFW为Great Fire Wall的英文缩写,即【防火长墙】。对于网络的封锁,主要由GFW进行。在接下来的章节中,将阐明为何有必要避开GFW,即【翻墙】。

二、为什么要翻墙

  目前存在下列翻墙的理由:

  1. 接触自由的信息:我们不是未成年人,凭什么阻止我们接触某些信息?他们也不见得比我们【成年】,凭什么来决定我们能接触什么信息不能接触什么信息?
  2. 能够自由流动的信息才更加真实:政府屏蔽信息的一个很大的理由是有谣言。但官方的谣言危害更大,亩产万斤之类我们还听得少吗?只有双方都能自由地各抒己见,激烈碰撞,才能让事实真相慢慢浮出水面。新闻管制之下,从来没有真相。可参见朝鲜人民。
  3. 了解最先进的技术:自由带来竞争,鼓励创新,使得技术进步。最新的技术型公司,例如正在研发【无人驾驶汽车】、虚拟现实【眼镜】的Google,刚刚上市融资160亿,创下美国公司最高上市估值的Facebook,统统被GFW拒之门外。让我们无法体验最新的科技带来的成果。GFW从本质上讲是反知识,反文明的,它希望所有人民都像猪一样只是睡和吃,其它什么都不要管。
  4. 维稳扩大化:社会问题越来越多,当局执政压力越来越大,使得它将一切批评和不满都划归【反动】,造成维稳扩大化。可能你觉得你没有反党反革命,没有批评政府执政,没有违法违纪,你只是在抱怨自己的生活今不如昔,但当局会觉得你有所指,说不定就会拿你开刀。
  5. 审查不透明:有一种说法认为,网络审查在世界各国都存在,因此容忍GFW的所作所为。但中国现政府目前的做法问题在于,其审查政策极其不透明。泰国规定不能批评王族,美国无法容忍种族歧视和儿童色情。但中国现政府拿不出具体的政策,而实际上是【口袋执法】,只要是某些人群不喜欢看到的信息,都往里装,从而形成【压制】而不是【管制】。可能有一天什么都不让你看,而你却不能问原因,因为问原因也属于【非法】。面对这种审查,一味退让并不是办法。

三、风险何在

  任何行为都是有风险和收益的。上面已经说了翻墙的理由,那么来看看翻墙有些什么风险:

  1. 翻墙只是让你有机会做以前GFW不允许你做的事情,但不意味着你可以做任何事情而不用承担后果。那种认为墙内是监狱或猪圈,墙外就是绝对自由的天空,翻出去后就胡作非为的人,风险会很高。正如前面所说的,网络审查在全世界都存在。如果你去联系找人买C4炸药,不光中国现政府会收拾你,全世界大概都会收拾你。
  2. 政府是知道有一小部分人在翻墙的。他们会盯住这部分人中的活跃分子,主要是在对抗政府的维权具有【号召力】或【行动力】的分子。特别是两者皆备的人,会重点盯住。如果你也想成为其中一员,则风险必定会比较高。
  3. 翻墙可能会给某些日常的网络操作带来不便。比如你如果开了VPN翻墙,那么迅雷下载可能就不那么好用,不得不暂停了。为了自由,必要的代价肯定是有的。另外,当你已经习惯了使用墙外的各种新科技,那么一旦回到墙内,或者处于无法翻墙的境地时,可能会不习惯。
  4. 对于心理和知识上没有准备好的人,建议慎重。翻墙让你接触了许多平时本来无法接触的东西,同时也让你进入了更广阔更自由的信息海洋,就好象一直在游泳池的人下了海。墙外的生态法则与墙内有所不一样。被国内政治教育毒化的一些概念,从小被灌输的一些理念,在墙外的世界会变得很可笑。心理发育尚不健全(这不是我们的错)的人,有可能受到情绪上的打击,产生失落感,从而有【我还是回去好了】的想法。

四、常见方案

  GFW是一个具体的技术上的存在,所以翻墙也是一个技术上的方案。目前大致有以下几种手段,可以突破GFW的封锁,接触到自由的信息。

  1. 修改hosts:修改本地hosts文件。简单,无需专门工具,对网速影响很小,副作用小(迅雷等也不受影响)。但不是万能的,某些被封锁的站点无法用这种方式搞定。
  2. SSH代理:通过SSH连接国外服务器来转发请求。免费的渠道不多,架设复杂,需要专门工具,网页浏览及下载都能搞定,通过Socks代理也能支持一些其它的应用。
  3. 专用代理:在本地运行一个应用程序,来把网页浏览请求通过国外服务器中转。有一定的免费架设渠道,比GAE。架设不算简单,而且基本只支持网页浏览及下载。
  4. VPN:VPN可以解决所有类型的问题,包括网页浏览、下载、即时通讯、视频、网游等等。架设难度不大(特别是PPTP类型的VPN)。缺点是副作用相当大,实际上它就相当于换作以一台国外电脑的身份在上网,优酷什么的根本用不了。对网速的影响也最大,而且切换VPN时网络会中断一下。免费VPN一般有各种限制,不过有耐心的话也能收集到一些不错的。有资金的话也可以自行购买VPS等来架设。
  5. 翻墙软件:一般是指定制开发好的专门用于突破网络封锁的某些软件,比如自由门等。这类软件大多有法轮功背景,使用上相对简单,易学易用。但个人不太推荐,因为很难讲有没有夹带一些私货在里头。

  原则上讲,所有这些翻墙方案,都是利用了GFW【没有封掉所有国外网站】的设定。毕竟中国目前还有广大的跨国外企和外籍人士存在,完全封掉不现实。

五、组合建议

  由于各种翻墙方案各有利弊,根据各人的情况,可以采用不同的翻墙方案进行组合。个人建议的组合如下:

  1. 修改hosts:因为副作用小,网速快。平时长期采用,必要时关闭。
  2. 专用代理:服务器建议GAE,因为免费、快速。应用程序推荐GoAgent,因为开源。是否开机启动可以根据硬件配置决定。搭配能快速切换代理的插件(比如Chrome上的SwitchySharp)使用。个人推荐手动切换代理,不建议采用网上的自动切换列表。否则修改hosts的优势会被抵消一部分。
  3. VPN:收集一些免费VPN的信息备用。在前两种方案无法解决问题时,上VPN。平时一般不用。


2012年8月3日星期五

GAE的Frontend Instance Hours高居不下咋办?


  架设GAE用了GoAgent之后,对于Dashborad中的Frontend Instance Hours一项数字如此之高有些不解。查了Google,发现有同样疑问的还有很多人。于是翻了翻Google的文档,做了做实验,基本上弄明白了。

  其实这个数字高也不代表什么。不信你可以架一个Hello world上去,先不要急着访问,只是打开Dashboard看看。Number of Instances应该是0,Frontend Instance Hours也是0。然后再打开WebBrowser访问一下你的Hello world,再看Dashboard。现在Number of Instances是1了,而Frontend Instance Hours就开始了渐渐的增长,哪怕你把WebBrowser马上关掉也是如此。
  说白了,Frontend Instance Hours就是GAE记录的服务实例运行所用掉的时间配额。没访问过的话,实例数是0。而一旦有HTTP请求,GAE就得启动一个实例来响应这个请求。运行这个实例需要耗费相应的CPU和内存资源,于是GAE就开始计费了。实例不停,Frontend Instance Hours就会一直长。而GAE为了能在短时间内响应下一个请求,通常是不会很快把实例给停掉的。(至于到底会等多久才停实例,据说是15分钟无新请求就不再增长Frontend Instance Hours,但实例数还在,估计挂起了。不过你可以手动停掉它。)
  既然叫做【Hours】,增长的速度当然就是指的实例实际运行的时间。实例跑了一个小时,那么Frontend Instance Hours就会增加1.00。我没测过Google会不会在计费上面耍点小手段,大抵是不会的,个人感觉也基本上差不多。
  所以看着Frontend Instance Hours一点一点地增长,也完全不必心慌。一天24小时,GAE给了28的免费配额,如果你只跑一个实例,是不可能用完的。用到23.99,下一分钟就第二天,重新计算,清零了。对于只跑GoAgent的用户,实在不放心的话,我觉得用两个AppID来跑也完全足够了。当然,流量超了的情况另算。

  那么什么时候Frontend Instance Hours会超过24呢?据说一个请求如果在等待了超过Min Pending Latency的时间之后,仍然没有实例能来处理它,那么GAE就会开一个新实例来做这个事情。所以GAE给了免费用户28个Frontend Instance Hours。Google的解释是为了让用户能够应对一些紧急状况。
  另外,这个【紧急情况】,除了指访问量大导致的多实例运行,也包括了一个功能,就是GAE允许用户调高Frontend Instance Class。F2级就比F1级多用一倍的计算资源,而Frontend Instance Hours也就增长得快一倍。这种情况下,多出来的4个小时就可以视为GAE给的【加力】之类的东西了。如果你只想在短期内进行一个高强度的计算,那么可以考虑用F4来跑一个APP看看。

2012年6月22日星期五

黎明圣记简明攻略


前言之前言
  因为重新开博,把自己以前架Drupal的虚拟机翻出来重新装上,准备翻出一些有点价值的旧博文整理上来。刚翻了四五篇就看见了下面这个。游戏攻略!?我都快不记得了,要不是里面的一些自己的特色用词用句,我都不敢相信自己居然还写过这种东东。原作2005-11-20 03:01:12发表,看来是我周六辛苦作战通关之后一鼓作气而成。由于这种文章并没有时效性,我就不重新设置时间了。
  另外发现的一件事是,百度贴吧里面,有人在06年的时候把我的原文贴了上去,没有注明转贴,也没有给出原作的链接。虽然也并没有声称是自己写的,但个人觉得还是不厚道。


前言
  这样的RPG小品游戏,没什么难度,本来不需要写攻略的。不过在我玩的时候,遇到有疑问的地方,想上网找找攻略,居然全都出自一处。没想到啊没想到,国人不仅技术文章只会抄,连游戏攻略都抄成习惯了。所以还是自己写一个好了。
  游戏相当简单,也不大,所以就不详尽写了,我只把要注意的地方点出来就好了。

操作说明
  首先,建议把设置中关于图像(GRAPHIC)的选项设为VRAM,这样通过显存使用DX,速度快不少。默认的是SYSTEM,使用系统内存,属于牺牲速度换取兼容性的选择。
  游戏可以用鼠标操作,左键行走/行动,双击开跑,右键菜单/取消,典型的日式RPG风格。
  也可以用键盘操作,Z键等于鼠标左键,X键等于鼠标右键。
  小技巧:当人物位于画面中部的时候,再用X键呼叫出菜单,这样会比较省时间。

角色简介
玟特
  基本上从头跟到尾的同伴,牧师型,唯一会回复法术的角色。
  物攻基本上可以无视,物防也就是普通的法术系水准。专精水系法术,不会太多攻击性法术,不过升到30级会有一个全游戏最厉害的终极攻击法术。
疾迦
  从流程上看应该是第二个同伴,法师型,会攻击和辅助型法术,专精火系。
  普通攻击是以火球术的形式,因此攻击的基准不是看STR而是看INT。法师的INT都很高,因此她的物攻前期就很厉害,即使到了后期也很厉害,只是就少了连环击的可能。
  用天雷、刀刃等群体攻击法术来清杂兵不错。
史德比亚
  紧接疾迦之后加入。物防高的厚皮山猪型角色,在主角拿剑之前物攻也和其不相上下。可以在主力阵容HP不足的情况下轮换进来殿军。
  群体攻击型的必杀技在清杂兵时有一点用处。但这个游戏难度并不高,因此无论怎么用应该问题也不大。
亚妮斯
  加入很晚,因此等级一般一开始会落后很多。物攻高,物防也不算低,因此很快就能跟上队伍。
  作为格斗家,专精拳脚肉搏。能打出所有角色中最高的连击数,因此画面效果上往往很爽。
  在这里说明一下,普通攻击的连击数是随机的,有上限。主角和史德比亚的上限是3,玟特应该是2,而亚妮斯可以达到4或5。至于必杀技的连击数则是固定的,一次攻击一定会打出指定的连击数。但必杀技的连击数会随着角色等级的上升而慢慢增多的。
樱子
  不能控制的角色,偶尔会冲出来帮忙。
  主要有三种攻击方式:一是放炸弹,会造成连击效果;二是发忍镖,可能会造成1~3连击;还有一种是一击必杀式的攻击,单击威力很大,而且带有必死效果。这最后一种攻击方式又分为单体和群体两种。
  她的攻击威力和连击数(炸弹),会随着游戏进程逐渐增大,恐怕是和主角的等级有关。

大致流程
  这里先写出主线的流程,支线流程还没有玩全,所以后面拿章节专门写。(我也不确定我会不会花时间把它们完全)
  第一次可以自由行动的时间,是救出玟特之后,混入王城之前。这段时间什么也干不了,可以到处转转看看。记得把玟特放入战斗队形中,免得第一仗时吃亏。回房间睡个觉,到了时间(3/2 07:00)就会出发了。
  进入王城监牢之后,会发现作战一次会用掉0:10的时间。不用担心,这里不会有太多的战斗的。一楼的右下监牢在靠近时有个事件,往右走会发现有结界。上三楼后右上房间内有王后,问过后去一楼念咒语破解结界。如果你和王后对话时没有注意看得话,——咒语是第二的一个。和天使对话之后,回游击队基地。在这一阶段大约升到4级就可以了。
  接下来会接到雷必疾关于调查水源污染的任务。此时的大地图还不能过桥,只有去上方山洞练功。差不多能在城下村买齐当时的最高装备之后,就可以下山洞的BF3打BOSS了。
  再出来,就可以过桥了。总算可以去东部探险了。先去树下的小镇,往上方走来得树下,对话后疾迦(不知道谁翻译的这些乱七八糟的外国名字)加入。去小镇东南方的森林内,一直往上冲,千万别停下,遇到山贼非礼史德比亚。别吝啬,把所有本事拿出来,打败山贼后送史德比亚回家(就在城下村),共进晚餐后她加入。四人可以进行战斗阵容的轮换了。
  接下来是一段练功时间,先只有在森林里面炼,里面的三个宝箱记得顺手打开。算准时间大约06:00或18:00左右来到大树下,可以开门进入。进入之前一定记得存盘。游戏在这里有个bug,进入大树的第一次一定会出现地图资源错误,要读取进入之前的存档重来一次才行。要是没有存盘就惨了,所以在第一次进树前在门前先存个盘吧。大树里面的敌人比森林里的要强一些,而且讨厌的是都带毒,好在路线比山洞还要简单。等练级到经验值大约一万左右,就可以放放心心地去挑BOSS石头人了。不过接下来有一场主角与雷必疾之间的单挑,中间没有存盘的。所以如果单挑想赢的话(据说影响结局),还是把等级练高一点再打石头人吧。一万五左右的经验值打雷必疾没有任何问题了,除非你身上一点药都没有。
  打赢之后,游戏进入最开放的阶段。所有城镇都开始卖当地最高档的装备了。努力赚钱练级吧。同时,如果想多个同伴作战的话,现在应该开始触发亚妮斯的事件了(见后面的支线剧情部分)。练级的好地点,初期可以在森林。那里的敌人现在变成了大树内的那种类型,打起来有72~2XX的经验值。对了,最好顺便去一趟大树里面。上次打完BOSS之后,它旁边还有个宝箱没有开,可别放过了。后期练级可以去塔内楼下的地下通道,就在靠近楼梯口的地方练。这里的敌人相当强悍,最好是有了类似于“天谴”、“天雷”这样的强力群体攻击魔法之后,再去这里练级。否则遇上同时出现两、三个敌人,想跑都没什么机会。等练到可以拿普通攻击打这里的敌人的时候,就差不多可以出师了。如果想往后打得轻松,就一直练到这里的敌人打你都只费1点HP的时候,就可以傲视天下了。
  然后找个白天去城下村,会遇到司威特要求单挑。这是第二次单挑作战,对手可不是司威特,而是风天王。如果有好好练级,那家伙也就是一个笑话而已。
  打过风天王之后,可以去港口了。在港口酒吧会发生疾迦醉酒事件,在旅馆睡过一觉之后,06:00左右可以步行混上船。抢船,打到最后,对阵希瑟。打完之后去火山岛,打火天王。打完之后,就可以去找天使,天使给主角祝福之后,就有拿剑的资格了。
  然后就是去塔里拿剑了。塔二楼上的装备很好,记得去买齐。然后从楼底的通道到另一座塔,打上5F,进圣域见姆宁拿剑。拿剑之前还要跟自己的镜像打一架,用终极技可以轻松搞定。姆宁身后还有两口宝箱,里面也有终极装备哟,可别忘记了。
  回基地之后,决定要进行解救少女的作战。一路杀上二楼,挡住连续几次的进攻之后,直接上三楼单挑洁思敏。我真的不知道输了会怎样,我当时已经很难输了。
  最后的决战终于来了。找王后(还在老地方没挪窝,真听话)对话之后,有一件好装备留下。然后杀上四楼(楼梯口在三楼的正下方),从秘道进入魔界。进去之前先和希瑟干一场,这家伙物攻比大魔王还高?最后的大魔王先是召唤出水土风火四天王,一起招呼主角。然后是自己亲自上阵。说实话,它的实力让我很失望,只是皮比较厚,顶了我蛮长一段时间的。
  一切都结束之后,回到了游击队基地。出了基地就进入最后的结局选择了。选择“留住黎耶茹”就是和黎耶茹结婚的结局,或者就是选择和有完成事件的女孩的结局。在这方面,请参考后面的“支线事件”章节。

支线事件
玟特
  在第一次潜入王城之后,回基地休息一次,睡觉前就会和她有对话。击败水天王之后,回来休息,又有一次。然后保持大部分作战都有她参加。当地下研究所事件被触发时,希瑟这老东西会说玟特不是处女。逃出以后,又有一点剧情发生。在拿到宝剑之后,夜半时分在基地休息的时候又有两次剧情。然后就可以选择她作为结局了。
疾迦
  她刚加入之后,马上去旅馆休息,她会进来道歉(为了乱说话的事情)。在港口酒店闹事之后,回旅馆休息,她又会来道歉。之后,只要在火山岛迷宫的宝箱内拿到龙骨,就可以在回基地休息的时候发生剧情。然后就OK了。
史德比亚
  要注意的是,第一次进入森林之后,会听到动静。别停,一直往上冲,有宝箱也等会再开。否则中途一作战,MM就会被山贼奸杀了。
  在得到天使的祝福前去拿剑的时候,去树下的小镇,准备好万元现金,在武器屋可以买到她的家传宝甲。然后可以在休息时引发两次剧情。第二次剧情之后,前往她位于城下村的官邸,便可以触发夺回宝剑的事件。这次可以狠狠海扁山贼头子了。拿回宝剑之后,再去官邸,就自动触发最终事件。
亚妮斯
  只能在每天09:00左右,去城下村找到她。
  第一次去大概一定要地图全开之后,最好在疾迦和史德比亚加入之后,但可能不是必须条件。
  第一次在城下村路口遇见亚妮斯受查理布斯的威胁;
  第二次要在规定时间内去城下村右上角(有地图切换,从右上角那个路口往右方边界冲)的修炼场,向亚妮斯解释误会;
  第三次还是在修炼场,见到亚妮斯被威胁的原因(怀疑其实是一张裸照,汉化的时候被改掉了);
  第四次在修炼场门口就逮见查理布斯,抓进来修理一顿。至此亚妮斯的烦恼已完全解决;
  第五次去修炼场,亚妮斯加入。(时间会经过十个小时以上,我怀疑原版中是H情节)。
樱子
  打土天王之后,风天王之前,开始和亚妮斯有接触之后,回基地,雷必疾会让主角去捣毁地下研究所。此即地下研究所事件。地下研究所内的敌人比大树内的要强,和船上的差不多,比塔底的要弱,可以作为森林和塔底之间练级的过渡地点。攻到B3F,遇到希瑟,主角骗过他,直接冲过去破坏了研究设备,然后撤退,没有对希瑟的战斗。
  然后回到游击队基地,在走廊上会遇到女忍者樱子。来回走两趟又会遇到她。后来在夺船的过程中还会有一次对话。
  之后,樱子会在主角战斗的时候,偶尔从后面冲出来帮忙的。结局……,应该也有吧。但是据说因为中文版去掉H情节的缘故,樱子的大部分剧情似乎都被去掉了,于是,残念。
  不过,要说明的一点是:如果先让亚妮斯加入,再去试图触发地下研究所事件,那是徒劳的。
花黎
  如果在地下研究所事件触发以前,完全解决了亚妮斯的烦恼,然后回游击队基地见雷必疾,会引发解救港口少女事件。在港口打败三队士兵之后,会在马车中见到花黎。之后再去城下村的俱乐部,会见到她(不用花钱)。如果把俱乐部其他三组情节都花钱看过(花花公子啊!),就有相关结局。
  和樱子的加入条件一样,如果先让亚妮斯加入,就无法触发这个剧情了。至于先触发地下研究所事件对本分支情节是否有影响,还没有试验过,但最好按照:解决亚妮斯烦恼->见雷必疾->触发并完成花黎事件->见雷必疾->触发地下研究所事件->亚妮斯加入->解决地下研究所事件->樱子加入,这样的顺序来做,才是比较保险的做法。

2012年6月21日星期四

又开始写博客了

  自从撤掉自己用Drupal建的站点之后,一度希望把博文写在Google+上。但渐渐地发现,SNS就是SNS,不管多长的字数也变不成Blog。就好象Magazine就算连载了再多的小说,也变不成Book。

  现在的社会空前的浮躁,一不留神自己也浮了。发现稍微长点的文字自己是写得越来越少,也越来越没有思想。前两天看到一篇文章,作者讲述自己如何做到坚持每天一篇博文,深有感触。其实重点不在于写博,而在于对自己的要求和管理。希望自己也能更有效率吧。

  因为墙内审查得太厉害,也太不透明,就只考虑墙外的Blog服务了。之前稍微试了下WordPress,中文化太烂,而且丢了一次内容,让我很恼火。现在换到Blogger上,目前为止感觉还不错。

  那么,第一篇就先这样吧。过去、现在和将来,都是我所关注的事情。以后可能会放一些旧文章上来,同时也会有新的出品。那些压箱底的旧文章,如果是有时效性的,我就设置回原来的时间了。