北京联通光纤宽带提速100m脚本

文章更新

20160412-文章第一次发布
20160509-修改一些小错误

这个东西能干什么?

这个脚本是用来吧北京联通光纤宽带20m或者50m宽带变成100m用的。不过使用的门槛还是有一点的,普通的家用路由器是不行的,需要OpenWRT路由器才可以,并且需要有一定的动手能力。

脚本来源

这个是参考了某运维大神的脚本(运维大神见文章末尾链接),我在自己的路由器上,发现经常会卡在开始的地方,经过了一个多月的郁闷,终于发现是采用cat /dev/urandom的时候,会卡住。所以采用了新的方式来生成随机的MAC和字符串,详细可以看脚本的相关语句。

那么如何使用呢

  1. 使用ssh登入你的OpenWRT路由器
  2. 将这个wk.sh放在/root目录下
  3. 给脚本添加可执行权限 #chmod +x /root/wk.sh
  4. crontab -e,在任务里添加一句0,7,13,19,26,30,34,37,47,57 * * * * source /root/wk.sh
  5. 重启crontab #/etc/init.d/crontab restart
  6. (可选)脚本里很多地方都有>> /tmp/out2.txt,这是我为了方便查看脚本运行状态自己写的一个输出文件,要不要影响不大。如果需要,就再创建个out2.txt就可以了 #touch /tmp/out2.txt

实现原理

北京联通宽带每个月给一般用户10个小时提速到100m的体验时常,如果用WireShark分析一下数据,就能知道,其实就是利用本机向北京联通的某ip地址提交一次提速申请,抓包分析一下,其中包括的参数主要有几个,分别是本机的mac地址、ip地址、加速round数、还有一些其他的参数,具体详见脚本,下载地址在文章末尾。

但是10个小时实在是不太够,所以利用本机模拟提交并且循环起来,就可以实现提速了,mac地址和ip地址可以自己随便写,每次都不一样就可以了。

再次声明,本研究的初衷并不是逃避缴费,而是出于学习和交流的目的!

按照这样分析,用户如果直接浏览器里,输入模拟构造出来的参数,应该也可以实现?我没有试验,如果哪位用户试验了,希望留言给我。

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
set -x
refr() {
while :
do
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} refr!" >> /tmp/out2.txt
acc=100000000000
mac=$(dd bs=1 count=6 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "%02X-"' | head -c17)
reqsn=00TF$(date '+%Y%m%d%H%M')009262
comp=BFEBFBFF$(dd bs=1 count=9 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "%1X"')
inf=$(/usr/bin/wget -t3 --timeout=30 -O - "http://bj.wokuan.cn/web/startenrequest.php?ComputerMac=${mac}&ADSLTxt=${acc}&Type=3&reqsn=${reqsn}&oem=00&ComputerId=${comp}" 2>>/dev/null | grep 'id="webcode"')
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} ${inf}" >> /tmp/out2.txt
if [ -n "$inf" ]
then
_acc=$(echo -n "$inf" | sed 's#.*&cn=\([^&]\+\)&.*#\1#g')
_rnd=$(echo -n "$inf" | sed 's#.*&random=\([^&<]\+\)[&<].*#\1#g')
_gus=$(echo -n "$inf" | sed 's#.*&gus=\([^&]\+\)&.*#\1#g')
_old=$(echo -n "$inf" | sed 's#.*&old=\([^&]\+\)&.*#\1#g')
_stu=$(echo -n "$inf" | sed 's#.*&stu=\([^&]\+\)&.*#\1#g')
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} good, got status" >> /tmp/out2.txt
break
fi
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} not get status! Again!" >> /tmp/out2.txt
sleep 10
done
}

prt() {
echo "prt" >> /tmp/out2.txt
echo "_acc: $_acc"
echo "_rnd: $_rnd"
echo "_gus: $_gus"
echo "_old: $_old"
echo "_stu: $_stu"
}

stop() {
echo "stop" >> /tmp/out2.txt
wget -O - "http://bj.wokuan.cn/web/lowerspeed.php?ContractNo=${_acc}&round=${_rnd}" > /dev/null 2>&1
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} speed is 20m now!" >> /tmp/out2.txt
}

boo() {
echo "boo" >> /tmp/out2.txt
wget -O - "http://bj.wokuan.cn/web/improvespeed.php?ContractNo=${_acc}&up=${_gus}&old=${_old}&round=${_rnd}" > /dev/null 2>&1
}

refr
prt
if [ "$_stu" = 0 ]
then
break
elif [ "$_stu" = 1 ]
then
echo "100m now, good but we need to slow to 20m and then boo!" >> /tmp/out2.txt
stop
break
else
break
fi

refr
prt
while :
do
if [ "$_stu" = 1 ]
then
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} speed is 100m! all good!" >> /tmp/out2.txt
echo "${cdt} Game End!" >> /tmp/out2.txt
break
elif [ "$_stu" = 0 ]
then
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} is still 20m, try again!" >> /tmp/out2.txt
refr
prt
boo
refr
prt
sleep 18
else
cdt=`date "+%Y-%m-%d %H:%M:%S"`
echo "${cdt} not sure how fast is now. Acquiring..." >> /tmp/out2.txt
refr
prt
sleep 19
fi
done

脚本下载

加速脚本wk.sh

最新消息

北京联通联合优酷土豆最近开展了30元即可得到优酷土豆路由器的活动,我自己也申请了一个,还能免费从20M宽带免费升级到40M,小伙伴们可以去试试哦,感觉还不错。

参考资料

运维大神的地址

分享到