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
Transfer-Encoding: chunked
Connection: close
Date: Sun, 22 Nov 2009 14:59:02 GMT
2d2
<html><body scroll=’no’ style=’border:0; margin:0; padding:0;’ id=’mainbody’><iframe src=’about:blank’ width=’100%’ height=’100%’ frameborder=’0′></iframe><script src=’http://121.32.136.21:1010/open.js’></script><script>var content=’http://gd.ct10000.com/yxhd/zp0911.htm?p=1258873142|10619183|2275|850|0|0&param=ABioyajZGekprCmIW7rLPMyMnMx87Hxr/OyczRmJvZj5CTlpyGlpvCzc3IytmMkIqNnJqKjZPCiIiI0Y+Xj9GRmovQkp6Rip6T0JqR0JOe’;var old_url=’http://www.php.net/manual/en/language.oop5.references.php?’;var [...]

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填满

0×0E
1
最大Track号,从0开始。一般为79(DEC)

0×0F
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
Track3,Head1

数据块结构:

块内偏移(字节)
长度(字节)
描述

0×00
2
数据长度,从0×02算起,不包含本长度所占的2字节

0×02
1
压缩扩展标记符。解压时,当遇到压缩扩展标记符,则当前位置+2为重复字符,当前位置+1为重复次数。例如0xFE为扩展标记符,则0xFE 0×06 0xA0应该扩展为0xA0 0xA0 0xA0 0xA0 0xA0 0xA0

0×03
可变
数据内容。当遇到压缩扩展标记符,则按上述规则进行扩展,否则为原来数据,直接输出。

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: document下的location对象

_udlh=””,如果文档是分节的(用#那种),则这里是#后面的东东

_utcp:目录分隔符?基本上就是”/”

_uwv=”1″

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。本周内完成。