Update:
既然有人说我做了重复的工作,我Google一下,果然如此,送上链接:http://cookinglinux.cn/pppoe-share.html
顺便说一句,其实仅仅想破解他的反代理就更简单了,随便找个无关紧要的程序,比如ping.exe替换安装目录下的netsvchost.exe就行- –
===原文分割线≡ω≡===
桂林电信最近吧PPPOE客户端升级到了一个恶心的东西上,虽然说这个东西要比那个什么狗屁DrCom要强一些,起码不会弹广告,但是一个PPPOE拨号器竟然能用到16M内存,这是什么精神?这是在经济危机的大环境下拉动内存内需的国际主义精神啊!而且最恶心的是这东西还封装了防代理。严重的干扰和违背了网络中立性的原则(虽然这在天朝是潜规则)。
当然,一如既往的,电信也不会提供Linux的接入方法的。所以某熊遵循太祖的教导,自己动手丰衣足食。先逆向了那个拨号器,然后又山寨了一套linux用的算法。
其实某熊根本没好好学过汇编,对Linux也是二把刀水平,但是他的拨号器太弱智,所以没费多大劲就搞定了。
直接出结果好了,其实他的认证就是在用户名前面添加了一段字符串(似乎基本上所有的PPPOE认证都这么玩?比如臭名昭著的互联星空),结构如下:
首先是一个头:~ghca 意味不明。然后紧跟一个随机生成的8字符的token(官方实现和时间有关但是仅仅用时间当作随机源),然后是分隔符1000,之后是一个MD5 Hash,Hash的内容是前面的token+”EXTR”+用户名 取前10字节用16进制表示。最后就是用户名了,而密码没有处理。
注:如果有哪位是桂电的仁兄,希望您嘴下留情,不要到处传播,也不要搞什么太大的、过火的动作,自己偷着乐就行了,维护自己的权益但是一切以不伤害他人利益为原则吧,我被电信换客户端弄烦了,而且PPPOE要比那个DRCOM方便很多。再次拜谢。
知道了这些自然就可以写出一个pppd的插件hook用户名和密码提交就行了。插件写的很烂代码,在后面留着刷屏用。正文最后再吐槽一下电信竟然用PAP认证,拜托你是在校园网环境下提供接入唉,就不考虑一下嗅探之类的问题么- – 反正我不愁没帐号用。(如图)
最后再放上新的500G硬盘的图就算功德圆满了,阿门。
====代码刷屏分割线====
/* * ghca.c - pppd plugin to Guilin telecom PPPOE Authentication * * Copyright 2009 Bearice. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <stddef.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <syslog.h> #include <time.h> #include <openssl/md5.h> #include "pppd.h" char pppd_version[] = VERSION; static char *ghca_user; static char *ghca_passwd; static option_t options[] = { { "ghca_user", o_string, &ghca_user, "Your username." ,OPT_ULIMIT }, { "ghca_passwd", o_string, &ghca_passwd, "Your password." }, { NULL } }; static int ghca_pap_passwd_hook(char *user, char *passwd) { if (!passwd) return 1; info("ghca_user=%s",ghca_user); info("ghca_passwd=%s",ghca_passwd); char pap_user[MAXSECRETLEN]; char hash[9]; int len = strlen(ghca_user); time_t t; time(&t); sprintf(hash,"%08x",t); info("TimeHash=%s",hash); unsigned char md5[MD5_DIGEST_LENGTH]; MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx,hash,8); MD5_Update(&ctx,"EXTR",4); MD5_Update(&ctx,ghca_user,len); MD5_Final(&md5,&ctx); char mhash[21]; int i = 0; for(;i<10;i++){ sprintf(mhash+i*2,"%02x",md5[i]); } info("MD5Hash=%s",mhash); /* strcpy(ghca_user,"~ghca");info("ghca_user=%s",ghca_user); strncpy(ghca_user+5,hash,8);info("ghca_user=%s",ghca_user); strcpy(ghca_user+13,"1000");info("ghca_user=%s",ghca_user); strncpy(ghca_user+17,mhash,16);info("ghca_user=%s",ghca_user); strncpy(ghca_user+33,user,MD5_DIGEST_LENGTH-33);info("ghca_user=%s",ghca_user); */ sprintf(pap_user,"~ghca%s1000%s%s",hash,mhash,ghca_user); info("pap_user=%s",pap_user); strncpy(user,pap_user,MAXSECRETLEN); strncpy(passwd,ghca_passwd,MAXSECRETLEN); info("ghca_pap_passwd_hook_done"); return 1; } void plugin_init(void) { info("plugin_init"); add_options(options); pap_passwd_hook = ghca_pap_passwd_hook; }
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090804 Shiretoko/3.5.2
看来你是在重复劳动,呵呵
Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
为什么是重复劳动呢?难道已经有人搞了?
Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.0.12) Gecko/2009072110 Fedora/3.0.12-1.fc10 Firefox/3.0.12 AutoPager/0.5.2.2 (http://www.teesoft.info/)
全国电信都这样,网上搜下就有了
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
其实我还不知道windows下怎么上呢
好像上不去
Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
扶额,去打10000号吧,电信的帐号服务器有问题。
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) QQDownload/1.7
我记得我的希捷320G,平均传输速率是58-60MB/s
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
都是电信的受害者,佩服LZ,够牛
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0
该插件应该如何使用呢?
可否指导下
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0
下载ppp的源码,吧代码放到pppd/plugins里面 用cc -I.. -I../../include -shared -o ghca.so ghca.c编译。
编辑/etc/ppp/options (或者其他的options文件,看你自己的设定了) 添加:
plugins /path/to/your/ghca.so
ghca_user 用户名
ghca_passwd 密码
就可以了。
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.1
汗,我也搞了,你的程序在我这里(archlinux)是有问题的,算出的“mhash”是8位一组重复的。改一下好了之后pppoe-start是成功连上的,但94不能上网,ping不通。。。
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.1
搞定了。sudo route add default dev ppp0
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
我都是用这个脚本
#拨号
sudo pon dsl-provider
sleep 5
#静态路由
sudo route add -net 172.16.0.0/12 gw 172.21.60.254
sudo route add -net 202.193.0.0/16 gw 172.21.60.254
sudo route add default dev ppp0
ping http://www.google.com -c 4
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.1
我这里没装pon。呵呵
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.1
我觉得你把加密方法和源程序在这个网页上隐藏起来,只提供编译好的ghca.so和安装方法这样更好。
这样就可以推给别的linuxsir了。。。。
Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
悲剧啊 刚刚看到你这篇 我们学校的校园网的客户端又要升级了
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
linuxsir应该都与开源精神吧
没有版权问题吧,小弟把源文件转载下,应对新版的拨号器,希望高人不要见怪,或者直接发放新版的。
小弟支持你
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0
博主你好啊~我也是电信校园网用户。我们这里的是四川省德阳市这边的,所以可能和你的不太一样。按照你的源码修改了一下编译后不能使用。我发了封邮件到你的dzhsurf《在》gmail.com邮箱里,希望你能指点一下。感激不尽!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en,zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.21022)
真诡异,我不是博主啊。。。
邮件我回了 — —
Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.13) Gecko/2009080316 Ubuntu/8.04 (hardy) Firefox/3.0.13
博主阿,怎么才能联系到你呢?
我的mail charleypeng在gmail点com
能帮忙看看这个么?我的帐号是这个样子的~ghca4abb051420013ec09e1685a154c643dcXYGHFY133225464,和你的应该不太一样。我更改了一下你的程序,首先1000改成2001, MD5_Update(&ctx,”EXTR”,4)改为MD5_Update(&ctx,”Chegel”,6);然后是MD5_Update(&ctx,ghca_user,len)下面添加了MD5_Update(&ctx,ghca_passwd,passwdlen) ,编译出ghca.so之后还是不能联网。plog显示 Fatal signal 11 。博主能抽空帮忙看一下有什么不正确的地方吗?麻烦了,先感谢一下。期待我的linux能够联网。顺便bs电信
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
sig11是段错误啊,检查一下你的程序是不是有内存越界的情况。
Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.13) Gecko/2009080316 Ubuntu/8.04 (hardy) Firefox/3.0.13
感谢回复!不知道我修改得对不对呢?我又重新编译了一边还是一样的结果阿555.我编程才刚开始学,基本上是个菜鸟,刚准备学习LINUX就遇上了这倒霉的电信。博主,俺十分非常需要你的帮助^^
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
同学,可不可以吧你修改后的代码发上来看看= = 这么干说是没用的
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1
代码如下 :
char pppd_version[] = VERSION;
static char *ghca_user;
static char *ghca_passwd;
static option_t options[] = {
{ “ghca_user”, o_string, &ghca_user,
“Your username.” ,OPT_ULIMIT
},
{ “ghca_passwd”, o_string, &ghca_passwd,
“Your password.” },
{ NULL }
};
static int ghca_pap_passwd_hook(char *user, char *passwd)
{
if (!passwd)
return 1;
info(“ghca_user=%s”,ghca_user);
info(“ghca_passwd=%s”,ghca_passwd);
char pap_user[MAXSECRETLEN];
char hash[9];
int len = strlen(ghca_user);
int passwdlen = strlen(ghca_passwd);
time_t t;
time(&t);
sprintf(hash,”%08x”,t);
info(“TimeHash=%s”,hash);
unsigned char md5[MD5_DIGEST_LENGTH];
MD5_CTX ctx;
MD5_Init(&ctx);
MD5_Update(&ctx,hash,8);
MD5_Update(&ctx,”Chegel”,6);
MD5_Update(&ctx,ghca_user,len);
MD5_Update(&ctx,ghca_passwd,passwdlen);
MD5_Final(&md5,&ctx);
char mhash[21];
int i = 0;
for(;i<10;i++){
sprintf(mhash+i*2,"%02x",md5[i]);
}
info("MD5Hash=%s",mhash);
sprintf(pap_user,"~ghca%s2001%s%s",hash,mhash,ghca_user);
info("pap_user=%s",pap_user);
strncpy(user,pap_user,MAXSECRETLEN);
strncpy(passwd,ghca_passwd,MAXSECRETLEN);
info("ghca_pap_passwd_hook_done");
return 1;
}
void plugin_init(void)
{
info("plugin_init");
add_options(options);
pap_passwd_hook = ghca_pap_passwd_hook;
}
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
厄……你发的代码不但我可以编译运行,而且可以直接使用并成功连接(难不成服务器其实两种方式都能用?- -||) 看来问题不是处在插件上的唉……可不可以吧日志发上来看看?
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1
晕了~我等下吃完饭发给你看看~
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1
首先用pppoeconf设置好用户名和密码
下面是我收集到的信息
pon dsl-provider
Plugin /usr/include/pppd/ghca.so loaded.
plugin_init
Plugin rp-pppoe.so loaded.
eth0 Link encap:以太网 硬件地址 00:1f:72:0f:aa:fs
inet6 地址: fes0::21g:72ff:fe0h:aafe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:20 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:17 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:1357 (1.3 KB) 发送字节:1196 (1.1 KB)
中断:16
root@charley-laptop:/home/charley# plog
Oct 2 17:10:24 charley-laptop pppd[7313]: Exit.
Oct 2 17:11:53 charley-laptop pppd[7605]: Plugin /usr/include/pppd/ghca.so loaded.
Oct 2 17:11:53 charley-laptop pppd[7605]: plugin_init
Oct 2 17:11:53 charley-laptop pppd[7605]: Plugin rp-pppoe.so loaded.
Oct 2 17:11:53 charley-laptop pppd[7607]: pppd 2.4.4 started by root, uid 0
Oct 2 17:11:53 charley-laptop pppd[7607]: PPP session is 6826
Oct 2 17:11:53 charley-laptop pppd[7607]: Using interface ppp0
Oct 2 17:11:53 charley-laptop pppd[7607]: Connect: ppp0 eth0
Oct 2 17:11:53 charley-laptop pppd[7607]: Fatal signal 11
Oct 2 17:11:53 charley-laptop pppd[7607]: Exit.
google了好久没有找到和我类似的情况,晕倒
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
可以这样实验一下:
先吧插件注释掉,按照正常的pppoe那样拨号,看看是不是仍然会出现sig11,如果是,那大概就是ppp本身的问题了,确认配置没问题的话试试升级一下pppd rp-pppoe等软件包。
如果去掉了插件就没有sig11的话,尝试使用与你的pppd相同版本的头文件和库进行编译。
如果这样还不行的话,我就真的帮不上什么忙了,抱歉。
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.1
有可能是pppd版本的问题。。。
Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14320/812; U; zh) Presto/2.2.0
受难者先报个到,我们学校用的是GHCADialer。由于太菜,只能选择投诉了,现在还在进行中
Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
2.01版本: “~ghca”+time()+”2001″+md5(time()+”Chegel”+user+pass)[0:20]+user
2.02版本: “~ghca”+time()+”2002″+md5(time()+”Tyroth”+user+pass)[0:20]+user
电信这么搞TMD累不累
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.6 (KHTML, like Gecko) Chrome/4.0.269.0 Safari/532.6
好神奇!整个页面没有一个用IE6的。
Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 GTB6
我爱死您的toolbar了。
Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 GTB6
诶?用chromium回复不能显示linux版本?
Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 GTB6
我对您的景仰之情如“死神”拖沓的剧情般连绵不绝。
我打算把您的blog的rss加入我的收藏夹,因为我的chromium不支持(我没用chrome),我只能将您的rss加入firefox的书签。
不过不知道,应该把您的rss加入“Geek”书签呢,还是加入“GalGame”书签?
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.6 (KHTML, like Gecko) Chrome/4.0.269.0 Safari/532.6
您和“只有神知道的世界”里的主角桂马,是我的两大奋斗目标。
我以前学过C,但好久没用了。
不过我用linux的时间,断断续续有8年了。
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Firefox/3.5.2
好像是互联星空换了个外壳。
The Incutio XML-RPC PHP Library -- WordPress/2.9.2
[…] 7下安装协同通信拨号器BnetComm(校园PPPOE) – 梦想守望者 Dreamkeeper 在Linux下搞定了桂林电信的PPPOE认证 | 熊窝[春眠不觉晓] 关于电信校园网络共享上网问题。 – 综合提问 – 网络安全核心地带 […]
The Incutio XML-RPC PHP Library -- WordPress/4.2.2
[…] 7下安装协同通信拨号器BnetComm(校园PPPOE) – 梦想守望者 Dreamkeeper 在Linux下搞定了桂林电信的PPPOE认证 | 熊窝[春眠不觉晓] 关于电信校园网络共享上网问题。 – 综合提问 – 网络安全核心地带 […]