设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> 企业应用 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
没有相关教程
  电力猫在Linux/Unix下上网的解决方案 (1)           
电力猫在Linux/Unix下上网的解决方案 (1)
 

电飞华在北京推出了电力猫上网的业务,费用相当低廉。笔者选用的一款是400元包半年的套餐。标称速度是10M 实际下载可以达到60K以上,在北方网通的地盘上速度也算马马虎虎了。

中电飞华提供了两种类型的"电力猫",一种用”网线型号“的,用网线直接接入电脑。相当于一个hub或交换机。不需要驱动程序都可以在任何操作系统上使用。另一种为usb接入。没有驱动不能在Linux下使用。但www.intellon.com以GPL的方式开放了windows下驱动程序的源代码。原则上也可以移植到linux/unix上。如果不愿做这个移植工作。建议使用linux/unix 的朋友一定要选择网线型号的电力猫。

北京地区的中电飞华在Windows 下采用的认证方式据说是华为认证。以IE + ActiveX的方式进行,无法移植到Linux/Unix上,其原理如下:

1.在某个web服务器的cgi程序上进行认证,认证通过后你会得到一个sessionid 的变量。此变量实际使用中最大为31000,应该不会超过32767。这在Linux 下很容易做到。

2.每分钟发送一个udp包到服务器的8090端口,其中包括上述的sessionid 数据。但服务器并不回应。这样连接会一直保持。

通过ethereal 抓包分析出udp数据如下:

数据长度为10个字节,以下以16进制表示:

05 05 00 00 00 00 00 00 61 54

第一个数据似乎一直不变。

第二个数字从零开始,每次会加一,由于两个16进制的长度最多能发256分钟,暂时还部知道256分钟以后此字段如何变化。事实上电力猫连接不甚稳定,也不容易达到这个数字。

中间的6个字段总是0。

最后两个字段的组合是sessionid 的值。

比如你得到的sessionid 是29615 ,那么后两个就是73 AF

29615=0x73AF.

注销时也是发一个udp包,内容和刚才相似,但头两位数据是

03 0A

我是包半年的用户。不用考虑注销的问题。

知道这些,就很容易实现Linux Unix下的认证了

用写了个脚本(在同一行里)

curl -s -d "username=MY_USER_NAME&password

=MYPASSWORD&serviceID=0&webserviceID=0&tempID

=0"http://211.160.92.162/login.cgi grep SessionID

|grep VALUE |awk -F '=' '{print $3}' |awk -F '>' '{print $1}'

我把这个脚本命名为feihua.sh ,加上755 的权限,放到/usr/local/bin 里。当然要把MY_USER_NAME和MYPASSWORD换成自己的用户名和密码。

这个脚本的返回结果就是sessionid.

用C语言写了下列程序。本人的C 语言比较菜。仅仅是对付能用.(程序名称为plc.c ,放在最后)

gcc plc.c -o /usr/local/bin/plc

程序在Redhat AS4 上编译和运行都没问题,希望使用其他版本Linux 、FreeBSD以及其他Unix 的朋友们也帮我测试一下。

执行:

feihua.sh |plc

这样就可以成功认证了。

后记:

05末年装了个电力猫,这也是我所在小区宽带的唯一选择。因为多数用linux工作。很不爽。

刚开始用crontab 调用curl 每分钟进行一次web 验证,虽然也能对付,但实在是不舒服。

因为怀疑所谓的华为认证是比较复杂的机制。也许还涉及到加密解密(现在想想,基本不可能实现)和其他的底层问题。

决定从C语言入手,搞定这个问题。

笔者的编程经验虽然可以追溯到18年前使用Fortran语言,java/perl/php/vb/shell 等都会,但都是业余水平。

以前也自学过C,除了指针之外,基本都懂了。有点象只能使用机枪而不能使用大炮的坦克手。

在06年春节其间,为了学习C,从谭浩强到 K&R 的书都看了几遍。算是基本理顺了指针。

但随后发现,为了彻底弄清楚C,先得看看数据结构。

又发现理解数据结构,还要研究离散数学。反正又大把的时间。索性就这么看下去。

又弄了几本Unix下C编程的书。这些该死的作者都把Socket编程放到最后。我还没看到呢。

拿出sniffer 抓一下包,才发现这么简单。早知道抄个java或perl程序,也许半个钟头就搞定了.

既然已经看了这么多C,下一步想把我本本上Ti 的读卡器、1394、pcmcia卡三合一芯片的Linux驱动搞定。这对我来说,估计是个复杂的工作了,希望在笔记本报废之前,能够完成这个工作。

暂时靠讲授Linux课程吃饭。勉强也能养家糊口,十年磨一剑,又如何.

感谢南京的新梦网友在两年前(2004,那时候他还是高中生)提供的帮助和思路.

(e129)

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-2 20:51:36
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持