<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/css" href="css/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>CSK.Blog - funs</title><link>http://www.csksoft.net/blog/</link><description>Make something different. - </description><generator>RainbowSoft Studio Z-Blog 1.7 Laputa Build 70216</generator><language>zh-CN</language><copyright>Copyright Shikai Chen 2000-2012.</copyright><pubDate>Fri, 01 May 2026 13:51:50 +0800</pubDate><item><title>信箱检查器和气象站的微博发送脚本</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/284.html</link><pubDate>Thu, 05 Jan 2012 06:36:57 +0800</pubDate><guid>http://www.csksoft.net/blog/post/284.html</guid><description><![CDATA[<p>之前写了一个定时把之前做的<a href="http://www.csksoft.net/blog/post/ihes_outsidesensor.html">太阳能信箱检查器和气象站数据</a>发送微博消息的脚本，现在按照约定公布它的代码。</p>
<p>都是用bash脚本写的，简单粗暴有效:-)不提供技术支持</p>
<p>有兴趣的可以去关注:)</p>
<div class="quote">
<p>微博：</p>
<p><a href="http://weibo.com/cskbot01"><u><font color="#0066cc">http://weibo.com/cskbot01</font></u></a></p>
</div>
<div class="quote">
<p>代码：</p>
<a href="http://www.csksoft.net/data/code/ihes_weibo_poster.zip">http://www.csksoft.net/data/code/ihes_weibo_poster.zip</a></div>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/weibo_poster.jpg" /></p>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/284.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=284</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=284&amp;key=79b6d7c2</trackback:ping></item><item><title>自然魔方-2011上海国际科学艺术展RoboPeak参展作品</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/qube_exhib.html</link><pubDate>Sat, 14 May 2011 10:05:44 +0800</pubDate><guid>http://www.csksoft.net/blog/post/qube_exhib.html</guid><description><![CDATA[<div class="quote">
<p>原文发表于RoboPeak团队网站: <a href="http://www.robopeak.net/blog/?p=195"><u><font color="#0066cc">http://www.robopeak.net/blog/?p=195</font></u></a></p>
<p>这个展已经酝酿了一年多了，而参展作品的一些相关技术我们也早在做(我blog似乎以前放出来些视频:-P)。不过真到了布展阶段还是很折腾的。大家能在繁忙工作之余一起负责这个展很不容易的。</p>
</div>
<p>&nbsp;在本届上海国际科学与艺术展(<a style="PADDING-BOTTOM: 0px; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: ; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(51,51,51); TEXT-DECORATION: underline; PADDING-TOP: 0px" href="http://www.science-art.com.cn/article.php?id=7162"><font color="#333333" face="Arial">http://www.science-art.com.cn/article.php?id=7162</font></a>)上，我们团队很荣幸参与其中，参展作品为-《自然魔方》。</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><strong style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">展览时间为5.13至5.23，展览位于浦东展览馆，免费开放。我们展位在4楼A厅，欢迎大家前去参观和体验</strong><span class="Apple-converted-space">&nbsp;</span><img style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: rgb(255,255,255); MARGIN: 0px; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; PADDING-TOP: 0px; background-origin: initial; background-clip: initial" class="wp-smiley" alt=":-)" src="http://www.robopeak.net/blog/wp-includes/images/smilies/icon_smile.gif" /></p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px" align="center"><img alt="" src="http://www.csksoft.net/data/pic/rpqube_poster.jpg" /></p>
<p style="TEXT-ALIGN: left"><strong>现场视频：<a href="http://www.tudou.com/programs/view/sQhnXxlNPBw/"><u><font color="#0066cc">http://www.tudou.com/programs/view/sQhnXxlNPBw/</font></u></a></strong></p>
<p style="TEXT-ALIGN: left">&nbsp;</p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/sQhnXxlNPBw/&amp;rpid=70789997/v.swf" quality="1" menu="menu" loop="loop" scale="ShowAll" allowscriptaccess="always" allowfullscreen="true" wmode="opaque"></embed></p>
<p>&nbsp;</p>
<p style="TEXT-ALIGN: left"><strong>作品简介</strong>：</p>
<p>立体魔方Qube是RoboPeak团队对于物联网在家庭使用以及智能玩具领域的前瞻性探索，每个魔方都配备各种传感器，不断得采集外界信息，并通过无线芯片将信息与其他的魔方进行分享和交流。这是一个充满智能化物件的环境。可以说，物与物、人与物之间都是紧密相连着。</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/desc001.png" /></p>
<p align="center">现场人与魔方的互动 </p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/desc002.png" /></p>
<p align="center">绚丽多彩的魔方 </p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/desc004.jpg" /></p>
<p align="center">我们的展位</p>
<p style="TEXT-ALIGN: left"><strong>技术介绍:</strong></p>
<p style="TEXT-ALIGN: left">本作品是我们对2.4Ghz传感器网络以及创意电子的一次应用尝试，采用AVR+RoboPeak开发的ArduinoLite实现。我们将会在今后发布关于自然魔方的更多细节。</p>
<p style="TEXT-ALIGN: left">&nbsp;</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/desc005.jpg" /></p>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/qube_exhib.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=278</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=278&amp;key=44b2c609</trackback:ping></item><item><title>Ar.Drone和XV-11入手</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/275.html</link><pubDate>Sun, 13 Mar 2011 07:18:07 +0800</pubDate><guid>http://www.csksoft.net/blog/post/275.html</guid><description><![CDATA[<p>经历了一段时间的等待，Ar.Drone和XV-11都到货了，过程还算顺利。</p>
<p>&nbsp;</p>
<p>Ar.Drone应该已经有不少人听说或者购买了，所以就贴几张照片，视频网上已经有太多了，就不重复了。</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/ardrone.indoor.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/ardrone.outside.jpg" /></p>
<p>简单的说他是一个玩具级别的四轴飞行器。不过这个玩具还是比较复杂的，配备了前放和正下方的摄像头用于实时远程观看和航拍，并且用于姿态传感器数据，另外配备超声波测距仪（测高）、6DOF的惯导系统(3轴陀螺仪+3轴加速度计）。</p>
<p>虽然这个飞行器主要是供人消遣的（在iOS或者Android设备经过WIFI操作），不过厂商也提供了可在PC(linux, win32)、iOS、Android上的SDK，供开发者获取飞行器传感器数据、摄像头画面以及控制飞行。利用他的SDK即可实现自主飞行、目标物体跟踪和探测、SLAM等更加高级且有意义的事情。</p>
<p>另外他的控制系统是基于ARM9的Linux方案，网上也有人成功利用他的usb口外接额外GPS等外设、也可通过WIFI使用telnet登陆上边的linux shell，可谓充满了无限的可能性。感觉就是四轴中的Roomba...</p>
<p>使用下来觉得的确是一个不错的设计，虽然存在诸多缺点（噪音大，不是足够稳定，待机短），不过相比那些开源的四轴项目(如MK)或者其他的商业模型级别的4轴，Ar.Drone已经足够稳定和易用了，并且成本上也做得很出色，即使是售价都比开源的成本略高而已。这里面算法和传感器方案的创新有不少的功劳，比如他使用超声波方案代替了传统的气压计，节省了不少成本（虽然牺牲了些性能），也利用正下方的摄像头做水平位移的检测。</p>
<p>总的来说这是一款很值得体验的产品，并且，如果你不仅仅把他当作是一个玩物的话，他会带来更加巨大的价值。</p>
<p>&nbsp;</p>
<p>再来提提XV-11，这估计国内就没什么人气了，不过他的竞争产品，Roomba相信大家就比较熟悉。XV-11和roomba相比绝对是遥遥领先了，不过他们都比不过人工的打扫效果。当然，我也并不看重他的打扫效果:-)。这里贴一些视频和图片：</p>
<p>&nbsp;</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/xv_11.jpg" /></p>
<p><a href="http://www.tudou.com/programs/view/e4urN4N1uyk/"><u>http://www.tudou.com/programs/view/e4urN4N1uyk/</u></a>&nbsp;</p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/e4urN4N1uyk/v.swf" quality="1" menu="menu" loop="loop" scale="ShowAll" allowscriptaccess="always" allowfullscreen="true" wmode="opaque"></embed></p>
<p> </p>
<p>&nbsp;</p>
<p><a href="http://www.tudou.com/programs/view/X768U-jbvBY/"><u>http://www.tudou.com/programs/view/X768U-jbvBY/</u></a></p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/X768U-jbvBY/&amp;rpid=70789997/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/275.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=275</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=275&amp;key=2b8f6a2c</trackback:ping></item><item><title>所谓折腾</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/263.html</link><pubDate>Mon, 17 May 2010 08:10:47 +0800</pubDate><guid>http://www.csksoft.net/blog/post/263.html</guid><description><![CDATA[又很久不更新了。发一图，另外近期会更新篇踏实点的文章:-)
<div style="text-align: center;"><img alt="" src="http://www.csksoft.net/data/pic/avr_sucks.jpg" /><br />
</div>
<div><br />
</div>
<div>不是我喜欢折腾或者蛋疼，是最近啥都可以炒，芯片都在涨...&nbsp;</div>
<div>暂时不用问那个板子的用途，不会解释的:-P</div>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/263.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=263</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=263&amp;key=b793f051</trackback:ping></item><item><title>临时凑数一片</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/251.html</link><pubDate>Sun, 01 Nov 2009 00:25:19 +0800</pubDate><guid>http://www.csksoft.net/blog/post/251.html</guid><description><![CDATA[好久没有更新自己Blog。一方面是忙，另一方面是暂时没啥好说的。不过为了证明这个Blog没有废弃，提醒自己我还有个网站，所以就发一篇来凑数。
<div><br />
</div>
<div>主要是最近做的一些事情拍的录像，各位有兴趣就看看哈。不多作解释。</div>
<div><br />
</div>
<div>Youtube国内不能访问，就放youku上了...</div>
<div><br />
</div>
<div><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://player.youku.com/player.php/sid/32269326/v.swf" width="480" height="400" play="true" loop="true" menu="true"></embed><br />
</div>
<div><br />
</div>
<div><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://player.youku.com/player.php/sid/32264545/v.swf" width="480" height="400" play="true" loop="true" menu="true"></embed><br />
</div>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/251.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=251</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=251&amp;key=c93c308f</trackback:ping></item><item><title>Autostereogram(立体画)的原理、观看以及制作</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/autostereogram_foil.html</link><pubDate>Sun, 28 Jun 2009 12:47:27 +0800</pubDate><guid>http://www.csksoft.net/blog/post/autostereogram_foil.html</guid><description><![CDATA[<p><strong>请点击文章标题进入正文下载附加讲稿</strong></p>
<div class="quote">这里来炒下冷饭... 我在大一的时候曾经对立体画(Auto-Stereogram)研究过一段时间，并且开发过一个可视化的设计软件用于产生此类立体画。时间过得很快，转眼已经毕业了，这里分享一个我最近给目前组里边做的一个presentation：Auto-Stereogram Introduction。 </div>
<p>立体画/立体图(Auto-Stereogram)相信各位从前都应该在不同地方看过，不过有可能并不知道他的真正学名:Auto-stereogram(<a target="_blank" href="http://en.wikipedia.org/wiki/Autostereogram">wiki介绍</a>)。如果你对他的实现原理感兴趣，或者希望了解如何去观看它，或者尝试自己制作（自己写程序或者基于已有软件），都可以来看看我这篇文章。同时，既然是炒冷饭，我Blog自然从前也提过此类主题。下面是我Blog以往的文章以及我开发的制作软件Stereoic的下载和介绍：</p>
<h2 class="std_h2">Stereogram的原理与制作 </h2>
<p><a href="http://www.csksoft.net/blog/post/21.html"><font color="#0066cc">http://www.csksoft.net/blog/post/21.html</font></a></p>
<h2 class="std_h2">Stereoic的功能介绍</h2>
<a href="http://www.csksoft.net/blog/post/16.html"><font color="#0066cc">http://www.csksoft.net/blog/post/16.html</font></a>
<p>&nbsp;</p>
<h2 class="std_h2">Stereoic的下载（位于主网站的程序作品区，需要Flash插件）</h2>
<a href="http://www.csksoft.net/index_mainsite.asp#SubView%3D2%26SubSection%3Dproducts%26ViewPos%3D23%26ViewType%3D2%26UID%3Dmainsite.site_data.ID53">http://www.csksoft.net/index_mainsite.asp#SubView%3D2%26SubSection%3Dproducts%26ViewPos%3D23%26ViewType%3D2%26UID%3Dmainsite.site_data.ID53</a>
<p>&nbsp;</p>
<p>因为是分享讲稿，文章本上就不过多介绍细节了，下面给出一些截图。本讲稿链接可以在文章末尾找到。对于想学习如何观看的朋友，在Stereoic软件的帮助文档中我曾经写过详细的观看提示。</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_001.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_002.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_003.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_004.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_005.jpg" /></p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/pic/autostereogram_foil_006.jpg" /></p>
<p>&nbsp;</p>
]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/autostereogram_foil.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=248</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=248&amp;key=8afec4af</trackback:ping></item><item><title>让一切都过去吧，高手挑战2过关方法</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/Netcompet2_solutions.html</link><pubDate>Fri, 22 Feb 2008 23:55:35 +0800</pubDate><guid>http://www.csksoft.net/blog/post/Netcompet2_solutions.html</guid><description><![CDATA[<p>这个游戏已经好久没有维护了，就连我也差点忘记自己还制作过这个游戏。不过没想到的是一直还有玩家在尝试过关，虽然和刚发布时候相比已经冷清很多。考虑到今后自己可能没有时间再出后续版本，同时对很多人来说，这个游戏的第二版或许难度高了些。也有人写信给我怀疑第二版根本无法通过。因此，我花了点时间，自己作为一名闯关者，把这个游戏过了一遍。下面就是我本人的过关方法，这个攻略应该说是&ldquo;官方&rdquo;版本了，也就是我出题时希望挑战者采取的方法。</p>
<p>&nbsp;</p>
<p><strong>虽然是面向初学者的游戏，挑战2还是有一定深度和可玩性的。没尝试过的朋友不妨借助这篇文章自己体验下:-)</strong></p>
<p>&nbsp;</p>
<h2 class="std_h2">转载注意.保留下面信息:</h2>
<div class="quote">来源: <a href="http://www.csksoft.net/blog">http://www.csksoft.net/blog</a></div>
<p>&nbsp;</p>
<h1 class="std_h1">背景</h1>
<p>高手挑战是我在发布自己网站之后不久制作的一款网页闯关游戏，原本只是为了好玩随便制作了下，但出乎我意料的是他的第一版在网络上大受欢迎。</p>
<p>接着我制作了这个游戏的第二个版本，他的难度和前一版相比有很大的提升，不再是简单的设计一些基础的操作能力。而是涉及互联网相关技术(HTTP协议/HTML/CSS/XML/RPC/FLASH/JavaScript等)、图像处理、音频处理、基本的反汇编调试技术、基本的网络安全技术、原始数据恢复等方面。同时游戏有不单单简单的考察这些知识，而是通过巧妙组织具有很强的趣味性。</p>
<p>&nbsp;</p>
<div class="quote">
<p>游戏的URL是：<a href="http://www.csksoft.net/netcompet2/">http://www.csksoft.net/netcompet2/</a></p>
<p>与2005年年初发布，目前累计有50多人通过挑战，参与者9240人，通过率 &lt;= 0.5%</p>
</div>
<p>&nbsp;</p>
<p>通过上面数据，可以看出游戏还是具有一定的难度的。为了防止通过者将答案散步在网上，我对游戏也作了一定的处理，比如最终闯关成功认证时候需要验证码，而验证码是由之前闯关时游戏者收集到的验证码碎片通过特定的计算公式得出的。而验证码碎片以及计算公式对于不同玩家是不相同的。另外，游戏系统会纪录每个游戏者的游戏进度，一方面可以帮助游戏者下次登陆后能自动进入上一次的关卡继续游戏，同时也能在一定程度上防止提前进入没有通过的关卡(防止直接从网上看到答案)。</p>
<p>虽然这些手段不能非常有效地阻止答案泄露，但一定程度上还是有作用的。因此从游戏发布至今将近3年中，通过者寥寥无几，网上也很难找到比较完善的通关策略。</p>
<p>&nbsp;</p>
<div class="quote">
<p>一共14关，每一关就是一个页面，游戏者需要做的就是通过当前关卡提供的信息，找到下一关的页面地址。</p>
<p>在通关过程中需要收集5个验证码片断</p>
<p>最终，通关者需要将收集来的验证码片断通过游戏提供的工具组合成最终的验证码，并通过最终的验证。此时闯关成功。</p>
</div>
<p>&nbsp;</p>
<h1 class="std_h1">通关方法</h1>
<p>下面介绍的方法是我自己亲自操作得来的，因此可以保证100%的正确性。</p>
<p>但是需要注意的是，就像上面提到的，具体的数据和方法对于每个人都存在差异，因此不可能照搬得来。</p>
<p>本游戏在中途关卡也做过调整，这次公布的方法包括了调整前后的差别。</p>
<p>&nbsp;</p>
<h2 class="std_h2">第一关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/start2.htm">http://www.csksoft.net/netcompet2/gamearea/start2.htm</a></p>
<p>&nbsp;</p>
<p>这一关的线索在网页源代码中，通过提示察看其中的CSS文件stdStyle.css</p>
<p>会发现如下代码：</p>
<div class="quote">nextstage {<br />
&nbsp;URL:deefr3c.htm;<br />
}</div>
<p>deefr3c.htm就是下一关地址</p>
<p>&nbsp;</p>
<div class="quote">
<p>获得验证码碎片：CT02</p>
</div>
<p>&nbsp;</p>
<h2 class="std_h2">第二关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/deefr3c.htm">http://www.csksoft.net/netcompet2/gamearea/deefr3c.htm</a></p>
<p>&nbsp;</p>
<p>这关是一个ASCII变换问题，由提示中给出的关系：@LE -&gt; htm</p>
<p>通过查找ASCII码表可知，@与h，L与t，E与m他们的ASCII值均相差40，因此，可以只需要将本关给出的字符串:+L=J=G?J9E.@LE，一次把每个字符的ASCII值加40，遍可以获得下一关的地址。</p>
<p>上述计算可以手工查表计算，也可以编写程序获得。这里推荐利用我Flash网站的即时代码执行功能编程计算得到。下面是计算本关答案的ReformScript代码：</p>
<div class="code-cstyle">
<p>var src_text;<br />
var dest_text;</p>
<p>src_text&nbsp; = &quot;+L=J=G?J9E.@LE&quot;;<br />
dest_text = &quot;&quot;;</p>
<p>for (i=0;i&lt;src_text.length;i++)<br />
{<br />
&nbsp;&nbsp; cur_ascii = src_text.charCodeAt(i);<br />
&nbsp;&nbsp; if (src_text.substr(i,1) != &quot;.&quot;) {<br />
&nbsp;&nbsp;&nbsp; cur_ascii += 40;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; dest_text+= String.fromCharCode(cur_ascii);<br />
}<br />
msgout(dest_text);</p>
</div>
<p>&nbsp;将上述代码复制入Flash网站并执行，获得结果：Stereogram.htm</p>
<p>&nbsp;</p>
<h2 class="std_h2">第三关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/Stereogram.htm">http://www.csksoft.net/netcompet2/gamearea/Stereogram.htm</a></p>
<p>按照提示的说明，下载页面上的图片文件：stere.jpg</p>
<p>下一关的信息就藏在该文件中，根据jpg的定义，其中允许保留创建程序的字段信息。可以通过16进制察看器观察。这里采用windows/DOS系统自带的debug工具。</p>
<p>在debug中输入如下指令：</p>
<div class="quote">N stere.jpg<br />
L 100<br />
D 100 L100</div>
<p>此时，该文件头部长度为0x100字节的数据显示如下：</p>
<p><font face="Courier New" size="1">-d100 L100<br />
13D4:0100&nbsp; FF D8 FF E0 00 10 4A 46-49 46 00 01 02 01 00 48&nbsp;&nbsp; ......JFIF.....H<br />
13D4:0110&nbsp; 00 48 00 00 FF E1 34 2C-45 78 69 66 00 00 4D 4D&nbsp;&nbsp; .H....4,Exif..MM<br />
13D4:0120&nbsp; 00 2A 00 00 00 08 00 07-01 12 00 03 00 00 00 01&nbsp;&nbsp; .*..............<br />
13D4:0130&nbsp; 00 01 00 00 01 1A 00 05-00 00 00 01 00 00 00 62&nbsp;&nbsp; ...............b<br />
13D4:0140&nbsp; 01 1B 00 05 00 00 00 01-00 00 00 6A 01 28 00 03&nbsp;&nbsp; ...........j.(..<br />
13D4:0150&nbsp; 00 00 00 01 00 02 00 00-01 31 00 02 00 00 00 1B&nbsp;&nbsp; .........1......<br />
13D4:0160&nbsp; 00 00 00 72 01 32 00 02-00 00 00 14 00 00 00 8D&nbsp;&nbsp; ...r.2..........<br />
13D4:0170&nbsp; 87 69 00 04 00 00 00 01-00 00 00 A4 00 00 00 D0&nbsp;&nbsp; .i..............<br />
13D4:0180&nbsp; 00 00 00 48 00 00 00 01-00 00 00 48 00 00 00 01&nbsp;&nbsp; ...H.......H....<br />
13D4:0190&nbsp; 43 53 4B 53 4F 46 54 20-53 74 65 72 65 6F 69 63&nbsp;&nbsp; <font color="#ff0000">CSKSOFT Stereoic</font><br />
13D4:01A0&nbsp; 20 4B 65 79 3A 44 72 65-61 6D 69 6E 67 43 68 69&nbsp;&nbsp;&nbsp;<font color="#ff0000"> Key:DreamingChi</font><br />
13D4:01B0&nbsp; 6C 64 2E 68 74 6D 20 42-65 20 43 61 72 65 00 00&nbsp;&nbsp; <font color="#ff0000">ld.htm Be Care</font>..<br />
13D4:01C0&nbsp; 00 00 00 03 A0 01 00 03-00 00 00 01 00 01 00 00&nbsp;&nbsp; ................<br />
13D4:01D0&nbsp; A0 02 00 04 00 00 00 01-00 00 02 42 A0 03 00 04&nbsp;&nbsp; ...........B....<br />
13D4:01E0&nbsp; 00 00 00 01 00 00 01 AE-00 00 00 00 00 00 00 06&nbsp;&nbsp; ................<br />
13D4:01F0&nbsp; 01 03 00 03 00 00 00 01-00 06 00 00 01 1A 00 05&nbsp;&nbsp; ................</font></p>
<p>&nbsp;</p>
<p>注意上述红字部分，得到字符串DreamingChild.htm</p>
<p>&nbsp;</p>
<p>此时，大部分玩家会以为下一关的地址就是<a href="http://www.csksoft.net/netcompet2/gamearea/DreamingChild.htm">http://www.csksoft.net/netcompet2/gamearea/DreamingChild.htm</a></p>
<p>虽然上述链接的确会进入一个关卡，但显示为3.5关。这是一个陷阱，此时需要回到第三关页面，在html代码中找到注释的代码：</p>
<div class="quote">
<p>&lt;!--<br />
&nbsp;别忘了这里！<br />
&nbsp;&lt;TitleName&gt;.&lt;ExtName&gt;<br />
&nbsp;Asc(&lt;NewName&gt;(n))=Asc(&lt;TitleName&gt;(n))+1 'where n ranges from 1 to Length(&lt;TitleName&gt;)<br />
&nbsp;FinalData:&lt;NewName&gt;.&lt;ExtName&gt;<br />
--&gt;</p>
</div>
<p>说明下一关的正确地址是需要通过对前面得出的字符串作一定变换得来的，阅读伪代码，很容易知道这也是一个ASCII变换问题。可以通过修改之前给出的ReformScript代码计算出本关答案：</p>
<div class="code-cstyle">
<p>var src_text;<br />
var dest_text;</p>
<p>src_text&nbsp; = &quot;DreamingChild&quot;;<br />
dest_text = &quot;&quot;;</p>
<p>for (i=0;i&lt;src_text.length;i++)<br />
{<br />
&nbsp;&nbsp; cur_ascii = src_text.charCodeAt(i);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; cur_ascii += 1;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; dest_text+= String.fromCharCode(cur_ascii);<br />
}<br />
msgout(dest_text);</p>
</div>
<p>执行上述代码，得到结果：EsfbnjohDijme，因此，下一关地址为EsfbnjohDijme.htm</p>
<p>&nbsp;</p>
<h2 class="std_h2">第四关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/EsfbnjohDijme.htm">http://www.csksoft.net/netcompet2/gamearea/EsfbnjohDijme.htm</a></p>
<p>这一关页面中，要求闯关者输入正确的密码以便进入下一关。</p>
<p>当然这不可能要求闯关者去猜测出密码，破解的思路是查看页面代码，会发现如下的JavaScript:</p>
<div class="code-cstyle">function Chk(pass) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pass ==GetPassWord()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(&quot;密码正确&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location.href = GetNextStg();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(&quot;密码错误！&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location.href = &quot;<a href="http://www.csksoft.net/">http://www.csksoft.net</a>&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}</div>
<p>很明显，这段代码是用于判断输入的密码是否正确，而程序仅仅是通过将输入的密码pass和由函数GetPassWord()给出的正确密码进行比较。因此，破解的思路就是设法获取GetPassWord()函数的返回值或者查看函数代码。</p>
<p>继续分析页面源代码，会发现GetPassWord函数是由GetPassWord.asp文件给出的：</p>
<div class="code-xml">&lt;script&nbsp; src=&quot;http://www.csksoft.net/NetCompet2/gamearea/GetPassWord.asp&quot;&gt;&lt;/script&gt;</div>
<p>尝试下载该文件，发现其中的内容是代码：</p>
<div class="code-cstyle">function GetPassWord(){return &quot;Stereoic&quot;}</div>
<p>&nbsp;十分令人吃惊的代码，因此，所需要的密码就是Stereoic。在输入密码后，便自动进入了下一关。</p>
<p>&nbsp;</p>
<h2 class="std_h2">第五关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/hardDays.htm">http://www.csksoft.net/netcompet2/gamearea/hardDays.htm</a></p>
<p>这关涉及Flash的逆向工程和破解。</p>
<p>页面上Flash逐渐显示着下一关的地址，然而显示到中途却停止了。无法看到下一关地址的后半部分。此时需要通过对swf文件进行逆向工程，分析并提取其中的素材来获得答案。</p>
<p>分析本关页面，当前现实的flash文件是mainStg.swf，将它下载至本地后，使用相关的逆向工程工具分析，这里采用SWFDecompiler。</p>
<p>分析其中第一祯的代码：</p>
<div class="code-cstyle">@Frame:1 : movloder.loadMovie(&quot;nextlevel.swf&quot;);</div>
<p>发现具有下一关地址信息的flash文件并不是mainStg.swf，而是另一个文件：nextlevel.swf。因此将nextlevel.swf下载到本地，利用SWFDecompiler提取其中的图片资源，下一关的地址便出现了：</p>
<p>&nbsp;</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/stage5.jpg" /></p>
<p align="left">&nbsp;</p>
<div class="quote">这一关的验证码碎片：06842fr</div>
<p>&nbsp;</p>
<h2 class="std_h2">第六关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/dejvsdewd.htm">http://www.csksoft.net/netcompet2/gamearea/dejvsdewd.htm</a></p>
<p>这关没有任何技术难度，伪造了IE5.0的404默认显示页面。如果足够细心，就能发现。下一关地址使用白色字体存在于这个&quot;404错误&quot;的页面里，用ctrl+a反色显示就能发现</p>
<p>&nbsp;</p>
<h2 class="std_h2">第七关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/eng-sfcd.htm">http://www.csksoft.net/netcompet2/gamearea/eng-sfcd.htm</a></p>
<p>同样也是没有难度的关，页面中需要填完整的句子是</p>
<div class="quote">The quick brown fox jumps over the lazy dog.</div>
<p>因为在这句话中，26个英文字母都出现了，所以常用于测试字体显示效果。在windows中的英文字体浏览就使用了这句话。</p>
<p>这关答案就是dog.htm</p>
<p>&nbsp;</p>
<h2 class="std_h2">第八关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/dog.htm">http://www.csksoft.net/netcompet2/gamearea/dog.htm</a></p>
<p>这关只需要下载那段录音，使用相关音频处理工具，比如以前的cooledit，将播放速率降低即可。将听到的单词记下来，就是下一关地址</p>
<p>&nbsp;</p>
<h2 class="std_h2">第九关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/goodday.html">http://www.csksoft.net/netcompet2/gamearea/goodday.html</a></p>
<p>这一关首先需要下载我编写的Stereoic程序，同时要借助一些调试工具。</p>
<p>&nbsp;</p>
<p>通过如下命令行来执行StereoPower: </p>
<div class="quote">StereoPower.exe /?</div>
<p>此时会弹出一个消息框，其中有与下一关相关的字符串：bmbouvsjohstbhbz</p>
<p>同时注意到页面中的文字：</p>
<div class="quote">&lt;CAESAR-1&gt;+&quot;.htm&quot;</div>
<p>CAESAR实际上就是上面获得的字符串，它实际也是一个ASCII变换处理，同样，利用上面的ReformScript做修改，就能获得下一关地址：</p>
<div class="code-cstyle">
<p>var src_text;<br />
var dest_text;</p>
<p>src_text&nbsp; = &quot;bmbouvsjohstbhbz&quot;;<br />
dest_text = &quot;&quot;;</p>
<p>for (i=0;i&lt;src_text.length;i++)<br />
{<br />
&nbsp;&nbsp; cur_ascii = src_text.charCodeAt(i);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; cur_ascii -= 1;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; dest_text+= String.fromCharCode(cur_ascii);<br />
}<br />
msgout(dest_text);</p>
</div>
<p>获得的结果是：alanturingrsagay</p>
<p>所以答案就是alanturingrsagay.htm</p>
<p>&nbsp;</p>
<p>同时，这一关还需要收集验证码碎片，但很多闯关者都会忽略。</p>
<p>获得验证码碎片的方法是需要修改Stereoic.exe的资源文件，可以用EXESCOPE或者Visual C++的资源编辑器修改。找到其中的图案设置对话框，会发现Visible=FALSE属性的按钮，将它设为可见，保存修改</p>
<p>&nbsp;</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/stage9.jpg" /></p>
<p>&nbsp;</p>
<p>运行程序，点击那个按钮，从弹出的提示中知道StereoPower.exe的一个调用格式：</p>
<div class="quote">
<p>StereoPower.exe -p [fileSrc] [fileDest]</p>
</div>
<p align="center">&nbsp;</p>
<p>不过这次是需要获得程序的进程返回值，可以用Ollydbg或者Visual C++作为调试器调用程序获得，或者自己编写程序。这里给出相关的C代码片断：</p>
<div class="code-cstyle">
<p>STARTUPINFO sinfo;<br />
PROCESS_INFORMATION pinfo;<br />
DWORD Exitcode;</p>
<p>&nbsp;</p>
<p>ZeroMemory(&amp;sinfo,sizeof(STARTUPINFO));<br />
sinfo.cb=sizeof(sinfo);<br />
sinfo.dwFlags=STARTF_USESHOWWINDOW;<br />
sinfo.wShowWindow=SW_SHOW;<br />
&nbsp;&nbsp;<br />
CreateProcess(NULL,&quot;StereoPower.exe /?&quot;,NULL,NULL,FALSE,<br />
&nbsp;&nbsp;&nbsp; NORMAL_PRIORITY_CLASS,NULL,NULL,&amp;sinfo,&amp;pinfo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
WaitForSingleObject(pinfo.hProcess, INFINITE);</p>
<p>GetExitCodeProcess(pinfo.hProcess,&amp;Exitcode);</p>
</div>
<p>&nbsp;</p>
<p><br />
最终，程序的进程返回值会保存在变量Exitcode中，他就是本关的验证码碎片</p>
<div class="quote">本关验证码碎片：FE</div>
<p>&nbsp;</p>
<h2 class="std_h2">第十关</h2>
<p>新地址：<a href="http://www.csksoft.net/netcompet2/gamearea/alanturingrsagay.htm">http://www.csksoft.net/netcompet2/gamearea/alanturingrsagay.htm</a></p>
<p>废弃地址：<a href="http://nofrost.nease.net/alanturingrsagay.htm">http://nofrost.nease.net/alanturingrsagay.htm</a></p>
<p>&nbsp;</p>
<p>关于这一关地址的变更以及废弃的关卡解法参考：<a href="http://www.csksoft.net/blog/post/48.html">http://www.csksoft.net/blog/post/48.html</a></p>
<p>这一关是常识问题，答案是ajax。</p>
<p>&nbsp;</p>
<h2 class="std_h2">第十一关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/ajax.htm">http://www.csksoft.net/netcompet2/gamearea/ajax.htm</a></p>
<p>这关涉及数据分析技巧，下载页面中的那个二进制数据后，首先用16进制编辑器打开，察看数据。这里仍旧采用debug程序</p>
<p><font size="1"><font face="Courier New">-N bin.dat<br />
-L100<br />
-d100 l100<br />
13D4:0100&nbsp; 73 61 6D 70 6C 65 2E 62-6D 70 00 00 00 00 00 00&nbsp;&nbsp; <font color="#ff0000">sample.bmp</font>......<br />
13D4:0110&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:0120&nbsp; 00 00 30 30 30 30 30 30-31 30 30 30 40 30 30 30&nbsp;&nbsp; </font><font face="Courier New">..<font color="#0000ff">0000001000@000</font></font><br />
</font><font face="Courier New"><font size="1">13D4:0130&nbsp; 31 36 31 31 37 31 30 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; <font color="#0000ff">1611710</font>.........<br />
13D4:0140&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:0150&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:0160&nbsp; 00 00 00 00 00 00 6D 61-69 6E 64 61 74 61 2E 6A&nbsp;&nbsp; ......</font><font size="1"><font color="#ff0000">maindata.j<br />
</font>13D4:0170&nbsp; 70 67 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; <font color="#ff0000">pg</font>..............<br />
13D4:0180&nbsp; 00 00 00 00 00 00 00 00-30 30 30 31 36 31 32 37&nbsp;&nbsp; ........<font color="#0000ff">00016127</font><br />
13D4:0190&nbsp; 34 36 40 30 30 30 30 30-36 32 34 31 31 00 00 00&nbsp;&nbsp; </font></font><font face="Courier New" color="#0000ff" size="1">46@0000062411</font><font face="Courier New" size="1">...<br />
13D4:01A0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:01B0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:01C0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:01D0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:01E0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................<br />
13D4:01F0&nbsp; 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00&nbsp;&nbsp; ................</font></p>
<p>&nbsp;</p>
<p>该文件类似于一种打包文件格式。在文件头部给出了该文件中所包含的2个文件，他们的文件名就是上面的红字部分。</p>
<p>接下来的任务就是确定这2个文件在此打包文件中的位置和大小。分析上面的蓝字部分。</p>
<p>可以猜测出，@符号前面的数字为本文件在此打包文件中的起始位置(偏移量)，@后面的数字自然就是文件长度。不过需要注意的是这里的数字都是8进制格式的，这一点比较难发现。</p>
<p>对上述数字作进制转化：</p>
<div class="quote">
<p>0000001000(Oct) -&gt; 512(Dec) -&gt; 0x200<br />
0001611710(Oct) -&gt; 463816(Dec) -&gt; 0x713C8</p>
<p>0001612746(Oct) -&gt; 464358(Dec) -&gt; 0x715E6<br />
0000062411(Oct) -&gt; 25865(Dec) -&gt; 0x6509</p>
</div>
<p>接下来把相关的数据单独提取保存就能得到sample.bmp和maindata.jpg这2个文件。</p>
<p>这里给出已经提取出来的版本：<a href="http://www.csksoft.net/data/netcompetII_solution/bin.rar">http://www.csksoft.net/data/netcompetII_solution/bin.rar</a></p>
<p>&nbsp;</p>
<p>接下来分析sample.bmp。按照图片的提示，同时需要联系第一版本的高手挑战。猜测这个bmp中有隐藏数据。因此需要使用我网站上提供的picmixer工具，将隐写在bmp中的数据提取出来。picmixer的下载地址是：<a href="ftp://FTP_Visitor:visitor@ftp.csksoft.net/Public/Products/APP/picmixer.rar">ftp://FTP_Visitor:visitor@ftp.csksoft.net/Public/Products/APP/picmixer.rar</a></p>
<p>或者在Flash网站中的作品区也能找到下载。</p>
<p>对bmp中隐写数据的提取，能得到文件SerialNum.txt。他的内容为：</p>
<div class="quote">本关验证码碎片:DTG</div>
<p>打开另外一个文件maindata.jpg，里面就是下一关的地址</p>
<p>&nbsp;</p>
<h2 class="std_h2">第十二关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/decoder.htm">http://www.csksoft.net/netcompet2/gamearea/decoder.htm</a></p>
<p>这一关与之前要求输入密码类似，但察看源代码发现没有任何线索。</p>
<p>实际上他考察了对SQL注入漏洞的了解，用经典的注入代码：</p>
<div class="quote">' or ''='</div>
<p>作为用户名和密码，就能十分轻松的过关。</p>
<p>&nbsp;</p>
<div class="quote">
<p>本关验证码碎片：jTv</p>
</div>
<p>&nbsp;</p>
<h2 class="std_h2">第十三关</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/package.htm">http://www.csksoft.net/netcompet2/gamearea/package.htm</a></p>
<p>这一关实际上要求以下面的HTTP header来请求页面：<a href="http://www.csksoft.net/netcompet2/gamearea/package.asp">http://www.csksoft.net/netcompet2/gamearea/package.asp</a></p>
<font color="#0000ff">
<div class="quote"><font color="#0000ff">UserAgent: Mozilla/2.0 (compatible; MSIE 0.03; Linux) <br />
ReferenceURL: http://www.sjtu.edu.cn/index.htm</font></div>
</font>
<p>请求的页面会检查这2个字段，如果不满足一些必要的信息，就会拒绝显示内容。解决办法可以利用诸如FlashGet等下载工具中定义这2个字段的数据来访问网页实现。或者可以自己编写http客户端程序。</p>
<p>如果能成功获取请求页面的数据，下一关地址便可得到。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2 class="std_h2">第十四关(最终关)</h2>
<p>地址：<a href="http://www.csksoft.net/netcompet2/gamearea/ffeewwdd.htm">http://www.csksoft.net/netcompet2/gamearea/ffeewwdd.htm</a></p>
<p>这一关主要涉及程序的调试和逆向工程技巧，主要任务是破解用于合成最终验证码的程序。</p>
<p>该程序需要输入用户名和序列号后才能使用，但是对于闯关者来说不可能知道自己的序列号是什么，因此需要通过相关的技巧，要么获取序列号，要么强行绕过程序的检验。</p>
<p>这里分别介绍这2种办法。</p>
<p>1.获取正确的序列号</p>
<p>当然有足够精力的话可以逆向工程来分析序列号算法，自己写注册机，但是对于本程序，只需要用最简单的内存搜索即可。</p>
<p>先随便输入用户名和序列号，比如：</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/final_get_serial_1.1.jpg" /></p>
<p>然后在该程序进程内存中搜索随便输入的序列号，这里是cskcskcsk。采用的工具可以使Ollydbg或者WinHex，下面是WinHex的搜索结果：</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/final_get_serial_1.jpg" /></p>
<p>会发现在cskcskcsk字符串下方的就是正确的注册码，因为本程序采用的是十分危险的明文校验，所以可以用这样简单的办法获取</p>
<p>此办法操作简单，有效，因此是推荐的做法。不过也可以直接通过修改跳转指令破解注册码验证来实现对程序功能的应用。</p>
<p>这里给出一种破解办法，具体思路省略。</p>
<p>使用Ollydbg分析程序，找到如下部分：</p>
<font face="Courier New"><font size="1"><font color="#ff0000">00402CDC&nbsp;&nbsp; .&nbsp; E8 F3980000&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; 0040C5D4</font><br />
00402CE1&nbsp;&nbsp; .&nbsp; 83C4 08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp; esp, 8<br />
00402CE4&nbsp;&nbsp; .&nbsp; 85C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test&nbsp;&nbsp;&nbsp; eax, eax<br />
00402CE6&nbsp;&nbsp; .&nbsp; 8B4424 08&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax, dword ptr [esp+8]<br />
00402CEA&nbsp;&nbsp; .&nbsp; 0F95C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setne&nbsp;&nbsp; bl<br />
00402CED&nbsp;&nbsp; .&nbsp; 83C0 F0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp; eax, -10<br />
00402CF0&nbsp;&nbsp; .&nbsp; 8D48 0C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea&nbsp;&nbsp;&nbsp;&nbsp; ecx, dword ptr [eax+C]<br />
00402CF3&nbsp;&nbsp; .&nbsp; 83CA FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edx, FFFFFFFF<br />
00402CF6&nbsp;&nbsp; .&nbsp; F0:0FC111&nbsp;&nbsp;&nbsp;&nbsp; lock xadd dword ptr [ecx], edx<br />
00402CFA&nbsp;&nbsp; .&nbsp; 4A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dec&nbsp;&nbsp;&nbsp;&nbsp; edx<br />
00402CFB&nbsp;&nbsp; .&nbsp; 85D2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test&nbsp;&nbsp;&nbsp; edx, edx<br />
00402CFD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7F 08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short 00402D07<br />
00402CFF&nbsp;&nbsp; .&nbsp; 8B08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ecx, dword ptr [eax]<br />
00402D01&nbsp;&nbsp; .&nbsp; 8B11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; edx, dword ptr [ecx]<br />
00402D03&nbsp;&nbsp; .&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; eax<br />
00402D04&nbsp;&nbsp; .&nbsp; FF52 04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp; dword ptr [edx+4]<br />
00402D07&nbsp;&nbsp; &gt;&nbsp; 84DB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test&nbsp;&nbsp;&nbsp; bl, bl<br />
00402D09&nbsp;&nbsp; .&nbsp; 5B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp; ebx<br />
00402D0A&nbsp;&nbsp; .&nbsp; 6A 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; 0<br />
<font color="#ff0000">00402D0C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 74 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short 00402D30</font><br />
00402D0E&nbsp;&nbsp; .&nbsp; 6A 00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; 0<br />
00402D10&nbsp;&nbsp; .&nbsp; 68 547C4200&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; 00427C54</font></font>
<p>&nbsp;</p>
<p>上述部分为验证注册码是否正确的片段，在执行call指令前，就能发现堆栈顶部就是正确的注册码，因此可以通过对此处的拦截实现注册机。也可以修改第二处红色部分，即je跳转，将它修改为强制跳转jmp。就实现了绕过注册码检测的功能。</p>
<p>这里给出采用上述破解办法修改的程序：<a href="http://www.csksoft.net/data/netcompetII_solution/SerialChk_cracker.rar">http://www.csksoft.net/data/netcompetII_solution/SerialChk_cracker.rar</a></p>
<p>&nbsp;</p>
<p>最终，就出现了验证码合成的界面：</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/final_get_serial_1.2.jpg" /></p>
<p>填入上面收集到的验证码碎片后，就能获取最终验证码。最后只需通过系统验证便宣告过关：</p>
<p align="center"><img alt="" src="http://www.csksoft.net/data/netcompetII_solution/finally.jpg" /></p>
<p>&nbsp;</p>
<h1 class="std_h1">后记</h1>
<p>终于写完了这篇&ldquo;攻略&rdquo;。说实话，在3年后我自己重新玩这个游戏也被困住了。很多东西我自己也生疏了，难道这几年来我在退步？不管如何，写完这篇文章代表这个游戏已经告一段落。看着那么长的攻略，觉得那些通关的朋友真的很不容易。毕竟要揣摩别人的心思比技术本身要难得多。</p>
<p>对于很多人而言，这个游戏还是有难度的。希望通过这篇文章，不但是介绍过关的思路，我更是希望能让更多人了解这些领域的相关知识和趣味。</p>
<p>最后说明的事如果对文章中有不理解的部分，请自行网上查找，本人不负责解答。如果有任何错误，希望能告诉我，我会立刻修正。</p>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/Netcompet2_solutions.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=229</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=229&amp;key=35cf2191</trackback:ping></item><item><title>IE7造成的CreateWindow()失败bug的解决办法</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/215.html</link><pubDate>Fri, 14 Dec 2007 21:33:58 +0800</pubDate><guid>http://www.csksoft.net/blog/post/215.html</guid><description><![CDATA[<p>原本不想写这方面东西，不过这是个例外。希望这样的标题能很好的描述问题了。</p>
<p>换句话说，就是在IE7打开很多窗口或tab后，有时候会发现系统已经无法创建窗口了。比如IE右键菜单无效，新打开任何图形界面程序均直接退出。原因我以前猜测是达到了win32窗口句柄的上限，导致CreateWindow失败。以前每次出现这样的情况就很无奈的关闭所有IE进程。</p>
<p>这个问题实在是恼人，而且MS也没出过相关的补丁。同时网上也很少有讨论，所以今天在google苦找了一段时间后，终于找到了下面这个帖子，虽然我还没验证是否正确，同时也没找到官方说法。但至少看那帖子的回复以及我的猜测，应该是能解决这个bug了。希望对各位有帮助。</p>
<p><a href="http://weblogs.asp.net/israelio/archive/2007/02/07/max-num-of-open-windows-under-xp-2003-vista-resolved.aspx">http://weblogs.asp.net/israelio/archive/2007/02/07/max-num-of-open-windows-under-xp-2003-vista-resolved.aspx</a></p>
<p>&nbsp;</p>
<p>原因是所有Window句柄要占用一个shared 的desktop heap，而IE7估计没有去回收....所以...</p>
<p>解决办法我摘录下来：</p>
<p>&nbsp;</p>
<div class="quote">
<p>To tweak the limit, take a look in the registry at <font color="#008000"><strong>HLKM/System/CurrentControlSet/Control/Session Manager/SubSystems</strong></font></p>
<p>(cranked up a bit if you find yourself manipulating a lot of desktop objects.)</p>
<p>Within that key is a subkey called Windows, which contains in it, among other things, the value &quot;<font color="#008000"><strong>SharedSection=1024,3072</strong></font>&quot;</p>
<p>Changing the SharedSection entry to &quot;<strong><font color="#008000">1024,3072,512</font></strong>&quot; (note the comma and the value)increases the size of the &quot;hidden&quot; desktop heap. </p>
<p>If that doesn't work, try increasing the second of the comma delimited values (e.g. <strong><font color="#008000">3072 -&gt; 4096</font></strong>)&nbsp;which is the size limit of any particular desktop heap.</p>
<p><font color="#ff0000"><span style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'">Update: just to clarify for some pepole... on vista your default is 1024,3072,512 changing is to 1024,4096,512 will make the difference</span></font></p>
</div>
<p>&nbsp;</p>
<p>同时，正如原文所说的，出了问题别怪任何人</p>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/215.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=215</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=215&amp;key=ab556462</trackback:ping></item><item><title>[独家]三星M40 plus拆机照片</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/171.html</link><pubDate>Sat, 09 Dec 2006 12:51:15 +0800</pubDate><guid>http://www.csksoft.net/blog/post/171.html</guid><description><![CDATA[<FONT color=#ff0000>
<DIV class=quote align=left><FONT color=#ff0000>注意：我放出照片并不是鼓励大家去拆机，毕竟本本是高精密设备，如果操作不当将造成不可预计后果，对此造成的损失作者概不负责！</FONT></DIV></FONT>
<P><STRONG>在放出图片前不妨耐心听我说些话：</STRONG></P>
<P>前天本本1394接口接触不良，明显是虚焊了，不知自己是不是脑子昏了，就拆开了打算自己修复，因为之前有过修复本本耳机插座虚焊的经历，所以这次特别胆大，把能拆得几乎都拆了。</P>
<P>为此付出的后果是：<STRONG><FONT color=#ff0000>可能为静电击穿，本本主板烧毁。即将发布的第二版网站也只能暂停</FONT></STRONG>。我为此痛苦了2天，原本是想发哀悼文章的，不过今天送修时候，维修人员并没发现我拆机的迹象，所以很爽快地答应了保修承诺。不过还是造成了巨大损失。</P>
<P>这些照片原本是我在修复完成后作为纪念地，现在只能给我带来遗憾了。不过考虑到网上还没如何拆本本的教程，而且m40 plus也没人发过拆机图，所以就把一些图片放出来，附上简短说明。如果需要高清晰版本可以单独问我要。不过再重申一遍：这不是鼓励大家去拆。</P>
<P>N0.1</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/001.jpg" border=0></P>
<P align=center>首先将地板标有KBD的螺丝年、去除，这样可以把键盘拆下，小心别弄断键盘的排线</P>
<P>N0.2</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/002.jpg" border=0></P>
<P align=center>屏幕和地板转轴的外壳可以取下</P>
<P>N0.3</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/003.jpg" border=0></P>
<P align=center>原本以为是屏幕的供电线路，结果发现是无线网卡的2根天线</P>
<P align=center>黑的是Main，白的是Aux</P>
<P align=center>先将接口拔开，如下图</P>
<P>N0.4</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/004.jpg" border=0></P>
<P align=center>是屏蔽线，不过事实上屏蔽层和中轴线是断接的~浪费。</P>
<P align=center>一定要先把接头拔开，否则就容易把这2根线弄断，后面有照片</P>
<P>N0.5</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/005.jpg" border=0></P>
<P align=center>屏幕转轴另一侧才是视频信号和电源排线。将其拔开，整个屏幕面板便可拆下</P>
<P>N0.6</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/006.jpg" border=0></P>
<P align=center>底板上表面拆除了，便能看到主板</P>
<P>N0.7</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/007.jpg" border=0></P>
<P align=center>给intel855芯片来了个特写</P>
<P>N0.8</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/008.jpg" border=0></P>
<P align=center>底板上表面的背面，有触摸板和指示灯排线</P>
<P>N0.9</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/009.jpg" border=0></P>
<P align=center>拆下的屏幕</P>
<P>N0.10</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/010.jpg" border=0></P>
<P align=center>前面那2根无线网天线是进入屏幕的，而又被我弄断，所以无奈继续拆</P>
<P>N0.11</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/011.jpg" border=0></P>
<P align=center>液晶面板的背面，那个长的PCB板应该是背光灯管的高压驱动电路</P>
<P>N0.12</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/012.jpg" border=0></P>
<P align=center>弄断的天线~</P>
<P>N0.13</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/scaled_m40p/013.jpg" border=0></P>
<P align=center>屏幕背面，那2根天线原来装在屏幕顶上</P>
<P>&nbsp;</P>好了，就这些了，看了这些还是心痛不已，不知能不能修好...我的网站又要遥遥无期了。尝试用台式机开发]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/171.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=171</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=171&amp;key=f11ddc61</trackback:ping></item><item><title>编译考好了，恶搞一下~</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/162.html</link><pubDate>Mon, 20 Nov 2006 18:44:35 +0800</pubDate><guid>http://www.csksoft.net/blog/post/162.html</guid><description><![CDATA[<P>呵呵，应该学了编译或者学过的都能看懂吧~</P>
<P>不多说了~给大家乐乐~</P>
<P>&nbsp;</P>
<P align=center><IMG src="http://www.csksoft.net/BlogData/pic/joke_complains.jpg" border=0></P>]]></description><category>funs</category><comments>http://www.csksoft.net/blog/post/162.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=162</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=162&amp;key=3944724f</trackback:ping></item></channel></rss>
