实现花生壳DDNS客户端

      ddns 一个支持多种动态域名更新协议的跨平台动态域名更新工具。最近工作中需要用到ddns,上网查了查,现在主流的ddns服务dyndns、dnspod、oray等,国外的一般都不能用(大家知道什么原因),在国内用的比较多的是oray(花生壳),它的协议也已经公开:

    相关协议说明可以参考:http://open.oray.com/wiki/doku.p ... 1%E9%83%A8%E5%88%86

验证过程如下:


客户机发出AUTH authtype指令,authtype为一种验证类型,我们这里使用AUTH ROUTER6(CRAM-MD5扩展)验证。
服务器回应一个挑战串,该串使用客户机的IP地址、服务器的当前时间等不可重复不可预测的参数生成,服务器使用BASE64方式将该串返回客户机,回应码为334


客户机将挑战串作为key使用CRAM-MD5的单向加密方式加密自己的密码形成加密串,
将账号和加密串作为回应,其格式为:


账号名+一个空格+加密嵌入认证码+客户端信息+加密串


其中,加密嵌入认证码共4个字节,为嵌入认证码与服务器当前时间运算得到,服务
器时间是挑战串的第六字节后的4个字节,算法是嵌入认证码与该时间的取反进行或
运算后循环右移一定位数;该右移位数是用服务器时间整除30;
客户端信息也是4个字节,前两位为嵌入式的客户号,后两位为客户端版本号;
客户机使用base64方式对回应进行编码返回服务器。


   上网查了一下, 有位仁者已经实现了一个这样的客户端,可以参考一下,其博客地址为 http://blog.a1983.com.cn/?page_id=483 

   现在一直在更新,也支持不同的服务器类型

你可能感兴趣的:(实现花生壳DDNS客户端)