FreeBSD 的中文console

其实 FreeBSD 的 console 早就支持中文了,问题是默认没装中文字体,所以显示出来都是方块…… 系统提供了 vtfontcvt 工具,用来转换字体到系统需要的fnt格式。它吃俩格式,bdf和hex,我只认识bdf…… 于是尝试转换 wenquanyi 的位图字体。源文件是pcf的,先要找个东西转换成bdf,姑且在github找了个: https://github.com/ganaware/pcf2bdf (刚看了眼原来有port,当初搜pcftobdf没搜到……) 转完之后用vtfontcvt,冒出来了各种错误。先是说字符宽度不支持。 打开文件一看,这货好像对字体有很多假设,比如所有字符宽度不是目标宽度的2倍就是和目标一样(等宽字体?)。 wenquanyi 里面虽然中文都是一样的,但是其他英文什么的有各种宽度,比如10pt的字体,pixel宽度有2-13不等…… 于是先修vtfontcvt才行。这个vtfontcvt问题还真不少…… 除了前面那个假设之外,他还假设每个字符都和目标一样高,是不是写的时候连bdf格式描述都没读过,拿个样例文件就开搞了…… 他还忽略了字符的偏移位置…… 修完的vtfontcvt干了这么几个事情: × 读取FONTBOUNDINGBOX信息,了解全局的基线位置 × 读取字符的BBX信息,这个包括了这个字符多大和应该放哪儿 × 干掉了那个宽度假设。当然,太宽还是不行的…… 打算提交这个修改的时候,发现有个PR已经管了一部分问题: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205707 但是这个PR修的东西略少,也没管位置偏移之类的问题,于是还是把我修的版本交了上去(一开始还弄错一个版本……)。 之后在这个PR和我的patch的基础上又搞了搞,于是支持多字体叠起来了(wenquanyi的英文太丑了,还不等宽……)。 完整版patch:http://www.henryhu.net/vtfontcvt_full.patch 最后转了个Terminus+wenquanyi的字体出来,用vidcontrol -f弄进去,现在控制台终于可以原生显示中文啦! 转完的字体(Terminus 14pt + wenquanyi 10pt): http://www.henryhu.net/ter-wqy-8×14.fnt

在Firefox里用光大网银

// WIP,光大网银很多javascript代码貌似在ff下就有问题,这里只是说ActiveX的问题 光大网银用了ActiveX,于是看上去很难在别的系统/浏览器下用。 但其实就结果来说,那个ActiveX控件没啥用…… 页面上有三个<object>,其中一个啥sign貌似啥都没干,另外俩负责加密密码/提交。 提交登录表单的时候,多数域都是空的。根据观察,控件就填了一个域:Password 为了观察那个控件都调了啥加密函数,找了个很好用的工具,叫WinAPIOverride。粗粗一看调了若干Crypt* API,于是缩小范围到各个Crypt*函数上。分析记录在 http://wiki.henryhu.net/wiki/CEB。 最后发现这个控件很匮乏,在用公钥加密了密码之后(公钥在JS里……),它蛋疼的生成了一个随机数加密了一下,之后有解密了一把,最后完全没用…… 而那个Password域,内容其实就是密码加密结果反过来之后base64一把…… 分析的时候有个地方很奇怪。看上去CryptEncrypt()的输入每次都一样,但是结果每次不同…… 后来自己写了个程序试试发现的确每次不同…… 再次看见网上说,加密时候会随机pad到block长度,才理解…… 接下来嘛,写个Greasemonkey脚本来帮助登录。第一步就是把那几个控件替换成我们的对象。替换完之后,可以登录过第一步了,之后手机短信验证还是不成。看console里有个错说HiddenSubmitArea不存在,于是插入一个进去…… 这货找遍各个地方都没找到,貌似也没啥用。 这样就可以过短信验证了…… 进去之后貌似还是有一些js错误,慢慢来…… 反正可以登录了。 作为库调用跟踪工具,WinAPIOverride还是挺好用的,功能上类似于ltrace,还有调试器的一部分功能,可以在库函数调用前后断下来,观察内存/寄存器等。IEinspector作为分析IE数据包的工具也不错,看上去比HttpFox功能更多…… 只是要收钱。 Greasemonkey代码: // ==UserScript== // @name cebbank // @namespace net.henryhu // @description ceb bank // @include https://www.cebbank.com/per/perlogin* // @include https://www.cebbank.com/per/prePerlogin.do?_locale=zh_CN // @version 1 // @grant none // ==/UserScript==   function reset() { console.log(’reset’); }   …

Continue reading ‘在Firefox里用光大网银’ »

关于func_get_args()的小错

今天帮同学部署一个小网站,用了php,还有ajax。结果在他们本机调试很好,我弄到服务器上面,就出了问题:Fatal error: func_get_args(): Can’t be used as a function parameter in …这个很奇怪,搜了一下,貌似其实是php的一个限制(bug?),可以参见http://bugs.php.net/bug.php?id=34120貌似是实现的问题,func_get_args()这个东西不能直接用在函数的参数里面(其实文档这么说,用作第一个参数还是可以的…… 第二个就不行了)。必须要先把它赋给一个变量,然后再作为函数参数。For example,根据文档,这两个都不行:a(func_get_args(0));b(1, func_get_args(0));但其实,第一个是可以的,第二个会出上面那个错。改成$x=func_get_args(0);a($x);b(1,$x);就可以了。同学说他们的php是5.3.1,服务器上是5.2.12,大概5.3搞定了这个事情吧……

转载: 给经常修理电脑的朋友16点忠告

转载自康神的blog…… 1、首先记住这句话:永远不要承认自己是高手,因为这个称号是要付出代价的。 2、接到陌生电话后,一定要问清楚对方有什么事情,然后再告诉他(她)当前你 目前所在的位置。 3、永远不要试图通过电话或者QQ解决某个问题,对方很有可能不知道菜单是什么 东西,这不能怨他们,只能怨你自己,因为你永远懒于解释给他们听。 4、不要想着立马可以解决遇到的问题,因为你所遇到的总是崩溃的系统或者处于 崩溃边缘的系统。 5、如果对方允许你重新安装系统,那就不要试着去做任何修复工作,因为重装系 统是最快解决问题的办法。 6、除了询问哪些资料需要备份,你不要提问对方任何问题,除非你的心理承受能 力特别强。 7、学会保守做人,每次开工前,都记得告诉对方:"我可能无法最终解决问题, 还要继续吗?"。 8、对电脑的外观检查永远是第一位的,看看线路是否连接正常,看看USB接口是否 连接了其他设备等等。 9、相信硬件的抗噪能力,尽可能的情况下,不要打开对方的机箱。没有做成医生, 反倒被当作破坏者,那是很悲哀的事情。 10、做好被别人数落的心理准备,因为不懂电脑知识的人,往往懂得如何评价别人。 11、如果人家说他的内存有200G,你千万不要纠正说是硬盘,否则,你的噩运即将来临。 12、不知道菜单是什么东西的人,一般也会知道虚拟内存是怎么回事的,按照他的 要求去调整就可以了,反正这个不会影响到你完成修理工作。 13、告诉对方,你没有任何杀毒软件,否则,您所安装的杀毒软件都是最差的,也 是问题最多的。 14、别让自己成为处理打印机故障的高手,告诉你,打印机的麻烦事情可比电脑多多了。 15、坚决不要帮别人购买电脑,尤其是组装机,除非你想背上吃回扣的骂名,然后 每天屁颠屁颠的去帮他们处理故障。 16、不要反感以下两句话,它会伴随你很久时间: 第一句:"我的电脑又出大问题了。" 第二句:"你还是过来帮我看看吧。" 另外忠告在办公室工作的朋友,要记住以下几点原则: 1、尽量不要去动别人的电脑,否则,若干天以后,你的这一行动会导致他的系统崩 溃并带来埋怨。 2、不要去纠正别人的任何错误,除非你有说服别人的超强能力。 3、尽可能的前提下不要互相传递任何电子文档,因为你的文件很有可能被指责为病毒。 4、不要害怕指责,因为你无法逃避。 原文:http://blog.kangkang.net/index.php/archives/229

外网!代理!下载…… 禁令……

今天想给FireFox装个插件,FoxyProxy,去网上搜,看见Google结果显示最新2.5.4。但是没有找到中国的下载地址,mozine.cn开不了,别的都不能开。遂去各个网站找代理,现在THU那个代理常常不能用,只能自己找。cnproxy上面倒是有很多代理,但是首先要排除国外的,然后电信的基本上也用不了,这样本来就没剩下几个。更加令人不爽的是,我试了n个代理,没有一个能够给我正常上去的!最多就是有希望打开页面,但是那个速度实在是无法忍受,几分钟才把页面标题搞出来…… 就这样,浪费掉很多时间(或许有一个多小时),就是没有可用的…… 后来也不下最新版了,就找国内的能够下到的随便什么版本……IPCN的search功能实在是很弱,就找到一个,还不能用…… 国内下载站很多,但是能够好好下的就没几个,何况是这种软件…… 在国内试了好几个,要么是速度剧慢无比,要么就根本是骗人的……现在想下载软件一天比一天难了…… 用Google能够找到很多,但是有几个是能够用的?比较大的软件站,广告又很多,而且我们这里这种半网通半教育网的线路,往哪里跑都不快…… 用电信线路的网站速度可以吓死人…… 从前在上海的时候pchome还可以,后来被cnet收购,到北京之后,速度剧慢…… 估计也是电信的…… 现在就是skycn还能够用用,但也不快…… 最后,我还是拜托montoya同学帮我下载,在不到十分钟的时间内,这个文件就从网上经过他的机子到了我这里……为什么开放实验室不让上外网?虽然你的确只收1元/小时,但是不能上外网啊!我宁愿在校内有一个2元/小时,能够上外网的地方!就算寒假搞一台笔记本,下学期还是不能在宿舍用,理由是,我们是THU DCST的………… 真是见鬼…… 计算机系的偏偏查得严,还不让用电脑? 这么多人要学习程序设计,都让你们赶到开放这个1元/小时的骗钱的地方? 能用本谁会来这种破地方上网?…… 开放里面主力就是大一新生,假如大一允许用本,我看开放还剩多少客流!…… 也只有我们学校想出大一不让用本这种事情,都已经大学生了,难道都靠你们这样强制? 想抄机打游戏的不还是可以跑到网吧,甚至原来在寝室抄机还可能更有限制,跑到网吧去就是通宵!…… 再说,许多人用机子只是查查资料,大不了聊天,这个也有关系? 别人和家里人聊天也有关系? 天知道谁想出来的这种条令…… 而且还不开通大一宿舍的网络端口,好像六教没有无线信号一样…… 就算你禁止大一学生开通网络帐号,别人仍然可以借用学长的,或者干脆放一个无线路由器到楼下,用无线上网…… 再怎么说,网吧总是可以去的…… BS 这样的无聊的规定……恩,本文情绪比较激昂,主要是很长时间下不到东西,不爽憋的……

WLM的屏蔽名单?

早上打算了解一下WLM的登陆协议,也就是MSNP**,于是开个ethereal抓些包看看。之后发现随着一个标记为GCF的响应,发回来一个Xml结构的东西,根节点为 Policies 。下层有几个Policy,第二个的type属性为SHIELDS,然后下层为config,再下层,经过一个shield节点,就到了一个block节点。下层先是一个空的hashes节点,可能以后能通过hash屏蔽?…… 然后就是一个叫regexp的节点,看来是以正则表达式表示的屏蔽信息。regexp下层都是类似于这样的节点:<imtext value=”XC5waWY=” /&rt;=.有许多个,用掉四个多IP包(每个的TCP负载大约1460)。当中有许多Base64编码的正则表达式。比如\.pif,\.scr,nihao52\.com,t35\.com,quicknews\.info,shusu\.cn,… 奇怪的是还有symantec\.com/security_response/writeup\.jsp\?docid=2004-120714-0643-99,…这样的,不清楚是什么用意。完整列表:\.pif ; \.scr ; grouppicture\.php ; groupicture\.php ; gallery\.php ; staff\.php ; pics\.php ; rottentomatoes\.us ; msn\.php\?email= ; download\.php ; 69\.56\.129\.67/gift\.com ; xmas-2006 ; miralafoto/foto\.exe ; 168\.169\.78\.19 ; profile\.php\? ; tufoto ; verti2/fantasma\.zip ; armazfiles\.smtp\.ru ; sweetpictures\.myphotos\.cc/katiesex\.pif ; 201\.22\.6\.4/fotos/safada\.html ; chnstudio\.com/upload/impluse\.exe ; shurl\.org/myhomepage ; p1377\.pic-myspace\.info ; pic831\.mp3-myspace\.com ; 88chi\.com …

Continue reading ‘WLM的屏蔽名单?’ »