路由上完成四川电信「协同拨号」

让路由器开机自动破解老协同拨号的脚本。

支持 openwrt、ddwrt、tomato。不确保在多拨或者其他特殊路由上能够使用。

进成都理工的时候(2012-12-20)写的,最近修正了一下。

用法:

curl https://gist.github.com/heruoxin/8437177/raw |sh

如果路由上没有 curl 的话试试:

wget https://gist.github.com/heruoxin/8437177/raw -O cdutrouterdial.sh;sh cdutrouterdial.sh

源码:

#!/bin/bash

echo
echo "成都理工协同拨号路由破解脚本"
echo "算法来源:http://fyscu.com/forum.php?mod=viewthread&tid=1104"
echo "本脚本仅适用于ddwrt、openwrt、tomato的路由"
echo "使用前请确认已经在路由设置页面上调整之为PPPoE拨号模式,并最好备过份。"
echo "截至2014年2月,对CD028XXXXX@96301类型的帐号有效,对使用本脚本后的任何意外本人无力负责。"
echo

#判断系统
osame=$(uname)
if [[ $osame == *omato* ]]
then
    nextgo=tomato;
elif [[ $osame == *dd*wrt* ]]
then
    nextgo=ddwrt;
elif [[ $osame == *open*wrt* ]]
then
    nextgo=openwrt;
else
    while true; do
        read -p '系统识别失败,请输入系统类型(ddwrt/openwrt/tomato):' osname;
        case $osname in
            "tomato")
                nextgo=tomato;
                break
                ;;
            "ddwrt")
                nextgo=ddwrt;
                break
                ;;
            "openwrt")
                nextgo=openwrt;
                break
                ;;
            *)
                ;;
        esac
    done
fi

#输入帐号密码
while true; do
    read -p "输入你的帐号名称(格式类似于CD028XXXXX@96301这样):" usrname
    if ! [ -z $usrname ]; then
        break
    fi
done
read -p "输入密码:" passwd
if [ -z $passwd ]; then
    echo "未输入密码,使用默认的12345678"
    passwd='12345678'
fi

#写入算号步骤并设为自启动

#囧sh在function上语法和bash有区别……
#这下面本来是函数的……
case $nextgo in
    "tomato")
        echo "你的路由系统为tomato,如判断错误请终止执行"
        sleep 3
        nvram set script_init="\
        _account=$usrname;\
        _password=$passwd;\
        _random=\$(head /dev/urandom |tr -cd a-f0-9|cut -c 1-8);\
        _true_account='~ghca'\$_random'2007'\$(echo -n 'jepyid'\$_account\$_random\$_password|md5sum|cut -c 1-20)\$_account;\
        nvram set ppp_username=\$_true_account;\
        nvram set ppp_passwd=\$_password;"

        echo "3秒后重启……"
        echo "tomato可能需要再重启一次,可能哈"
        sleep 3
        rm cdutrouterdial.sh > /dev/null
        reboot
        ;;

    "openwrt")
        echo "你的路由系统为openwrt,如判断错误请终止执行"
        sleep 3
        cat >> /etc/rc.local << EOF

_account=$usrname
_password=$passwd

_random=\$(head /dev/urandom |tr -cd a-f0-9|cut -c 1-8)
_true_account='~ghca'\$_random'2007'\$(echo -n 'jepyid'\$_account\$_random\$_password|md5sum|cut -c 1-20)\$_account

_the_line='     option username '\'\$_true_account\'
sed -i "s/.*username.*/\$_the_line/" /etc/config/network
sed -i "s/.*password.*/     option password \'\$_password\'/" /etc/config/network
sleep 2
/etc/init.d/network restart

EOF
        echo "3秒后尝试拨号……"
        sleep 3
        /etc/rc.local
        rm cdutrouterdial.sh > /dev/null
        ;;

    "ddwrt")
        echo "你的路由系统为ddwrt,如判断错误请终止执行"
        sleep 3
        cat >> /etc/rc.local << EOF

_account=$usrname
_password=$passwd

_random=\$(head /dev/urandom |tr -cd a-f0-9|cut -c 1-8)
_true_account='~ghca'\$_random'2007'\$(echo -n 'jepyid'\$_account\$_random\$_password|md5sum|cut -c 1-20)\$_account

sed -i "s/^user.*/user \'\$_true_account\'/g" /tmp/ppp/options.pppoe
sed -i "s/^password.*/password \'\$_password\'/g" /tmp/ppp/options.pppoe
killall redial
killall pppd
pppd file /tmp/ppp/options.pppoe&
EOF
        echo "3秒后尝试拨号……"
        sleep 3
        /etc/rc.local
        rm cdutrouterdial.sh > /dev/null
        ;;
esac


本文章由作者:佐须之男 整理编辑,原文地址: 路由上完成四川电信「协同拨号」
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐