[bug report]pppoe.log格式不一致
kuri-leo opened this issue · 34 comments
路由器: WNDR 3800
OS: LEDE LEDE Reboot 17.01.0-rc2
rp-pppoe-server 版本: 3.12-1
地点: CQUPT
根据issue #136 提供的新方法,测试无法成功,然后看了一下,似乎是pppoe.log的格式不对
我这边的格式为:
Plugin /etc/ppp/plugins/rp-pppoe.so loaded.
RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7
Connected to xx:xx:xx:xx:xx:xx via interface br-lan
Using interface ppp1
Connect: ppp1 <--> br-lan
no PAP secret found for ^M1=WA<- c1xxxxxxxxxxx@cqupt
PAP peer authentication failed for ^M1=WA<- c1xxxxxxxxxxx@cqupt
Connection terminated.
但根据nk4脚本,应该是包含network.wan.username
和network.wan.password
字段才对。。。
所以似乎脚本并不能通用Orz
同样遇到了这种问题
同问,用此方法没法成功。。。
@colorlight @lijinwill 目前来看,这个和路由器的CPU有关
我的思路是,用grep抓@cqupt
可以把no PAP secret found for ^M1=WA<- c1xxxxxxxxxxx@cqupt
和PAP peer authentication failed for ^M1=WA<- c1xxxxxxxxxxx@cqupt
抓出来,然后用dos2unix
转码得到真实账号
然而,目前的问题是
- grep得到的内容存不进变量。。。(不会shell编程)
- 似乎LEDE上没有dos2unix
所以目前仍然是无解状态。。。
这个功能脚本里已经实现了啊,问题是,还是这种情况
username=$(grep "No CHAP secret found for authenticating" /tmp/pppoe.log | tail -n 1 | cut -b 43-)
uci set network.netkeeper.username="\r$username"
我9331的没有问题 可以用
@gmfghp 密码不行
@colorlight 之前没这个…只有grep network.wan.username的
@gmfghp 他之前的密码也是从pppoe.log中读取的,似乎密码也被加密了?
@gmfghp 你用3.11的那个脚本 只获取账号那个 就可以
虽然不能获取密码 但是也够了 @gmfghp
我k2也不能获取到密码 就算是 原版lede openwrt 安装的是3.12 也不行
@Destinyzxn 如果他那个算法没有修改密码,讲道理把 nk4.sh
中的 uci set network.netkeeper.password="$(grep "network.wan.password" /tmp/pppoe.log | tail -n 1 | cut -b 64-)"
改成你的密码就能行了
哎呀 无所谓啦 反正手动输入也不麻烦 不存在的
@gmfghp 然而并没有这种操作。。。
我猜的,在mtk下的rp-pppoe-server
会记录下network.wan.username
和network.wan.password
两个字段,然后nk4.sh通过分别对log进行grep来获取真实username和password
所以,不需要你说的那个操作,直接在nk4.sh 的基础上改一下,把 uci set network.netkeeper.password="$(grep "network.wan.password" /tmp/pppoe.log | tail -n 1 | cut -b 64-)"
改成uci set network.netkeeper.password="你的密码"
就可以了
当然,这是在密码不变的前提上。。。
然而每个月都要换一次动态密码的
@Destinyzxn 就用静态密码呀。。。我用了一年多都没出问题
我学校有心跳 只能动态密码 @kuri-leo
@Destinyzxn 节哀顺变23333
其实你们可以去工信部举报,传说弱校当年就是这样把心跳干掉的
怕是没这么简单哟 @kuri-leo
3.12版本是在哪获取的
@gmfghp 对啊,我说的改不是改pppoe.log
,而是把nk4.sh
的代码改了
- 把
username=$(grep "network.wan.username" /tmp/pppoe.log | tail -n 1 | cut -b 66-)
改成username=$(grep "No CHAP secret found for authenticating" /tmp/pppoe.log | tail -n 1 | cut -b 43-)
(感谢@colorlight 提供) - 把
uci set network.netkeeper.password="$(grep "network.wan.password" /tmp/pppoe.log | tail -n 1 | cut -b 64-)"
改成uci set network.netkeeper.password="你的密码"
(我猜的,不知道行不行)
改完最好重新部署一次试试
不行,我试过了
@colorlight 我的是LEDE Reboot 17.01.0-rc2,直接opkg install就可以
你如果没有的话可以去找一下OpenWrt的14版本的包试一试
@colorlight 我之前遇到的问题是 grep 获得的字符串无法赋值给变量。。。不知道是不是同样的问题
@Destinyzxn 先给10000打电话投诉,就说频繁掉线,然后客服一般会打哈哈,然后你就去工信部网站投诉。。。
@gmfghp 我说的就是这个意思,改了的代码应该是这样的:
#!/bin/sh
#启动pppoe服务器。TODO:检测是否有pppoe服务器进程,再启动
sleep 1
pppoe-server -k -I br-lan
#删掉之前的log,加快读取速度
rm /tmp/pppoe.log
while :
do
#读取log最后一个账号
username=$(grep "No CHAP secret found for authenticating" /tmp/pppoe.log | tail -n 1 | cut -b 43-)
if [ "$username" != "$username_old" ]
then
ifdown netkeeper
uci set network.netkeeper.username="\r$username"
uci set network.netkeeper.password="你的密码"
uci commit
ifup netkeeper
username_old="$username"
echo "new username $username"
fi
# echo "wait"
sleep 10
done
然而,我遇到的问题是$(grep "No CHAP secret found for authenticating" /tmp/pppoe.log | tail -n 1 | cut -b 43-)
的值根本没法存到username
里面去
@gmfghp 我用的是3.12的。。。没仔细看,反正就是这个意思
另外,我建议是grep @CQUPT
,来抓取账号,直接回避版本问题。。。当然,如果你用的手机号做账号当我啥都没说。。。
@gmfghp 我试过,直接grep "@cqupt"
就可以,然后会返回两行字符串
no PAP secret found for ^M1=WA<- c1xxxxxxxxxxx@cqupt
PAP peer authentication failed for ^M1=WA<- c1xxxxxxxxxxx@cqupt
@kuri-leo 你解决这个问题了吗??
`RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7
Plugin /etc/ppp/plugins/rp-pppoe.so loaded.
RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7
Connected to 00:e0:4c:36:09:14 via interface br-lan
Using interface ppp0
Connect: ppp0 <--> br-lan
PPP session is 23377
Connected to 74:5a:aa:c0:da:f3 via interface eth0.2
Using interface pppoe-netkeeper
Connect: pppoe-netkeeper <--> eth0.2
no PAP secret found for ^M1#V2Z(A3a15310287720@cqupt
PAP peer authentication failed for ^M1#V2Z(A3a15310287720@cqupt
Terminating on signal 15
Modem hangup
Connection terminated.
Remote message: Username does not exist.##Username does not exist.
PAP authentication failed
Modem hangup
Connection terminated.
Sent PADT`
@lijinwill 这个应该是pppoe.log吧,有个大概的思路,等过几天有空我试试吧
我改了密码为自己的六位密码,没用。。。
还有,我只是奇怪为什么4.7.9这个版本没有人像之前那样反编译客户端,目前已知有pc,mac,iPhone客户端。我试着用hopper disassenbler反编译mac客户端,没有结果,4.7.9 mac端有防反编译的措施,并不像2.5那样可以看到程序部分。
@lijinwill 因为PC端的也加了壳防反编译啊Orz
刚才看了下,iphone客户端也没戏:(
@gmfghp 恭喜
我这边还是有问题,目前改出来的是这样,但是似乎我切割username的地方有问题。。。
#!/bin/sh
#启动pppoe服务器。TODO:检测是否有pppoe服务器进程,再启动
sleep 1
pppoe-server -k -I br-lan
#删掉之前的log,加快读取速度
rm /tmp/pppoe.log
while :
do
#读取log最后一个账号
username=$(grep "PAP peer authentication failed for" /tmp/pppoe.log | tail -n 1 | cut -c 35-)
if [ "$username" != "$username_old" ]
then
ifdown netkeeper
uci set network.netkeeper.username="\r$username"
uci set network.netkeeper.password="密码"
uci commit
ifup netkeeper
username_old="$username"
echo "new username $username"
fi
# echo "wait"
sleep 10
done