低调发布个锐捷客户端:zRuijie4GZHU

zRuijie4GZHU Google Code:http://code.google.com/p/zruijie4gzhu/

其实这个项目的目标不是非常明确,至少到目前为止,能在Linux下的使用的锐捷兼容客户端已经有mystar、 ruijieclient、mentoHust(还有很多,单纯Google Code上以“锐捷”为标签的就一堆了……),还有基于QT、pygtk开发的图形界面程序,可谓百花齐放,再开发一个版本出来理由似乎不太充分,只是为了一些美中不足:比如最有实力的mentoHust,其能支持到锐捷最新的3.7版本的协议,却不是开源方案;mystar则是年久失修,已经不能兼容现在的协议(不过其留下的代码让后来的开发者得到很大的指引,在此对作者Rijndael&byhh表示敬意);至于此前一直使用的Ruijieclient,其实也有点问题,一直掉线,查看上网明细,每次在线都只有1分29秒就被踢了,说明协议兼容问题。虽说Ruijieclient有“智能重连”功能,但是重连跟掉线是两回事,不能说会重连就说解决了掉线问题,花心思研究协议才是正道。

也许也就在于类似问题的出发点不同吧,虽然PT加入了Ruijieclient的项目,但一直没有参加过代码开发,毕竟一提出任何意见就互相反对的人之间很难合作,所以考完试后就花了一天时间,把锐捷协议移植到PT的“z-框架”下。虽然分析下来这个兼容问题是小事情,就是所谓的serial number的初始值以及success key的提取位不对,不过我实在不喜欢Ruijieclient的框架了,而且对自己熟悉的“z-框架”代码维护起来有快感的多。

“z-框架”是指PT依次开发神州数码、联想、锐捷几个客户端一直沿用下来的一些模式,所以zRuijie4GZHU的代码理论上跟其他锐捷相关程序是没什么相似的。除了从mystar里面沿用过来的两个数组照样copy外,PT把mystar开发时候通过反汇编得出来的Alog、Blog算法函数都重写了一次,比原来汇编式的代码的效率和可读性要高得多(分析过程中发现原来有几行的代码是多余的),两个函数摘抄在本文后面,希望对其他的锐捷开发者有用。

zRuijie4GZHU的目标应该跟Ruijieclient这些不同,Ruijieclient是面向通用的锐捷协议,要做到全球通用其实难度不小的,而zRuijie4GZHU,也正如其名,是为广州大学的锐捷而兼容的,如果能在其他学校使用,那估计是意外。

PT的开发理念是K.I.S.S,zRuijie4GZHU没有什么复杂概念,比如DHCP,只有是和不是DHCP模式,没有什么0、1、2、3模式,更没有配置文件,软件是执行文件和脚本的统一体,缺一不可。

OK,有需要的用户可以查看项目wiki的用户手册吧,下面是PT改写的锐捷Ablog和Blog算法函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * ===  FUNCTION  ======================================================================
 *         Name:  Alog
 *  Description:  revert bit order and converse each bit.
 *  REWRITTEN BY PT.
 * =====================================================================================
 */
uint8_t
Alog(uint8_t val)
{
    int i;
    u_char result = 0;
    for (i = 0; i < 8; ++i)
        result |= (((val << (7 - i)) & 0x80) >> i);
 
    return ~result;
}
 
/*
 * ===  FUNCTION  ======================================================================
 *         Name:  Blog
 *  Description:  Calculate circle check sum.
 *  REWRITTEN BY PT.
 * =====================================================================================
 */
void
Blog(uint8_t circleCheck[2])
{
    if (!blogIsInitialized)
        return;
    uint8_t h_byte = 0, l_byte = 0;
    int i;
    for (i = 0; i < 0x15; ++i) {
        uint8_t index = h_byte ^ sCircleBase[i];
        h_byte = Table[index * 2 + 1] ^ l_byte;
        l_byte = Table[index * 2];
    }
    circleCheck[0] = h_byte;
    circleCheck[1] = l_byte;
}
文章分类 Programming 标签: , , , ,
3 comments on “低调发布个锐捷客户端:zRuijie4GZHU
  1. 说道:

    膜拜……

  2. 失落星球说道:

    Hi,你好!
    你这博客的about上说全是用的免费资源。免费的co.cc域名和WordPress好找,但免费的好空间不好找啊,你这个速度还不错,用的哪里的啊?
    E-mail:858387065#qq.com
    其实这两个函数早在MentoHUST for Windows的2.0版中就已经简化了,跟你简化的差不多,在那个版本的帮助文件中有说明。

    • PT说道:

      @失落星球

      谢谢关注。
      MentoHUST给我的感觉就是很少交流,比如没有项目页面,没有作者博客(有也是一个二进制文件下载链接),也许他们比较少挂在网上吧,现在说想找到完整的HUST似乎都有难度,别说帮助文件了,都被转载的一塌糊涂。

      我的空间准确来说不算免费,是借了朋友的主机存放一下……所以……呵呵。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*