拨号助手pppd插件--用openwrt路由共享上网

openwrt也是个linux系统,原则上用前一篇linux里提供的源码也可以编译成功。

但是,因为在openwrt路由上,认证的方式有所区别,

调试了很多次,发现pap-passwd-hook等hook都没有执行,而且密码也不再从pap-secrept里获取,由openwrt自带的命令行直接提供。经过多次调试后,写了一个最最简单的版本。

#include <stdio.h>
#include <string.h>
#include <pppd/pppd.h>
#include "dialcrypt.h"

char pppd_version[] = VERSION;

void plugin_init(void)
{
info("plugin cumtdial init !! by (i@xujif.com)");
info("cumtdial : user:%s ;passwd<hidden>",user);
char modefied_pwd[MAXSECRETLEN] = {0};
cumt_dial_get_entire_cipher(passwd,modefied_pwd);
strcpy(passwd,modefied_pwd);
info("cumtdial : modefied passwd success");
}

直接在init里进行密码初始化,这样能认证成功。

但是理论上这有一个很严重的缺陷,因为密码只会计算一次,如果碰到网线拔出又重新插入等问题的话,因为pppd进程没有重启,而上一个密码又已经过期,会导致无法认证,所以,还是得想办法获得一个每次认证都会执行的hook进行modefied passwd。

不过暂时先用着吧,改天找到hook了再更新吧。

因为不同openwrt下pppd版本可能不同,所以提供源码下载(里面只有mips的静态库以供编译,没有mipsel的):router



文章来源:http://blog.xujif.com/archives/dial-helper-for-openwrt-pppd/
posted @ 2011-12-06 13:38  xujif  阅读(1118)  评论(0编辑  收藏  举报