在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 3591|回复: 0

[原创] 【校园网WiFi】Atom板连接web认证的公开wifi

[复制链接]
发表于 2016-5-18 22:57:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
转载自 http://bbs.intorobot.com/thread-695-1-1.html
本文目的: 让Atom可以自动连接需要web认证的wifi,通过认证,使得Atom板具有上网权限

为什么  
:  在企业或者学校都是WPA2 Enterprise网络(方便管理), 但是Atom使用的MT7620N的wifi驱动不支持WPA2 Enterprise网络(也就是普通需要用户名和密码的网络,WPA2 Personal网络即使普通的连接只需要输入密码的网络), 所以Atom不能靠正常配置连接网络.  不过为了支持各种各样的设备(不支持加密的设备), 学校或者企业都会提供公开wifi(连接不需要密码)然后加web网页认证的模式,本文即使利用这种wifi权限认证方式来"曲线救国"--让Atom可以连接网络.



需要      : Atom板, 电脑, wifi的账户与密码, web认证的公开wifi, web开发相关知识

步骤      :
1.配置Atom连接公开wifi


1.1 上电Atom板,电脑连入Atom的wifi

默认为: IntorobotXXXX     (XXXX为MAC后四位,Atom板上的贴纸可以查看)
1.2 电脑通过命令行连接Atom板
第一次使用,
telnet 192.168.8.1
   不需要输入密码,建议使用passwd root
命令设置root密码(一旦设置root密码,以后telnet不能再连接,必须使用ssh连接). 已经设置过root密码的请直接

ssh
root@192.168.8.1
连接,输入你的 root密码.
1.3 修改wireless配置文件
root@Atom:~#
vi /etc/config/wireless

本文全部以CityU的公开wifi   CityUGuest为例演示.
下面为已经配置好的文件:
config wifi-device 'ra0'
        option type 'ralink'
        option mode '9'
        option txpower '100'
        option ht '20+40'
        option country 'US'
        option disabled '0'
        option channel 'auto'


config wifi-iface
        option device 'ra0'
        option network 'lan'
        option mode 'ap'
        option ssid 'IntoRobot-Atom0A62'
        option encryption 'psk2'
        option key 'intorobot'
        option ApCliEnable '1'
        option ApCliEncrypType 'NONE'
        option ApCliSsid 'CityUGuest'
        option ApCliAuthMode 'NONE'
        option ApCliPassWord ''


在此解释部分和说明需要修改的. 第一部分config wifi-device 'ra0' 不需要修改,修改 config wifi-iface部分即可,下文 #后为注释.
config wifi-iface
         option device 'ra0'
         option network 'lan'
         option mode 'ap'                                    #openwrt的工作模式(软ap),跟多了解google
         option ssid 'IntoRobot-Atom0A62'        #Atom对外的wifi名字(SSID),可以修改自己喜欢的
         option encryption 'psk2'                        #Atom对外的wifi的加密方式,选择最常用的最好
         option key 'intorobot'                            #Atom对外wifi的密码(明文)
         option ApCliEnable '1'
         option ApCliEncrypType 'NONE'
         option ApCliSsid 'CityUGuest'                #!!!需要连接的公开wifi名(SSID)!!! 这个根据自己的环境的公开wifi选择设置,必须修改
         option ApCliAuthMode 'NONE'             #公开wifi没有密码 选择NONE
         option ApCliPassWord ''                        #没有密码



Tip: 编辑完后,按Esc键,然后输入 :wq  保存退出(简单的vim操作). 然后重启wifi
root@Atom:~#
/etc/init.d/network restart
重启wifi会断开你电脑wifi和atom之间的连接,不用担心,稍后重新连接,然后
root@Atom:~#
ifconfig

查看apcli0(如果你们修改名字),看是否获取ipv4的地址,一般为ipv4.
apcli0    Link encap:Ethernet  HWaddr 1AD:AA:00:0A:62  
           inet addr:xx.xx.xx.xx
1.png
至此你的Atom板已经连接到了公开wifi,但是你的电脑和Atom并不能访问网络(还没有权限).


2.发送POST登陆信息
这一步主要是想网络认证服务器发送认证信息获得上网权限.
公开wifi的web验证一般都至少两个信息(字段) username和password
2.png

上图中点击一个对话框,右键Inspect (使用Chrome浏览器)或者直接F12开发者模式下区Element,目的是查看这两个要发送信息的字段名字,如下图
3.png


5.png

a.找到 <form action="login" id="regform" method="post" autocomplete="off" title="Form used by registered users to login">
这是说明一个表单,注意method字段就好,大多是post,但是也可能为get,两种方式的数据传输是不一样的,需要不同的构造方式,本文以post为例,如果有遇到get情况可以融会贯通或者论坛求助.


b.上面图片其中蓝色的是输入信息的input(需要一点html的知识),
< input id="password" name="password" type="password" size="25" class="text" accesskey="p">
就是上面这样的,主要找到name的值,这是网页提交时候里面密码对应的字段,需要记下,同样要获得username的对应字段.

c.找到表单提交的网站(真的需要html知识),比如上图为https://securelogin.arubanetworks.com/cgi-bin/login   这个提交的网站和<form action="login" id="regform" method="post" autocomplete="off" title="Form used by registered users to login">里面的action字段有关系,说明提交到哪儿去. 但是并不能直接使用这个网址,因为还没有联网的权限没有dns服务器来给我们解析网址.可以ping或者其他的方式获得网址对应的ip (此处针对特殊情况提示,可能有的端口不是默认80,这种情况也需要了解端口号)


OK,至此我们需要了解abc三方面的信息.然后简单利用linux的curl命令来模拟我们的web登陆动作,实质就是把需要的数据发送过去.
以post为例子,命令
root@Atom:~#
curl -k -d "user=yourusername&password=yourpassword"   172.24.12.239/cgi-bin/login
解释:

curl 是一个程序
-k表示不接收加密(注意到web使用了https,正常需要openssh等加密解密,Atom安装openssh什么太麻烦且没有必要)
-d 表示data,也就是用post发送时候数据单独的,-d的后面data,字段间用&连接.

"user=yourusername&password=yourpassword"为我们需要发送的数据,user即使我们在b里面获取的name的字段名字,password是密码的字段名字,=后面为你自己的信息,每一个都必须正确
172.24.12.239/cgi-bin/login  为我们信息提交的地址,在c步骤获取的,如果端口号不是80需要在ip后面加上:xxx,例如172.24.12.239:8080/cgi-bin/login

该命令发送完后,如果正常我们会收到认证成功后返回的信息(一般是一个网页,比如说认证成功3秒跳转xx之类),不用理会. 可以尝试连接网络测试.


3.绑定intorobot云平台账号
参考http://docs.intorobot.com/zh/con ... nectedToTheInternet

在网络连接成功后,如果第一次使用,可以使用luci网页去绑定自己的intorobot账号,但是请不要修改
6.png

如上图,请只在右边填写信息配置,左边不要修改.


4.配置自动开机连接网络
到步骤3,已经连接好了网络也绑定账号,可以正常使用,但是还有一点问题: 每次断电后上电都需要ssh进去手动输入root@Atom:~# curl -k -d "user=yourusername&password=yourpassword"   172.24.12.239/cgi-bin/login    这样很麻烦,所以在此我们设置为开机启动脚本,使得开机自动运行.


a.创建文件connect_wifi (以root身份)
root@Atom:~#
vi /etc/init.d/connect_wifi


b.然后输入
#/bin/sh /etc/rc.common
# send user and password to auth server via post
START = 49


start()
{
     curl -k -d "user=yourusername&password=yourpassword"   172.24.12.239/cgi-bin/login

}

然后保存退出
c.修改权限,增加执行权限
root@Atom:~#
chmod a+x /etc/init.d/connect_wifi

d.添加软连接,命令
root@Atom:~#
ln -s /etc/init.d/connect_wifi   /etc/rc.d/S49connect_wifi


然后reboot既可以测试


NOTE:

1.注意b里面的数字代表执行的顺序,越大越后面执行,具体和intorobot工作人员可以讨论
2.软链接的文件名是有要求的,google

5.监控wifi
在学校和企业使用Atom是很方便的,因为这些地方wifi会覆盖很大的区域,同一个wifi  SSID各个地方都有,对于移动机器人什么比较有利.
可能还不是很完善的是,网络中断需要再次认证连接什么的,这部分在本文提出来,但是不会给出具体的解决方法,只有大致思路.
主要就是监视网络然后失败了就重试.
1. linux crontab开启周期任务区监视网络,失败了就重新连接wifi 认证之类
2.网络监视交给Atom来做,给外部留callback或者中断



遗留问题:
由于对openwrt不是很熟悉,还有问题没有解决.
在开机自动发送认证信息前,应该先调用wifi连接并且确认连接上了才有可能发送认证信息,这部分需要完善

更多实例教程请查看IntoRobot BBS http://bbs.intorobot.com/。可加入QQ群(460095989)与众多创客进行交流。
4.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-3 03:13 , Processed in 0.019864 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表