关于 eYouIPB 和 CASNET

我不知道为什么在干正事的时候想写这个东西,大概也算是一种强迫症吧,想起来某件事情就总觉得有义务马上去做。那么就赶快写完吧。

这篇文章是写给有心人看的,如果您不知道 eYouIPB 和 CASNET 是什么东西,那么您可以无视以下内容。

eYouIPB 是中科院研究生院目前使用的网关登录客户端,但只能在 Windows 下使用。我用 Python 写的一个小软件 CASNET,就是一个 Linux 下的登录替代品,不过目前它也可以支持 Windows。昨天有同学发信问我有关科苑网关登录的问题,我顺便在这里做个笔记吧。

1. 有关流量统计。目前 CASNET 不支持像 eYouIPB 那样的实时的流量统计功能,因为我觉得没有必要。科苑上网是按照流量收费的,而这个流量是指网关服务器统计的流量,而不是客户端统计的流量,所以客户端的实时精确流量统计没有太大意义。

eYouIPB 带有实时的统计流量功能,但这却造成了一些问题。eYouIPB 使用 WinPcap 库做流量统计,而且这个库的版本比较低。假如系统里安装了新的 WinPcap 库,例如 Wireshark(Ethereal) 网络监听程序就会安装 WinPcap 库,那么 eYouIPB 就无法工作了。WinPcap 是一个非常强大的抓包库,而 eYouIPB 仅仅使用了其中的流量统计功能,实在很让人费解它为什么要使用 WinPcap 库并且将它的 dll 包含在自己的软件中。我想应该有更简单的办法做流量统计——如果非做不可的话。

2. 有关登录方式。科苑上网有两种登录方式:一种是 eYouIPB,使用私有的协议;一种是网页登录,使用 https 表单交互。由于 eYouIPB 协议私有,CASNET 只能模拟网页登录的方式,所以您会发现 CASNET 登录速度会比 eYouIPB 慢一点儿,因为它有一个完整的 https 安全协商和交互过程,而 eYouIPB 只需要几次简单 tcp 数据包交换就可以了。不过因为同在一个局域网内,这个速度还是在可以忍受的范围之内。

3. 有关安全性。去年我曾经研究过 eYouIPB 的协议,发现还是相对简单的。我记录的笔记已经丢失,但大概是这个样子的(应用层):“首先 eYouIPB 向服务器发起一个连接,服务器应答可以连接,然后 eYouIPB 将用户名和域发送给服务器,服务器看上去会返回一个密钥,然后 eYouIPB 使用该密钥用某种加密算法加密用户口令(或者还有其它信息)发送给服务器,服务器验证口令,回应是否可以登入。”

从该协议的实现来看,安全性有限。一个是用户可以通过不停地登入登出收集明密文对,另外反汇编 eYouIPB 看起来也不是那么困难,尤其是可以使用 Winsock 32 的 API 来定位负责加密的代码段。一旦加密算法被了解,窃听 eYouIPB 的数据包就能获得用户的口令,那么帐户就可以被窃取。所以相比而言,https 的登录方式更值得信任。

PS: 今天顺便搜索了一下,有个朋友曾经对 1.03 版本的 eYouIPB 协议进行过分析,我感觉和 2.0 版本差距不大。而且这个人完全用 C 实现了 eYouIPB 1.03 的加解密函数如果他仅仅凭逆向工程做出这个结果的话,我是相当地佩服的(因为我花了一整天的工夫也没有做出来一点儿东西)。如果当初我能看到这个结果的话,说不定就有 clue 去模拟 eYouIPB 的协议而不是使用 https 方式了,现在是懒得再去钻研这个东西了。只是不知道 2.0 是否还在使用同样的加解密函数,如果仍在使用的话,那么对有心人来说这个口令保护措施基本上算是不存在了。

4. 有关软件运行速度。这个比较主要是 Windows 平台下,CASNET 是用 Python 脚本写成的,而看起来 eYouIPB 使用 VC++ 写的,在软件的大小和运行速度上 eYouIPB 要显然优于 CASNET。由于 CASNET 的 Windows GUI 版需要额外的 GTK 运行时库和 Python 库支持,大概会加载到内存中 16M 左右的数据,不过这些东西运行时真正用到的不多,所以有些部分除了初始化时,其它时候很可能是驻留在交换区中,所以还是可以接受的。

在 Linux 平台下,因为 GTK 和 Python 库是被非常广泛使用的,所以 CASNET 并不需要额外占用很多内存。

之所以会发布 Windows 版,是因为相比 eYouIPB 而言,Wireshark 对我更重要,所以我无法使用 eYouIPB,而又讨厌网页登录时每次都要选择下拉菜单。再加上顺便看看 PyGtk 在 Windows 下的表现如何。但比较讽刺的是,Windows GUI 版的 CASNET 下载量要超过其它版本加一起的下载量,看来它的存在还是对某些用户有一些帮助。

5. 有关软件功能。eYouIPB 的功能已经被锁定了很多年,但是 CASNET 一直在根据用户的需求增加或者删减某些功能,例如余额不足提醒,断线自动重连,一键切换登录模式等。还有一个未发布的功能是关机自动下线。这是一个我一直想实现的功能,因为当用户关机忘记离线时,恰好分配到原 IP 的用户就可以使用该帐号,造成流量被窃取。这个功能在 Linux 版本上已经基本实现,但是 Windows 版本仍然没有找到可用的方法实现。

GUCAS IP 网关登录客户端 1.3 发布

如果您不知道这软件是干嘛的,那您就不用往下看了。这个软件是中科院研究生院师生使用的,更新公告发表在这里只是为了记录一下版本发布历史。

软件主页:http://share.solrex.org/casnet

最新版本 1.3-1(2009年2月11日发布) 更新

  1. 增加了单击更换登录模式功能。
  2. 增加了自动断线充连功能。
  3. 增加了余额不足提醒功能。
  4. 解决了以前版本的一些 BUG。

GUCAS IP 网关登录客户端版本1.2 发布

CASNET 是中科院内部 IP 控制网关登录客户端,支持 Linux 和 Windows 双系统。此软件完全使用 Python 语言写成,同时拥有命令行和图形界面,使用简单,安装方便,实乃中国科学院 IP 网关用户居家旅行必备之良品 :)。

CASNET 的官方主页:http://share.solrex.org/casnet

软件特性

  1. 同时支持 Linux 和 Windows 操作系统!
  2. 提供各种格式的安装包,方便安装过程。
  3. 客户端同时具有命令行和图形界面,满足不同用户需要。
  4. 可设置选项多,可保存用户设置,登录简单快捷。
  5. 纯 Python 编程,修改简单,扩展性强。
  6. 开放源代码,确保程序无后门。

最新版本 1.2-1(2008年6月7日发布) 更新

  1. 增加 Windows XP 系统支持。
  2. 解决了一些 BUG.

如何选择合适自己的安装包

if 您是 Linux 用户并且拥有 Python 和 PyGtk? 支持(一般的 Linux 发行版都有):
  if 您使用 RedHat系列的 Linux 系统(Fedora, RHEL, CentOS,...):
    请下载 casnet-1.2-1.i386.rpm
  elif 您使用 Debian 系列的 Linux 系统(Debian, Ubuntu,...):
    请下载 casnet-1.2-1_i386.deb
  else:
    请下载 casnet-1.2-1_i386.tar.gz
elif 您是 Windows 用户:
  if 您是 Python 开发者并确信您 Windows 系统里已经安装 Python 和 PyGtk:
    请下载 casnet-1.2-1_win32_Pygtk_Installed.zip
  else:
    请下载 casnet-1.2-1_win32.zip

GUCAS IP 网关 Linux 登录客户端版本 1.1 发布

CAS NET 是中科院内部 IP 控制网关的 Linux 登录客户端,此软件完全使用 Python 语言写成,同时支持命令行和图形界面,使用简单,安装方便,实乃中国科学院 Linux 使用者居家旅行必备之良品 :)。

官方主页

软件特性

  1. 同时提供源代码, .deb 和 .rpm 安装包,方便安装过程。
  2. 客户端同时具有命令行和图形界面,满足不同用户需要。
  3. 可设置选项多,可保存用户设置,登录简单快捷。
  4. 纯 Python 编程,修改简单,扩展性强,可移植到不同操作系统平台。
  5. 开放源代码,确保程序无后门。

最新版本 1.1-1(2008年5月9日发布) 更新

  1. 添加了窗口关闭按钮,关闭时最小化到 System Notification Area。
  2. 添加了 Status Icon 的右键菜单。
  3. 用户登录时自动强制退出在其它 IP 的连线。