Monday, April 27, 2009

Srun3000 客户端分析的补充

先把后来补充的帖子贴上

时间差的校正
[url]http://www.bitunion.org/redirect.php?goto=findpost&ptid=10141437&pid=8570527[/url]


关于 3L的 FFFF57b4 这个数字
刚才咨询过 srun的技术总监
得到的答复是,在第一次使用客户端的时候,会和服务器进行一次额外通信
然后会有个双向误差校正的过程

这个数据存在注册表的 HKEY_CURRENT_USER\Software\srun3000\login 下的 time_diff里


然后来个人帮忙解决那个时间的问题吧

更新:

由于客户端的信息,存放在注册表中
刚才清空了注册表,进行了一次客户端的全过程抓包

1 登陆 密码错误,原因是时间不对,服务器的返回值为 password_error@TIMESTAMP 后边的 TIMESTAMP是服务器的unix timestamp,形如1240749982
2 本地时间纠正 用服务器的时间减去本地的时间,然后算出时间差,用某种形式存放在注册表里,就跟上边的那个诡异数字似的
3 新登陆 (int)(本地时间+时间差)60; 作为key

。。。。。。。

========================我是分割线=======================


基本时间差的算法就这样了
分钟级的校验,应该还是能接受的,就差传输安全了
但是比较不太舒服的是,新的版本,增加了一些东西,暂时没明白什么意思
大概 http 响应的数据包含三部分
(Code in hex)\r\ndata[\r\n[some other stuff]]
code in hex 大概是 1到两个字节的 16进制字符,估计是通信协议里的一些事件编码
最后一个 someother stuff 是在登陆的时候看到的
一开始没仔细看
周日去良乡,小范围讲了下调试这个客户端的一些东西,现场抓包,才看到的

1 comment: