Eyou自己提供的客户端容易自动掉线,又没有自动重连功能,使用很不方便。而且Eyou提供的*nux版本(Unix和Linux)的客户端程序兼容性较差,难以成功部署。本程序是一个符合Eyou协议的跨平台客户端,带有自动重连功能,而且本程序开放源码,使用者可以很容易加入自己需要的特性。

实现思路是利用Eyou提供的http访问界面,用Python模拟人的网关登陆行为。

目前进度:建立库文件封装网关提供的功能,能够实现登陆及掉线重连。

程序下载:

推荐:


简介

本程序是亿邮(Eyou)网关系统通过Web方式进行登陆、退出、查询等操作的代码库,与官方提供的连线客户端相比,本程序开放源码,允许用户更好地定制;并且依靠Python,拥有良好的跨平台特性。

此程序最初是作者为了自己使用而编写的,后来合并了arithboy AT gmail.com的更新代码,整理并改进得到0.1版本,基本实现了连接库(EyouAgentLib.py)和程序界面代码(EyouAgent.py)的分离,方便用户根据自己的需要进行修改定制。

出于时间关系,目前随程序库提供的示例客户端界面部分仅实现了非常简单的功能。

有问题或建议可以写邮件联系我。


使用说明

修改程序的配置文件eyou.cfg(参考文件中的注释说明)中的内容,填入自己的网关帐号和密码,如果你使用的不是中科院研究生院的网络,则还需要修改配置文件中的网关服务器参数。

如果希望有更复杂的功能,可以自己修改定制EyouAgent.py文件,对EyouAgentLib.py文件的修改,请发送给原作者一份,便于合并到原始代码中,提供更好的功能。

如果在Windows下使用,利用控制面板中的“计划任务”功能,可以做到让此网关客户端自动运行;Linux下可查询所使用的linux发行版的文档,可以知道如何让客户端自动运行。


更新历史

Version 0.1 (2006-03-01):

  • 将程序分为库文件和界面代码,解决了自动获取SessionId的问题;
  • 修改库文件,引入输出流记录错误信息;

Version 0.2 (2006-03-07):

  • 改进库文件中checkAccount()函数的兼容性;

Version 0.3 (2007-07-05):

  • 修正不能正确按照设定的网络类型登陆的Bug,并在配置文件中增加了对应的设置项(感谢gerry同学的帮助);

Version 0.4 (2007-07-11):

  • 应gerry要求,增加了网络检测的超时控制及同时在屏幕和日志文件输出日志信息的选项,并在配置文件中增加了对应的设置项(感谢gerry同学的帮助);

TO-DO:

  • 整理日志记录相关的功能为独立类,并利用动态语句执行机制决定日志输出的方式
  • 测试:gw.njtu.edu.cn
  • 提供简单密码加密保存
  • 书写py2exe脚本,编译时自动更换加密密码
  • 命令行界面完善
  • 密码配置文件不存在时,命令行提示录入帐号、密码信息
  • 命令行参数支持临时改变参数
  • 没有解决把程序作为服务启动的问题
  • 图形界面客户端编写

如何保存密码提供登陆的方便性又保证密码存储的安全性

由于打算把客户端程序开源,所以难以通过加密算法简单保证存储的密码的安全性(由于程序需要利用密码访问Eyou的界面,所以这里显然应该是一个双向加密算法)。目前的想法是用Python实现setup脚本,运行后提示用户输入需要的设置信息,利用这些信息生成登陆程序的脚本,接着setup脚本编译登陆脚本为pyc文件,并删除登陆程序的源码,今后的执行直接使用pyc文件。因2.3之后的Python编译的pyc文件难以反编译,因此可以认为存储在pyc脚本里的用户密码是具有一定安全性的。

但如http://www.depython.net/ 提供python2.4和2.5版本的pyc,pyo反编译,效果还很不错。这比的就是编译器的混淆和反混淆机制了。所以,恐怕pyc也不安全。

业界常见的做法则是利用机器上的一些特有信息(比如硬盘序列号、网卡MAC地址)等等通过一定算法加工生成唯一机器标志字符串,然后再将这个串处理成为双向加密算法可用的密钥格式。这个方法目前在序列号生成方面应该用得不少,似乎微软还专门提供了一个API做这件事情。采取这个办法的话,由于唯一标志串的生成算法随着开放的源代码是公开的,因此密钥的安全性取决于所用到的特有信息的难以获取程度。如果破解者很难收集全用到的信息,那么密钥是相对安全的。只是,既然我们有对应的API去获取这些特有信息,那么破解者难道不能调用这些API吗?

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki