Monthly Archives: March 2010

python验证码之Discuz(四):暂时的终结

看书看得好烦,想想还是把python验证码系列暂停掉好了,其实这部分代码早几周就结束了,不过想着既然说是Discuz验证码,破解了去Discuz注册一堆马甲乱灌水一通才有快感啊。 ` 哪晓得Discuz论坛管理员们早就预见了我会这么干,早早把验证码改成了中文的,没得玩了,或者说没时间来研究怎么玩了,真是太遗憾了。 `

Posted in Discuz, python, 编程 | Tagged , , | 2 Comments

Ubuntu10.04beta尝鲜感想体会:很PP很诱人

今天看到Ubuntu 10.04出beta了,作为一个死忠,怎能不马上下载了来试用? ` 安装 开玩笑,自从ubuntu 9.10引入grub2以后,尝试新系统还用得着安装? 刻录Live CD?制作启动U盘?太落伍了,俺们要直接从iso镜像文件启动 · 在/boot/grub/grub.cfg中加入一个启动项如下: menuentry "Ubuntu 10.04 beta1 desktop" { loopback loop /boot/iso/ubuntu-10.04-beta1-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-10.04-beta1-desktop-i386.iso noeject noprompt — initrd (loop)/casper/initrd.lz } 重新启动后选择的启动项即可。 不知道是不是我的特例,启动时黑屏了很久,我还以为失败了,结果多等了会就进去了,害得我还以为grub项没写对很是折腾了会。

Posted in 其他 | Tagged | 11 Comments

西厢计划很好很强大,GFW还能拿什么来应对?

好久没看google reader了,险些错过了极其凶猛的一个翻墙工具“西厢计划”。 ` 西厢计划原理的进一步思考 ` 我看了西厢计划项目的wiki还是云里雾里的,好在youxu大大的西厢计划原理小解解释的非常清楚,在这里我也简单归纳一下,西厢计划就是在TCP建立连接之初通过插入发送完全符合协议的TCP包欺骗GFW连接已经终结,来达到穿墙的目的。原理据说如下图。

Posted in 翻墙 | Tagged , | 20 Comments

SQL vs NoSQL:数据库并发写入性能比拼

最近听说了很多关于NoSQL的新闻,比如之前Sourceforge改用MongoDB,Digg改用Cassandra等等。再加上之前做数据库比较时有人推荐我mongodb,所以也搜索了一下NoSQL,觉得NoSQL可能真的是未来的趋势。 ` NoSQL vs SQL 传统SQL数据库为了实现ACID(atomicity, consistency, isolation, durability),往往需要频繁应用文件锁,这使得其在现代的web2.0应用中越来越捉襟见肘。现在SNS网站每一个点击都是一条/多条查询,对数据库写的并发要求非常之高,而传统数据库无法很好地应对这种需求。而仔细想来SNS中大部分需求并不要求ACID,比如Like/Unlike投票等等。

Posted in 其他 | Tagged , | 13 Comments

python验证码识别之Discuz(三)

继续验证码的码字,上次把去噪的算法重新写了一下,并指出了可以改进的部分,不过我是安于现状的人,弄了个60%左右成功率的就沾沾自喜了,姑且就进入下一步吧。 ` 这期间由于discuz官方论坛不知出于何种原因突然改变了验证码的生成方式搞了个中文验证码,我本来计划着扩充测试库到100+个,好好测一下成功率的,可是他们这么一搞无奈只好自己根据Discuz7.2 UTF-8版架了个专门用于破解验证的论坛,把设置重现为Discuz官方论坛以前的设置:http://69.163.35.68/old/crackdz/ 。至于中文验证码,虽然感觉也能做,就不知道有没有时间来研究中文验证码了。

Posted in Discuz, python, 编程 | Tagged , , , | 10 Comments

Discuz你太狠了,在下甘拜下风

昨天正做着Discuz验证码的在线破解,测试到一半突然发现全错了,非常沮丧之际猛然发现是因为Discuz的验证码改成中文的了,不知道是不是我最近更新验证码破解的文章的缘故,如果是的话那也太荣幸了@@ ` 不过其实我觉得中文的验证码难度其实并没有提高太多,因为都是方块字了,旋转定位要容易得多了。我之前最头痛的还是英文字体很多,宽瘦不一,很多字母还是圆形的很难转正了比较。转不正的话很多判断都没法做,或者说做起来比较困难,而且英文比如CG6等等其实很像,旋转的不太好就会造成误判很多,中文的话当然也有这种情况,但是相对来说感觉好搞一点。 ` 说到底,你不扭曲的话验证码效果不会很好的,也就是再多花点时间破解一下中文验证码而已。

Posted in Discuz | Tagged , | 5 Comments

python验证码识别之Discuz(二)

承接上文,上文写道去噪,本文应该接着从切块开始写,然后到比对的。然则上文写完之后开始收集训练样本,把样本用去噪算法一做,惨不忍睹;再加上上文之后有很多人留言提了不少意见,所以有了新的方向。 ` 首先骨头兄提议说可以用tesseract来做OCR,这个确实是一个很好的建议。很多验证码其实很简单,根本用不到高级的东东,直接用tesseract就可以摆平。 ` 然而经过实验,效果不尽如人意,如图: ` 还有关于选取多角度多采样的建议,后来发现会导致样本容量太大,性能受到影响,所以也作出了一定的调整,目前来说验证码识别的部分算是写完了,绝对识别率在10%左右,如果可接受其他候选结果的话,识别率在50%左右,不能识别的主要因素是去噪效果不理想和没有成功切块。 ` 最后还有关于Discuz验证码使用反色阴影的建议,虽然可能可以大幅提高去噪成功率,但是因为不够通用被我舍弃了。 ` 我不喜欢直接写结论,我会把我的探索过程和绕圈子过程一起写出来,因为这样看了才有收获,否则也就是”又一个注册码破解器”这种东东而已,能写出来多少就写多少吧。

Posted in Discuz, python, 编程 | Tagged , , , | 11 Comments

OpenVZ主机的省内存绝招

前文有做过OpenVZ和Xen主机的性能比较,个人因为OpenVZ的性能较好而更中意OpenVZ主机。 ` OpenVZ的最大问题在于内存,它把虚拟内存也计入你消耗的内存,无形中吃掉了大量的内存,OpenVZ有大量的公共开销免去了内存消耗,但两相比较下来很可能会比Xen占用更多内存。 ` 这种多占内存的现象在多线程应用时尤为明显,这是因为一个线程默认就要占用8M的Stack,比如php-cgi5开5个线程的话,啥都没干就要吃掉40M内存。 ` 这个省内存绝招就是修改Stack大小:

Posted in Linux, VPS相关, 站长 | Tagged , , , | 11 Comments