Polaroid Photo

点击上图访问我的私人相册。 你要知道我的中文名才可以哦!

Jeff Cai的流水账

Choose a Topic:

Sun
22
Nov '09

广东电信宽带HTTP劫持的简单分析

之前就知道电信干这个龌龊的事情,那时候据说用的是DNS劫持。Okay,我换OpenDNS。 最近浏览php.net查资料,发现电信的广告还是纷至沓来…… 无语之后,默默打开WireShark一探究竟。 发送请求: GET /manual/en/language.oop5.references.php HTTP/1.1 Host: www.php.net User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.php.net/manual/en/langref.php? 回应: HTTP/1.1 200 OK Server: Apache/2.0.43 (Unix) Content-Type: text/html Expires: Thu, 01 Jan 1970 08:00:01 GMT Cache-Control: private Cache-Control: no-cache [...]

Tue
21
Jul '09

HDCOPY的IMG格式简析

HDCOPY乃DOS时代一猛将,遥记往昔,记得第一只光盘(好贵的哦,而且当然是盗版的)里面就是装满了IMG格式的磁盘镜像。一开始还要用磁盘一个个弄出来才能用,后来还好有各路好汉的软件,才可以直接解出来,免去磁盘之痛。 闲话不提了,最近针对一个应用需要解压这个老的磁盘格式IMG。一开始自己分析,没太多头绪。还好后来找到了DOSIMG这个工具,作者还提供了源代码,通读后终于摆平。想到可能还有类似痛苦的童鞋,所以在这里把格式简单写下来。 总体结构: IMG分为头部和数据区域两大部分。其中头部对于有HD1.7和HD2.0两种格式。 头部: HD2.0头部: 偏移(字节) 长度(字节) 描述 0×00 2 0xFF 0×18,格式识别标记 0×02 1 磁盘标签长度 0×03 11 磁盘标签,就是DISK Label,不够11字节的地方用空格0×20填满 0x0E 1 最大Track号,从0开始。一般为79(DEC) 0x0F 1 每Track的Sector数目。对于3.5英寸的HD高密盘一般为18(DEC) 0×10 168 Track是否有数据的标记数组。0为无数据,1为有数据。对应HDCOPY里面的绿点。Track0,Head0为第一个,Track0,Head1为第二个,如此类推…… 长度固定为最大84Track,2Head共168。 HD1.7头部: 其实就是没有了2.0格式的头三个数据。 偏移(字节) 长度(字节) 描述 0×00 1 最大Track号,从0开始。一般为79(DEC) 0×01 1 每Track的Sector数目。对于3.5英寸的HD高密盘一般为18(DEC) 0×2 168 Track是否有数据的标记数组。0为无数据,1为有数据。对应HDCOPY里面的绿点。Track0,Head0为第一个,Track0,Head1为第二个,如此类推…… 长度固定为最大84Track,2Head共168。 数据区域: 数据区域紧接着头部,由若干的数据块组成。每个数据块包含一个Track的单面的所有Sector的内容,每个数据块都是经过简单压缩的。数据块以Track + Head的顺序排列,但不包括头部的Track标记数组里面标记为0的单面Track。下图中显示了Track2的两面(Head0,Head1)都为0的情况。 Track0, Head0 Track0,Head1 Track1,Head0 Track1,Head1 Track3,Head0 [...]

Thu
24
Jan '08

CuteQ Lib Kick Off

一直嚷嚷要搞,结果一直没动。直接发到网上好了,督促一下自己。以后每周要写一篇东东记录进度。 SF Project URL: https://sourceforge.net/projects/libcuteq 状态:0% 下周Target:了解登录的基本过程,完成心得一篇

Wed
23
Aug '06

Google Analytics Analyze(2)

  10:00才开始工作,10:30就要滚蛋,估计今天不能完成预定任务。  今天真是堕落的日子,下午开会,遭遇下雨,一伙人外出腐败,回来联网极品飞车到刚才……  无论如何,还是有点时间,先写部分吧。作为一个单部分还是不够分量的,明天继续修改好了。  抓紧时间,说说进展。   1.都说做事要站在巨人的肩膀上,在网上继续搜集前人的研究成果,发现了以下的资源。   2.上了firefox的插件firebug,但还不怎么会用……   打算按函数来逐步肢解分析这个脚本。urchinTracker明显是入口,就先不看。本来打算直接看下面的其他函数,发现若干不明意义的全局变量。em…先突破这些变量。      var _uff, _udh, _udt, _ubl=0, _udo=””, _uu, _ufns=0,   _uns=0, _ur=”-”, _ufno=0, _ust=0, _ubd=document,   _udl=_ubd.location, _udlh=””, _utcp=”/”, _uwv=”1″;   var _ugifpath2=”http://www.google-analytics.com/__utm.gif”;   if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf(‘#’));   if (_udl.protocol==”https:”) _ugifpath2=”https://ssl.google-analytics.com/__utm.gif”;   if (!_utcp || _utcp==””) _utcp=”/”;     —-08.29 update—-  命名规则:_u起头 _uff:初始为0,似乎是标记脚本是否被执行过用的。在主函数urchinTracker中的尾部设为1,urchinTracker头部检查此变量是否为1,是则退出。就是说,如果你错误地在两个地方都插入了这个代码,只有在头部的代码被执行。 _udh:根据domainName计算得出的Hash值,int。在urchinTracker中,_udh被_uDomain函数初始化。 _udn指定了domain。如果不修改,则默认情况是_udn=”auto”。auto表示,自动根据_udl获得domain。如 www.jeffcai.com,则会获得为jeffcai.com。Hash是采用比较经典的字符串Hash方法。 _udt: DateTime,载入的时候的时间日期 _ubl: 标记,1/0,放在if中,待定。 _udo:字符串,初始为空 _uu _ufns=0 _uns=0 _ur=”-” _ufno=0 _ust=0 _ubd: document对象 _udl: [...]

Mon
21
Aug '06

Google Analytics Analyze(1)

  前一阵子找访问统计的服务,一开始找到了ITSUN,后来又碰到了Google Analytics。冲着Google的名义,怎么着也得试用一下。那时候还需要等候Invitation。不知道是不是比较幸运,没过2天就收到了邀请,而且还可以有10个profile。  试用至今也一段日子了,和ITSUN比较,觉得图形分析方面比较强劲,另外也提供了很多目前还玩不转的报告……不过至今没有找到如何看来访IP,而ITSUN可以比较清晰地找到。  有了帐号,当然也用于统计实验室网站的访问。不过随着使用,觉得其Profile中的设置讲得不明白,我现在还不清楚一个Profile如果放在别的网站上,那样算不算我的流量?因为实验室的网站分得比较散,虽然是同一个domain,不过还是不是很确定相册和wiki的统计会不会放在一起。而看了其帮助后,更是觉得神秘兮兮的,不甚了了。例如,其中提到,如果要在多个子域中用用一个profile,则需要加上一个什么变量……总之太多疑问了……  所以,偶决定,开始解剖Analytics!你叫Analytics吗?我就analyze你。  初步翻看帮助,知道其利用浏览器执行javascript脚本来执行统计的。所以第一步,当然是解读分析这个javascript脚本。  脚本位置简单查看其提供的插入代码,可知是: http://www.google-analytics.com/urchin.js   打开,首先映入眼中的是 “Google Analytics Urchin Module”字眼。联想到其帮助提及Urchin用户云云,难道这个又是一个买回来的东东?google之,哈。果然不出所料,第一页就给出了车东的网页,提及这个事情,不过不甚清楚。进一步的搜索,终于看到了一条中文消息  进一步的搜索,发现车东已经在5月份的时候初步分析了urchin.js(不过似乎没在网页上发布分析结果)。他更多地分析了Google推出这项服务的野心和用意,恩,不愧是雅虎的人。  从初步来看,前部分是一些相对公开的变量,有着详细的注释。从 //– **** Don’t modify below this point ***   开始,就变量名就变得诡异起来,且没有任何注释。今天暂时到这,准备工具和手册,打算每天干上半个小时。呵呵,看看这个系列能写到多少。

Sat
1
Apr '06

重拾Shibboleth/GridShib

  今天起重新认真研究Shibboleth和GridShib。上学期期末奉命安装GridShib。结果搞到放假前搞完了Globus的安装,而Shibboleth则一直没有进展。看来俺的毕业也就是靠他了,决心认认真真学习研究这个东西。    目前第一步当然是安装配置起来,玩转一下,必要时读读代码也是需要的。下一步想法是把Shibboleth和学校的CAS 认证连接起来,然后把Shibboleth和另外一块任务“集群管理” 结合起来。再后来,建立Shibboleth联邦,向外推广?!(若能成事,老板肯定开心死了)   GridShib方面还不是太清楚可以怎么进展,留待以后写吧。   4.30就截稿的ChinaGrid摆在面前,能咬一口么?   一些有用的网站:Install Shibboleth 1.3 Identity Provider on Debian 3.1 (sarge), Tomcat and Apache   www.switch.ch/aai下还有很多很有用的文档。感觉比Shibboleth官方的要直观很多。准备按照上面的文章安装Shibboleth。本周内完成。