今天入手了一个新的路由器,160RMB,特点是体积很小,像个火柴盒,但有64MB内存,安装openWRT(Linux)操作系统,内核比较新。玩了一下,功能很强大,跟那些几千元的大型路由器有的比呀!
如下图模型:
买回来马上看看配置如何,
看起来蛮不错的,内存也很足够,能做一般的web服务了。目前我博客的web服务占用的内存也就在60MB左右,如果不用php和mysql的话,web服务只需要30MB就够!
刚买回来的路由,最想做的第一件事当然是在上面安装Python了,在这个基础上,我以前的一堆代理程序和VPN程序都能够跑了。
然而悲剧的是,我刚想用opkg安装python软件包,系统提示我仅剩下200多kb内存空间了,无法安装成功。看来这个内置的Flash容量太少了,装个python当然不行。所以,我把我经常戴在钥匙上的U盘拿下来了,在路由系统里用ext2格式化了一次。把系统软件转移到了U盘上(做法很简单,直接把python安装到u盘,然后在环境变量的PATH里设置U盘上的bin目录即可)。
root@OpenWrt:~# python -V
Python 2.7.3rc2
本来打算今晚写好一个基于IPv6通信的VPN程序,放在实验室里跑的,这样在宿舍就能够免费撑实验室的网而且不断网了!但是折腾了一个晚上,都无法解决一个很诡异的错误:
[Errno 81] File descriptor in bad state.
Google了也找不到解决方案。所以无法在python里创建tun设备了,VPN也没戏了。奇怪的是,我用ip tuntap命令是可以创建和配置的,难道是我的python库有问题???
VPN没有搞成,最后搞了一个CMCC的无线中继。而且免去了CMCC的登录验证,因为验证已经在路由里完成了。我的做法是,在原有的无线网的基础上,增加另外一个无线网络,但是采用客户端模式,而不是接入点模式,openWRT的配置操作很简单,几步就完成了。
但是,CMCC的登录验证代码还是要自己写的。所以还是花了时间去研究一下登录过程。
代码如下:
#!/usr/bin/env python import cookielib, urllib2 import re import os import random import time username = '' passwd = '' cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) test = opener.open('http://xiaoxia.org') data = test.read() userip = re.search(r'NAME="wlanuserip" value="(.+)">', data).group(1) acname = re.search(r'NAME="wlanacname" value="(.+)">', data).group(1) acip = re.search(r'NAME="wlanacip" value="(.+)">', data).group(1) url = os.path.join(os.path.dirname(test.url), 'index.jsp') data = 'wlanuserip=%s&wlanacname=%s&wlanacip=%s' % (userip, acname, acip) print 'opening', url, data data = opener.open(url, data).read() url = os.path.join(os.path.dirname(test.url), 'jsp/do_login.jsp') data = 'bpssUSERNAME=%s&bpssBUSPWD=%s&' +\ 'Submit=\xb5\xc7\xc2\xbc&bpssLoginType=1' % (username, passwd) print 'opening', url, data data = opener.open(url, data).read() print 'result', data
代码是在路由器上打的,所以看起来比较乱,但是步骤不多。如果已经登录成功,则肯定可以打开xiaoxia.org,所以后面的步骤都不起作用。如果未登录,会被跳转到登录页面,提交帐号登录即可。
为了能够让路由器保持CMCC的在线状态,把上面的脚本加入了crontab,设置为10分钟自动执行一次该脚本。所以今晚的努力还是没有白费,以后在笔记本或者手机上可以不用输入帐号使用无线网了,也不用担心老登不上CMCC的那个bug了。。。
That’s all. Thank you 🙂
牛啊,原来这样也可以,可不可以在路由器上搭建个服务器。
当然可以呀,在服务器上执行
python -m SimpleHTTPServer
就成功建立一个静态的Web服务器了。
其实,还剩下那么多空闲内存,可以装个nginx和php来玩的 😀
玩 Tornado 吧,Python 你已经搞定了。跑点服务我这里也不到 20M,效率又好。PHP 那个太占内存了,php-cgi 进程一个就 20M+。
o(∩∩)o…哈哈,最近在用tornado写一个大项目!!!
很快就可以露面了。
大项目~~~求透露
也不算大,业余兴趣搞搞的。写一个在线阅读。
同求
迟点会给一个链接出来吧,因为现在功能还没做好。
能顺道研究下这个能否输出控制信号,控制其他设备,如开关?如果可以,那就是一个比较理想的物联网终端啊
有rj45和usb接口,应该可以用上吧!
哇,你是自己刷的openWRT吗。。。
不是,tb上买的,卖家刷好的了。。。
最近还没折腾这个!!!有需求才买的嘛 😛
哦哦,怪不得那么贵啊,亚马逊貌似卖96啊。。。
装Linux的路由看上去好好玩啊~
嗯,其实原厂那个配置可能没这个那么高。
因为这个是卖家改版的,内存升级到了64M,目前有很大发展空间。只不过闪存有点少,装软件必须外接u盘或者移动硬盘了。
哦哦…这样啊~
8MB的Flash貌似确实好小…为啥不把Flash顺便升级了。。。。
小虾大神这种mini路由器我在tb看了,似乎都不支持PPPOE拨号?
应该支持的呀!但是没有那个电话线的接口的。只有rj45. pppop拨号应该是连入了网络就可以的了吧!
例如,我连进了你手机建立的wifi热点,我也可以用pppoe协议拨号吧,只要是能够支持的话?
不错的,我买了个cisco的路由,还在看os移植部分
你买的这个703N应该是改过的吧?
原装的flash和ram应该分别是4M和32M
对的, 😛
不知道低配置能不能跑openWRT了。我感觉这系统功能很强大,vpn,bt下载,防火墙都有了。
低配的可以,但是配置太弱了,还是改过的比较好。
嗯,openwrt的确是很强大,楼下提到的机器人小车,我做过,有用到openwrt。
求url. 淘宝没发现有改好的..
好吧,看来我免费给人做推广了。。。 http://item.taobao.com/item.htm?id=14777780870
小虾你好,我刚从同一家店入手了一个720N,但怎么也设置不成和你一样的功能,能否指点一下,我QQ409490766,多谢啊!
我看网上有人用openwrt路由器做的机器人小车。。有些路由器上有串口输出。所以可以直接控制一些外接的硬件。
我做过一个这样的,有用到openwrt。
小白,求科普,哪些路由可以串口输出?带uart口不知道能不能?
uart不是串口吗(并转串的芯片)
是所有路由都可以实现你上面说的功能么?搜了很久,脑子一壶浆…
hi,不是所有路由。有的路由厂商不能让你改的,也不能让你安装openWRT的。
另外,openWRT支持的路由器类型应该也有一个范围。
我觉得你该买702N,支持无线中继,703N少了这个模式,多了个3G卡插口
无线中继?是什么意思呢?这个跟WDS不一样吗?
702n不能刷openwrt
是啊,我又买了个703N,刚刚,加上邮费170,就用的xiaoxia推荐的那家。
我记得DD-WRT是支持无线中继的,这应当是固件提供的功能。
你好可以问个问题吗?
我们学校是闪讯上网 基于pppoe的 但是真实账号会随机在原账号前面产生一段乱码 怎么产生我说不清 貌似要用到md5加密还有获取系统运行时间什么的 如果写成自动拨号的脚本 这样可行吗? ddwrt的固件
个人认为应当可以。毕竟ddwrt是一个微型操作系统。算法分析要配合反汇编来弄。
已被这种账号前加码的玩死,乱码不是本地产生的,是验证服务器发往客户端后拨号的。每次都要制造一个伪申请,等服务器发过来帐号再快速填入路由,实现宿舍一拖四。
xiaoxia能给个淘宝地址么
已经在其他评论中给出,您看看吧 🙂
我入了个原版的703N,正打算找根512的内存把RAM焊下来装这个上面。。
哇,这都行!!!
我现在这个感觉闪存空间大一点就很足够了。装软件也方便点!
貌似也有焊16M的ROM的。。不过芯片不好找。
这..
把Kernel移除会怎么样。。。。。。
很奇怪为什么没有Glibc,难道没有Glibc也可以运行Linux么?
你怎么知道没有呢??? glibc肯定有的吧,不然怎么跑gcc编译的程序呢?
突然想到了交叉编译了
不会Python的卢瑟男路过。
还有,OpenWRT,DD-WRT那个更好?这能刷DD-WRT吗?
据说高手都喜欢用openwrt,而ddwrt可能比openwrt更易用吧。
openwrt挺不错的,我觉得稳定和够用就好!
在路由器上使用OpenVPN之类的,利用53端口免费上网。http://blog.5istar.net/?p=80
很牛的思路
其实……ICMP包也不走流量,而且是传输层没有端口,运营商应该没有考虑到。
OpenWrt不错的,我也在玩。楼主的Flash太小,一般都16M装软件就不怕了。
嗯,当时不知道8M装不了什么软件,买回来试试才发现的呢!
不过为了方便,还是外接一个u盘来存放提供服务的资料文件和重要的数据,还是挺好的。
撑实验室的网而不断网~
这想法不错吧!
宿舍都断网了,还可以连接上在实验室的VPN吗 ? IPv4的VPN行不? 是OpenVPN?
IPv6不会断网的!你当然可以通过IPv6建立一个VPN。
我现在是有实验室的vpn,所以校园网用起来比较顺畅,实验室的网络能走广州电信。
这个学期校园网好像不断的。。。。
真NB
继续膜拜……
话说8MB太小了点……
话说求TPLINK路由器配置文件config.bin的解密方法……
谢小虾~
你说的解密,我也不会呀! 这wrt不是我自己装上去的,我只管用着呢!
16ROM 64RAM 价格 66元 可刷openWRT的,我买了4~5个,做测试用,比PC省电
703n拿着方便,缺点ROM小,RAM小,就1个RJ45,有些时候受限制
你买这个703n更省电,我测过,开无线状态,功耗也只有不到2W,24小时开机一个月不到2度电
16ROM 64RAM 价格 66元 这个是什么产品呢?
话说,想知道你是做什么测试用的,网络测试?
我也想知道,这么便宜。可以安装 openwrt 。
中兴 H618C 我买的这个
这个是京东卖的同一种吗?配置是不是一样的?
不是同一种,我买这个是改装和升级版本。
Sorry这么迟才看到你这条评论。。。
不可思议,以前感想都不敢想,看来是我太肤浅了。
有待学习啊··· ···
博主很厉害啊!有时间我也去试试。能与你交换下链接嘛?
这个提议值得考虑哦!!!
我已经加了哦
我觉得你适合配个NAS用,或者换ASUS N16。
请问如何制作cmccedu的脚本谢谢
写段脚本,访问登录页面,然后POST登录信息吧。
http://111.11.52.242:8888/?wlanacname=0008.0312.311.00&wlanuserip=111.61.202.13&ssid=CMCC-EDU&vlan=595 这是我这的cmcc edu 的认证界面,请问如何让刷了openwrt的路由器自动认证他,跪求。。。
hi, 你在chrome浏览器里按F12,打开调试面板,找到网络栏目。然后登录cmcc,把发送的网络请求都抓下来。然后就可以研究登录过程了。
你用脚本模拟该登录过程,就能写出自动登录的程序。
不好意思,这么迟才回复。
openwrt中继cmccedu可以,请问如何搞自动认证啊
需要自己写脚本实现 🙂
不会哟,帮帮我啊大哥哥
http://111.11.52.242:8888/?wlanacname=0008.0312.311.00&wlanuserip=111.61.202.13&ssid=CMCC-EDU&vlan=595 这是我这的cmcc edu 的认证界面,请问如何让刷了openwrt的路由器自动认证他,跪求。。。QQ854132116搞了好几天了没有搞定
帮帮我啊,求求您了
用 elinks 手动认证了
elinks是一个程序?
Pingback引用通告: 在路由器上写CMCC自动登录脚本2 (shell篇) « Xiaoxia[PG]
看了你的blog,我覺得我的碩士白念了。
问道有先后,术业有专攻。
回首不堪月明中:(
是闻了。。。
嗯,我赞同“术业有专攻”
elinks 是LINUX系统里的浏览器,相当于IE
只不过是换了个浏览器而已
我日,果然是大牛
路由器自己装操作系统?怎么装的?如何进入后台?
在 3.5MB 超小空闲空间的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 为例)
http://www.yonsm.net/post/645
不知对你有没有参考价值 ?
谢谢!!!我的路由上只有200多kb剩余的闪存空间而已。。。
想问下,这个路由器不可以用telnet连接吗?
貌似只可以ssh哦!你是windows用户的话,可以用putty。
请问路由器能自己安装操作系统吗?
路由器是写入固件的,可以通过ttl线等控制吧。估计也可以通过tftp等安装系统。我没有试过,没啥经验。
小虾,我之前就买过你用的这款703n了,改过的,不过这次我又让那个卖家帮我做了一个HUB的扩展口,这样我就可以插摄像头,U盘,和3G卡了,一个转个口转3个USB口
http://hiphotos.baidu.com/space/pic/item/d000baa1cd11728bff85b7b5c8fcc3cec2fd2cf8.jpg
您好!我想咨询您一个问题。真诚地希望您有空的时候,可以抽时间,看下我的问题。
我现在用的网络是CMCC-EDU(就是高校专用的移动无线网络),请问,可以实现路由器接收CMCC-EDU信号,同时使其自动登录吗?您提及的是CMCC,我不知道CMCC和CMCC-EDU是否一致。
另外,如何实现通过有多WAN口合并的路由器,来实现对多个CMCC-EDU的带宽合并?
我的邮箱是[email protected]
这个路由ID名字是无关紧要的吧,我在机场CMCC-AIR也一样的登陆界面,所以应该是看地区的。多wan合并,我就没什么经验了。但是我觉得,只要自己会配置路由规则,是有办法可以实现的。
请问你的python 2.7是怎么装上的。opkg 的包里只有2.6的。
网页安装的,可能是openwrt版本不一样导致的!
具体怎么安装的。谢谢
这是个疯狂的想法,我们记录为 http://see.sl088.com/wiki/CMCC
今天百度找到你的博客,看了很多你写的文章,真的很不错,可以给个联系方式吗?我加你。做个朋友,同样玩c++
hi, 可以呀! 很乐意做技术交流! 收到邮件回复有我邮箱地址。
你好,xiaoxia,我对wifi网络设备很着迷,但是对编程、软件就是一个白丁了。请教一下:
“我的做法是,在原有的无线网的基础上,增加另外一个无线网络,但是采用客户端模式,而不是接入点模式,openWRT的配置操作很简单,几步就完成了。”
实现这几句话对我来说有点难度,有空的话,能否给出稍微具体一点的步骤,不胜感谢!
就是在 网络 -无线 -搜索
找到 CMCC 点击 加入
最下边 保存并应用。
前提是你必须用lan接入路由器
不能用无线
因为这样一做路由器和CMCC连无线了,和你的无线就断开了。
感谢回复。
不过,我想你弄错了。你说的是指wr703n只做为wireless client(无线客户端模式),即只做为无线网卡来用。
而xiaoxia的模式应该是wireless repeater(无线中继模式)。请看他原文中下部的无线信号图示,很明显虚拟出了两个无线接口(界面):CMCC-HEMC client和CMCC_FREE master,其中前者cmcc-hemc应该是作为client 连接广州大学城的移动wlan,后者则是作为无线ap分享给周围的无线设备。
我的问题就是怎么样虚拟出这两个无线界面的具体步骤。
你不说的话我还一直没有注意到,我以前一位一个无线网卡只能起一种作用。
就是在我之前的基础上再添加一个网络。(点击 添加)
这次设为AP模式,网络点选 LAN,即可。
而且这个并不是 wireless repeater(无线中继模式),这种模式下路由器的作用除了增强信号之外和没有是一样的。
你好,问题解决了没有?
博主,看了文章我觉得很有用,先表示感谢,另外还有一个问题请教你,中继chinanet后,怎样在命令中加入每隔10秒钟ping某个ip地址来保持登陆状态,这个脚本怎么写,本人是小白,不太懂命令行
你好,我是myqq用户,很早就知道你了。我之前就看过这篇文章,当时还没用上,现在我宿舍覆盖了chinanet,我觉得也可以这样桥接网络,想和你讨论一下。有关openwrt的配置还有就是脚本的修改,因为chinanet有验证码,你说能不能把验证码down回来再手动输入?期待回讨论或者邮件讨论
如果验证码不复杂的话,可以考虑自动识别的。
那openwrt呢?单路由就能实现2个网络接口?一个ap模式一个client模式?
小虾,你的联系QQ之类的东西能告诉我一下不?请教你个问题啊!谢谢了
回复我的邮件即可 🙂
小虾,你好!
万分仰慕啊,能不能告诉我一下你的QQ之类的联系方式啊,有个问题想请教你一下,歇息你了,我的QQ:21633054.
您好!我想咨询您一个问题。真诚地希望您有空的时候,可以抽时间,看下我的问题。
我现在用的网络是CMCC-EDU(就是高校专用的移动无线网络),请问,可以实现路由器接收CMCC-EDU信号,同时使其自动登录吗?您提及的是CMCC,我不知道CMCC和CMCC-EDU是否一致。我的邮箱是[email protected]
Hi,普通路由器上能实现的东西毕竟有限,你可以找一台二手PC来配置一个路由 🙂
小虾你好,请教一个问题,我在安装python的时候,出现一下代码
root@OpenWrt:~# opkg –dest usb install python
Installing python (2.7.3-2) to usb…
Downloading http://downloads.openwrt.org/snapshots/trunk/brcm63xx/packages//python_2.7.3-2_brcm63xx.ipk.
Multiple packages (libpthread and libpthread) providing same name marked HOLD or PREFER. Using latest.
Multiple packages (libpthread and libpthread) providing same name marked HOLD or PREFER. Using latest.
Installing libffi (3.0.10-1) to usb…
Downloading http://downloads.openwrt.org/snapshots/trunk/brcm63xx/packages//libffi_3.0.10-1_brcm63xx.ipk.
Installing python-mini (2.7.3-2) to usb…
Downloading http://downloads.openwrt.org/snapshots/trunk/brcm63xx/packages//python-mini_2.7.3-2_brcm63xx.ipk.
Configuring libffi.
Configuring python-mini.
Configuring python.
Collected errors:
* extract_archive: Cannot create symlink from ./usr/lib/libffi.so.5 to ‘libffi.so.5.0.10’: Operation not permitted.
* extract_archive: Cannot create symlink from ./usr/bin/python to ‘python2.7’: Operation not permitted.
显然,python没有安装成功,所以想问问小虾是否清楚?
(安装到U盘的,
echo dest usb /mnt/hdd/packages/ >> /etc/opkg.conf
opkg –dest usb install python)
我想问一下64M内存如果装了mysql+php+nginx够不够用啊
不行的。php很占内存的。
博主你这么牛逼看得我都快哭了。。五体投地自行惭愧不足以表达我的心情
家里的网也是通过网页登陆验证的,正需要这个功能
那个CMCC的代码不同地方,可以用吗
跨了省应该不行了。
谢谢,真的可以跳过CMCC的认证?
表示把你博客收藏了!
谢谢~!
恩 cmcc-edu呢合格便宜很多 挂下载比较好
Pingback引用通告: 无聊开始玩路由器,入门Tomato固件
tl-wr702行么?
不清楚,有些不能刷tomato,可以刷openwrt之类的。
那么不同的省市代码不同 那么 你是怎么知道你所在的省是这样呢?
恩 刚刚重新看了一片 但是 你说的研究登录过程 真的无从下嘴啊 关于下这方面 白痴一个 路过啊啊
还有关于 你说 用VPN蹭上实验室的网 可以解释下吗? 不懂 求教
你在实验室里有一台主机用来做vpn服务器即可。不过现在SCUT的网络好像改善了,应该没这个必要。
我不是华南理工大的。。。 恩 大概懂了 和蹭wifi其实差不多吧 具体解决过程有差别
您好,您说的那个中继CMCC是用路由器把接收过来的CMCC信号经过你的路由器重新命名再发出去吗?我不是很明白,望请教。
我想在703n上安装python,flash空间不足,也安装在u盘上,但是一直报
opkg_install_pkg: Package python md5sum mismatch. Either the opkg or the package index are corrupt
这个错误。
小虾遇到过么
木有,我现在编译固件,直接把python打包到固件去。
我来膜拜一下
希望博主 写一个chinanet的脚本…
您好博主,这篇博文我已经收藏一年多了,一直没有学习,最近看了一下python,了解了一下http header,有一些问题想请问一下。尤其是第5点。
1 浏览一个网页首先浏览器发送一个request,但是为什么request header中还会出现cookie:XXXXX,并且根据不同的网站,cookie的形式都不一样。难道是浏览器首先检查本地有没有cookie,没有就自动创建,如果是这样,那么为什么cookie的形式不一样,有的是JSESSIONID=XXXX,难道浏览器在发送request之前还从服务器接受了什么信息?
2 您在博文中写道cj = cookielib.CookieJar() ,难道是在本地创建了一个cookie文件?还是上面那个问题,不同的网站request header中的cookie形式不一样,本地的cookie和request header的cookie后面跟得字符有什么关联吗?
3 如何获得request header 信息,在python3中,urlopen返回的是一个http.client.HTTPResponse对象,它getheader之后获得的是response header,那request header 如何获得?
4 使用的python3,在连接cmcc之后,open=urllib.request.urlopen(‘http://www.baidu.com’) open.geturl()得到的url是cmcc的登录地址,由于是采用的get方式,?号之后还会有很长的一串字符,这一串字符肯定不是python能自己生成的,是否是因为cmcc那个路由器(不知道那是什么东西)重定向的?
5 以上只是我的疑问,不知道也大概能写出程序来……但是这个问题,还没有办法解决。
在cmcc-edu logout的时候,由于它是采用的get方式下线的,所以需要一个带问号的连接,在第4点中,由于不知为何的原因能获得真实的带问号的地址,但是在登出的时候无法获得这样的地址,只能自己构建,但是有三个是不知道从何处得到的,如:CSRFToken_HW:5ff126748ef88b03eb35de1d4c5298de; uuid:A094E3D63C9D35F9436FB8D91BD04E5C ; flowID:20140831223421826 手机号 (这个flowid,前面的数字20140831还有意义,后面的22341826不是登录时间也不是下线的时间,不知道是何意思),难道是随机生成的?
看起来您的CMCC是没有验证码的? 我这里有验证码, 是不是需要识别字符呢? 不知道设备性能够不够…
多年前的了,可能系统不一样了。
最近遇到路由器自动登陆cmcc的问题楼主可以帮忙吗?
话说现在这个bug和谐了没有?