继上一篇在路由器上写CMCC自动登录脚本介绍用python脚本实现cmcc自动登录之后,用起来不是很爽!另外发现openwrt也不支持perl脚本,所以想到用shell脚本重新写一遍。方便在没有python环境下,能够直接使用。
今晚琢磨了两个小时,终于成功写出busybox能够支持的登录脚本了。因为登录过程中多次跳转,需要记录JSP的SessionID,所以需要下载安装完整版的wget,才能使用到wget的cookie功能!(busybox自带的wget不支持cookie功能)
上脚本代码:
#!/bin/sh echo $(date) > /tmp/cmcc_date wget 'http://www.google.com.hk/' -O /tmp/cmcc_touch --save-cookies /tmp/cmcc_cookies --keep-session-cookies username="***********" password="******" wlanuserip=$(cat /tmp/cmcc_touch |grep 'NAME="wlanuserip"' |awk -F'"' '{print $6}') wlanacname=$(cat /tmp/cmcc_touch |grep 'NAME="wlanacname"' |awk -F'"' '{print $6}') wlanacip=$(cat /tmp/cmcc_touch |grep 'NAME="wlanacip"' |awk -F'"' '{print $6}') if [[ !$wlanacname ]] then exit 0 fi prelogin_url='http://221.179.9.18:8080/bpss/index.jsp' wget "${prelogin_url}" --post-data "wlanuserip=${wlanuserip}&wlanacname=${wlanacname}&wlanacip=${wlanacip}" -O /tmp/cmcc_prelogin --load-cookies /tmp/cmcc_cookies --keep-session-cookies login_url=$(cat /tmp/cmcc_touch |grep 'name="loginform"' |awk -F'"' '{print $4}') wget "${login_url}" --post-data "bpssUSERNAME=${username}&bpssBUSPWD=${password}&Submit=%B5%C7%C2%BC&bpssLoginType=1" -O /tmp/cmcc_login --load-cookies /tmp/cmcc_cookies --keep-session-cookies
因为本人比较懒,有些网址直接hardcode了,所以你可能需要根据当地的情况而改变链接地址或者wget的请求方式。以上代码可以在广东省范围内使用 🙂
貌似抢到沙发啦^_^,貌似把它和虾哥以前发表的利用icmp免费上网的方式结合起来会很爽滴。
呃,暂时还没想到啥好的结合方法。目前我想摆脱cmcc的。我有个主意是把这个路由放在实验室,运行一个vpn。然后在宿舍通过校园网接入,这样就能使用实验室的网络了。
good idea !
这似乎是用wget在写自动应答程序。。。看起来shell编程配合wget也可以用来自动抓取数据。。。拿来编写sql注入工具之类的应当没问题了。。。
嗯,用起来也挺方便,只不过我现在对python更熟悉,所以一般情况下都会优先使用python 🙂
为什么要先访问Google啊……
也可以先访问xiaoxia.org的,这样才会被重定向到登录页面。
在重定向的时候,会得到一些登录所必需的信息。
呵呵,明白了!
哇, 小虾大神出新作了. 期待了10天了.
前些日子就可以不翻就访问你的blog了
在之前可能是两会 或者是啥大事情搞得 最严重的时候 阿倒闭的官网都去不了
是什么原因呢!我的博客没有被屏蔽的呀~
大墙比较严重的卖萌吧……..
GFW的路由扩散技术搞的鬼吧,前两天电信广西区的出口路由交换机就被扩散成错误的路由表了。工作人员恢复了半天呢。
对这一块不熟悉,学习了
你好,我弄了个tt路由写入锐捷后无法登陆ipv6,设置那块不知道该怎么弄,还望指教。
IPv6服务类型 自ISP的原生IPv6DHCPv6带前缀授权6to4 Anycast Relay6in4 Static TunnelOther 其他(手动配置))
IPv6的广域网接口
Assigned / Routed Prefix
前缀长度
路由器IPv6地址 DefaultManual
静态DNS
启用路由器通告
接受远程访问自
别的地区用户需要修改那些地方,比较我是海南用户,我需要怎样修改才能使用!谢谢!
小虾大神,请教一个问题
现在我们在做GIS地图显示,显示的数据非常多,现在使用MFC的GDI来做的,总体速度还过得去,有不有更快的图形库了,我在网上也找了很久没找到
另外,CDC里面的透明拷贝貌似也比较慢,需要将小物标绘制到一个小内存位图上,在进行透明拷贝
应该是你的方法有问题吧,除非你的实现非常复杂了。 我也不是很了解GIS,Google Maps在浏览器上都可以做的很流畅。
那你知不知道在效率上比GDI更佳的方法呢
我不是指绘图的效率,我是指绘图的算法。例如你可以把要显示的部分分块,分成200×200的块,一块一块的渲染,并且部分非常耗时的缓存起来。文字可以不缓存。
刚开始我们使用的是内存大位图,位置一个比屏幕大九倍的位图,移动屏幕,直接可以从内存大位图上拷贝。但比如我们快速滚动鼠标也要保证地图快速显示。
现在的情况是,能做的你说的那种优化能想到的都想了,比如个船,做成一个位图缓冲起来。并且你说的那种渲染面时会增加裁剪时间。
显示几张海图没问题,非常快,现在加载了4百副海图,速度会有点点卡。所以现在着手的不是算法上,而是库的使用。
Pingback引用通告: 在路由器上写CMCC自动登录脚本2 (shell篇) | 没咖啡?那来没咖啡提个神吧!
河南CMCC,点登陆按钮时候,POST了这个地址。
https://211.138.30.41/cmcc_home_do_login.php?issaveinfo=&loginmode=static&staticpassword=412031&staticusername=18803786682&wlanacip=218.206.196.170&wlanacname=0133.0371.371.00&wlanacssid=CMCC-HENAN&wlanuserip=111.5.93.174
我用CURL访问的时候,不行,但是用浏览器可以。
我是这样访问的:
curl -k -b cookie.txt https://211.138.30.41/cmcc_home_do_login.php?issaveinfo=&loginmode=static&staticpassword=412031&staticusername=18803786682&wlanacip=218.206.196.170&wlanacname=0133.0371.371.00&wlanacssid=CMCC-HENAN&wlanuserip=111.5.93.174
返回是这样的:
alert(“取AC名为空!”);history.back();’loginmode’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘staticpassword’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘staticusername’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘wlanacip’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘wlanacname’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘wlanacssid’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
‘wlanuserip’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
有可能是因为你没有提交POST的数据???
我这样访问
curl -k -b cookie.txt -d “loginmode=static&staticpassword=******&staticusername=188******&wlanacip=211.142.107.194&wlanacname=0031.0378.371.00&wlanacssid=CMCC-HENAN&wlanuserip=223.88.203.173” https://211.138.30.41/cmcc_home_do_login.php
返回
alert(“请输入您的验证码”);history.back();
我这样访问
curl -k -b cookie.txt -d “loginmode=static&staticpassword=******&staticusername=188******&wlanacip=211.142.107.194&wlanacname=0031.0378.371.00&wlanacssid=CMCC-HENAN&wlanuserip=223.88.203.173” https://211.138.30.41/cmcc_home_do_login.php
返回
alert(“请输入您的验证码”);history.back();
可是浏览器访问的时候,没有让任何让填验证码的地方啊?
你可以用浏览器监控一下网络数据的。可能你少了哪些步骤或者发送的地址有误吧!
不知道啊,这个发送地址我就是用firebug抓到的。验证码啥的,是不是Cookie上设置的,我不知道呢。
河南和广东不一样
这是我写的 https://bitbucket.org/weakdancer/cmcc/src/6d54e1edb95c/cmcc_login_wlan_v.py
经过我的测试,在路由器上用的时候经常出现无法ping同网关的现象。
为什么有”不是内部或外部命令,也不是可运行的程序”
如果你在cmd下提交,&符号要转义
我是菜鸟。请问可以给DDWRT路由用吗?还是要另外编脚本?请给个链接,谢谢!
应该没问题,只要是Linux系统就可以。
如果你尝试把这个脚本读懂,那就更好了,方便修改符合你的习惯。
另外,广东的,收到的信号是CMCC-TEST,平时用页面登录跟CMCC没有区别,也是自动链接至http://221.179.9.18:8080/bpss/index.jsp 请问使用你的代码,要怎样修改?
有一名叫myeyre的仁兄写了个用在DDWRT路由自动登录的脚本(广东不能用),有“为防止无流量或在线超过8小时导致被踢下线, 每三分钟访问某页面以保持在线, 每6小时自动重新登录”,请问你的代码有这项功能吗?http://hi.baidu.com/myeyre/blog/item/d6ab7d1ebc4cf3e81bd576b9.html
http://user.qzone.qq.com/237367233/blog/1328470035#!app=2&pos=1328470035
同时广东的话,应该可以用的。你可以试试运行一下,看有没有什么问题。
你可以用 crontab来实现那个功能,定时运行一次脚本即可。
高手,我未接触过OPENWRT,请问怎样将脚本写入路由器?
hi,可以通过ssh连接到路由器的,你可以使用scp来复制文件。
我是刚接触OPENWRT的菜鸟,请问OPENWRT怎样写脚本? 搞了几天搞不好,能出个教程就最好了。。。
你要写啥脚本呀!直接用ssh登陆到控制台,然后用vi编辑一个脚本文件,不就行了么?
BusyBox好像有curl的么,这个应该也可以post和保留cookies。话说你们学校真好,认证居然不用心跳包检测,想当年。。。
还好吧,上大学一直以来都不用交网费,从同学那里用路由分享出来了 🙂
打算试着在文本模式下登录这个。
呃,顺便问下,是否有下线的脚本呢?因为不及时断开,还会扣时间的
没有分析过下线的协议。如果你想有稳定的CMCC撑网,还是用53端口的bug吧!
前提是自己要有一个服务器或者VPS了。
已花5元购得200小时帐号。不过文本模式下,很不方便:(
我在 etc/init.d/ 目录下建了个CMCC.sh 文件,然后将代码写到这个文件里并保存好。再看“系统—启动项”,在第一行就已经多了这一项CMCC.sh。但不能自动登录,试着运行 sh cmcc.sh 命令,显示cat: can’t open ‘/tmp/cmcc_touch’:No such file or directoty 不知道是什么原因?WGET 没有安装好?
应该是因为你的系统没有 /tmp 这个目录吧!挺神奇的,应该凡是linux都有这个目录才对。
我也出现了这种情况,但我确定路由上有tmp目录,只是没有cmcc_touch而已
我在 etc/init.d/ 目录下建了个CMCC.sh 文件,然后将代码写到这个文件里并保存好。再看“系统—启动项”,在第一行就已经多了这一项CMCC.sh。但不能自动登录,试着运行 sh cmcc.sh 命令,显示cat: can’t open ‘/tmp/cmcc_touch’:No such file or directoty 不知道是什么原因?
小虾,我看了好几个版本的利用网络的方法,你这个方法最特别,我有很多思路,就是欠缺编程以及写脚本的方法,能加你即时聊天吗?发图方便一些.
可以加我gtalk,gdxxhg at gmail.com。 或者qq? 35733 9036
我两个都加了哈,一个G+和Q都么有反映也.
下面这段代码不加成功登录,加了反而不行,不知何解? 不会设成开机自动运行这个脚本来拨号,现在是设成每隔5分钟就运行一次这个脚本来拨号,所以现在OPENWRT路由开机后等5分钟才能上网,哈哈,不过现在总算成功了。找广东的代码很难,在这里再次感谢小虾师傅!!
if [[ !$wlanacname ]]
then
exit 0
fi
op路由的.多番搜索来到这里.希望你的脚本能解救我哈哈.茂名地区的表示测试.
今天测试了.不过不知道是不是我操作问题.中继成功但是还是要网页登录.没有点击下线路由可以独自继续提供上网.脚本效果?(手机已经关闭登录界面断开手机wifi)
一路下载了一部电影都没有掉线.下载完后应该就是出现了移动的15分钟无操作自动下线.然后手机再次网页登录就照着之前那样运行了.博主帮忙给分析分析….O(∩_∩)O~
.茂名移动测试失败.不知道什么原因~~~~(>_<)~~~~ 自动网页登录.不能路由自动登录.求救
可能路由器还没从CMCC获取好IP地址、未中继好,脚本就运行了,我是加了行sleep 30 (即等待30秒),还把中间那段 if 什么的代码去掉。。。成功了。我那想请教一下小虾是什么原因,if [[ !$wlanacname ]] 错了吗?还是中间空格要省略变成if [[!$wlanacname]] ??
我对bash的语法也没有系统了解过,也不知道他这样写的语句,会不会产生什么问题。
谢谢你的回复
我的脚本是手动运行的.中继完成了.路由显示有ip.不过就是运行脚本不成功.
我再试试
Hi 小虾,
请教一个问题,我想模拟一下CMCC自动弹出网页的过程,就是手机连上我的wifi设备后,随便输入一个网页,就跳转到我的url,你可知道?
有空交流;QQ:307509256
可以做到的。这个其实就是在你未认证的时候,不允许你所有的数据包出口。可以在dns里把所有域名解析成你的登陆服务器的IP。也可以把所有TCP流量转发,比如访问外部80端口的流量,转发到你的自己的服务器IP去。
谢谢,这个我已实现;
不过还有个疑问,如何让手机自动弹框呢? 很多Android手机连接可CMCC都有弹框提示
这个过程是怎么交互的?我还没有抓包,初步怀疑是dhcp的时候…
我也没有研究过,如果你研究出来了,也告诉我吧 🙂
大家都是用哪种型号的路由器号啊
学习了~~~
请问你的认证地址是通过什么方式得到的?网页的post?还是通过软件?
chrome里按ctrl+shift+j弹出调试面板。或者firefox里用firebug。
最近一直在研究这个问题,在你的博客搜索cmcc的时候发现了我们竟然是校友…师兄好厉害啊…!
再问下,是需要2台路由,一台作客户端连接,另一台作路由么?
有些路由刷了openwrt后支持模拟ap,也就是一个路由就可以做到client模式和ap模式,
比如小虾哥的wr703n.
请问运行这个脚本后还是不能上网呢?感谢
一下是运行后显示的内容。
–2012-11-09 12:17:22– http://www.google.com.hk/
Resolving http://www.google.com.hk... 2404:6800:4005:c00::c7, 74.125.128.199
Connecting to http://www.google.com.hk|2404:6800:4005:c00::c7|:80… failed: Address family not supported by protocol.
Connecting to http://www.google.com.hk|74.125.128.199|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 919 [text/html]
Saving to: `/tmp/cmcc_touch’
100%[======================================>] 919 –.-K/s in 0s
2012-11-09 12:17:22 (7.33 MB/s) – `/tmp/cmcc_touch’ saved [919/919]
–2012-11-09 12:26:39– http://www.google.com.hk/
Resolving http://www.google.com.hk... 2404:6800:4005:c00::c7, 74.125.128.199
Connecting to http://www.google.com.hk|2404:6800:4005:c00::c7|:80… failed: Address family not supported by protocol.
Connecting to http://www.google.com.hk|74.125.128.199|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Saving to: `/tmp/cmcc_touch’
[ ] 163,170 58.0K/s in 2.7s
2012-11-09 12:26:42 (58.0 KB/s) – `/tmp/cmcc_touch’ saved [163170]
Hi,你是否已经连上了呢,我看到你已经成功连接到Google的服务器呀!
看看cmcc_touch里是什么内容。
你好,请问能否有偿帮我解决呢?感谢~我QQ15009603
root@DreamBox:/tmp# sh cmcc_touch
cmcc_touch: line 1: syntax error: unexpected redirection
请问是这样吗?
hi,我仅作为兴趣研究了一下,要深入探究,还得你自己行动哦 🙂
#!/bin/sh
echo $(date) > /tmp/cmcc_date
wget ‘http://www.baidu.com/’ -O /tmp/cmcc_touch –save-cookies /tmp/cmcc_cookies –keep-session-cookies
username=”15964055097″
password=”******f”
wlanuserip=$(cat /tmp/cmcc_touch |grep ‘NAME=”wlanuserip”‘ |awk -F'”‘ ‘{print $6}’)
wlanacname=$(cat /tmp/cmcc_touch |grep ‘NAME=”wlanacname”‘ |awk -F'”‘ ‘{print $6}’)
wlanacip=$(cat /tmp/cmcc_touch |grep ‘NAME=”wlanacip”‘ |awk -F'”‘ ‘{print $6}’)
if [[ !$wlanacname ]]
then
exit 0
fi
prelogin_url=’http://221.179.9.18:8080/bpss/index.jsp’
wget “${prelogin_url}” –post-data “wlanuserip=${wlanuserip}&wlanacname=${wlanacname}&wlanacip=${wlanacip}” -O /tmp/cmcc_prelogin –load-cookies /tmp/cmcc_cookies –keep-session-cookies
login_url=$(cat /tmp/cmcc_touch |grep ‘name=”loginform”‘ |awk -F'”‘ ‘{print $4}’)
wget “${login_url}” –post-data “bpssUSERNAME=${username}&bpssBUSPWD=${password}&Submit=%B5%C7%C2%BC&bpssLoginType=1” -O /tmp/cmcc_login –load-cookies /tmp/cmcc_cookies –keep-session-cookies
CMCCWLANFORM.submit();
<!–
110
http://221.176.1.140/wlan/index.php?wlanuserip=10.162.3.212&wlanacname=1099.0932.931.00&wlanacip=111.11.128.179
200
–>
安装完整的wget是不是运行
opkg update
opkg install wget
就行了呢?
为什么最后一句报错了呢?
root@OpenWrt:~# wget “${login_url}” –post-data “bpssUSERNAME=${username}&bpssBUSPWD=${password}&Submit=%B5%C7%C2%BC&bpssLoginType=1” -O /tmp/cmcc_login –load-cookies
/tmp/cmcc_cookies –keep-session-cookies
http://: Invalid host name.
师兄我还有一个问题想问一下 我用路由器连接校园网 WAN设置校园网分配的静态地址 LAN设置局域网包括发射无线wifi 为什么设置完后在luci上可以ping通www.baidu.com 但是在PC上确ping不通呢?这个问题困扰了我两天了 不知道该怎么解决 求指导
你好,由于对linux不熟悉,我在openwrt里想让它自动连接这个网页
“h-t-t-p://125.88.59.131:10001/login.do?userName1=【当然是用户名】&password1=【是密码】&eduuser=【本机帮绑定的IP】&edubas=119.146.99.27&patch=zq%2Fzq251”
然后就可以返回成功登陆页面了。听说elink可以外部打开这个,但是我想路由自行登陆(当然检测断网后重新打开的功能不敢奢望,但是可以让它一定时间后自动打开或者刷新就可以达到断网后次日正常上网,因20分钟不上要求重新登录网页,而晚上锐捷断网)
请问用什么方法吗?当然,我不介意做伸手党的,哈哈~~
上面那个测试正常,而且感觉那个容易实现,下面这个有时自动登录不正常,貌似要浏览器js支持,希望你可以帮忙看看:
蛋疼校园网
setTimeout(“document.login1.submit()”,1)
校园网登录
用户名
密码
/$ sh cmcc.sh
wget: unrecognized option `–keep-session-cookies’
Usage: wget [OPTION]… [URL]…
Try `wget –help’ for more options.
cmcc.sh: line 4: : not found
cat: can’t open ‘/tmp/cmcc_touch’: No such file or directory
cat: can’t open ‘/tmp/cmcc_touch’: No such file or directory
cat: can’t open ‘/tmp/cmcc_touch’: No such file or directory
cmcc.sh: line 10: : not found
cmcc.sh: line 20: syntax error: unexpected end of file (expecting “then”)
运行后返回如下数据,点半呢?
大神,有个问题向您提出,您的sogou代理脚本能否直接运行在openwrt下呢?我试了好几次都没有成功,能否提供个思路呢?我跟你是一样的路由器…..
提示什么问题?
我们是使用IMC PORT登录的,该怎么修改代码实现,忘指教