手机连上wifi热点后自动弹窗的功能
用buildroot来制作文件系统很方便,编译出来的文件系统是直接可用的,不用添加脚本等麻烦的工作,很多的库和app都可以
直接添加到文件系统里边,如常用的udhcpc,tftp,apache,lighttpd,php等..
1、 到buildroot目录下执行make ARCH=arm menuconfig
(1)配置CPU参数
little endian 指的是小端存储;
二进制格式是ELF;
CPU是Cortex-A5;
交叉工具支持eabihf;
浮点书处理采用VFP-v4;
采用精简指令集Thumb2;
(2)指定交叉编译工具
(3)勾选要编译的开源软件
(4)保存退出,执行make进行编译;
2、将编译好的二进制执行文件和需要的库文件拷贝到开发板上
将 /usr/local/sbin 、 /usr/local/bin 、 /usr/local/include 、 /usr/local/lib 、 /usr/local/share/man 下新生成的与 bind 有关的文件拷贝到目标机的相同目录下。
3、bind这个DNS域名解析服务器移植好后,执行下面的语句实现开启服务
named -c named.conf &
-c指配置脚本named.conf的文件地址
named.conf主要有下面几个内容
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "test.com" IN {
type master;
file "test.zone";
allow-update { none; };
};
zone "." {
type master;
file "rtk.zone";
allow-update { none; };
};
最后一个zone "."是我写的,表示所有的任何域名都要用这个进行解析,解析文件放在rtk.zone里面;
rtk.zone主要内容如下:
@ IN SOA ns.domain.com. hostmaster.domain.com. (
1053891162
3H
15M
1W
1D )
IN NS 10.1.1.1
* IN A 10.1.1.1
上面*号表示所有域名, 10.1.1.1是RTK的本机IP,也就是把所有的域名都解析为RTK的本机IP。
经过上面的折腾,现在手机连上RTK的wifi后就能够实现DNS拦截了,把手机访问的所有域名都强制解析为RTK的IP地址,如果这时候RTK上有web服务器,那么就会显示web网页。
但是要实现自动弹窗功能,还有一个步骤需要做,那就是配置web服务器,实现HTTP重定向,使得HTTP头变成302,这样,手机就会自动弹窗了。原理图如下所以:
实现HTTP的重定向其实非常的简单,只要在服务器的配置脚本中加入这样一条语句就可以了,
url.redirect = ("^/(.*)" => "http://10.1.1.1/rtk",)
这条语句的意思就是将所有的url都重新指定一个地址,指定到rtk目录下。这样就实现了简单的重定向功能了。
这个时候,手机连上wifi后,就是自动弹出rtk目录下的一个index.html的网页,该网页就是RTK的首页。
扩展:如果这个时候要访问外网怎么办,其实也很简单,只要把访问的外网的域名url解析的IP地址写在named.conf 域名配置脚本里面。
ccj@ccj-ZHD:host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 112.80.248.73
www.a.shifen.com has address 112.80.248.74
在Ubuntu上通过host查看该域名或者URL的正确IP地址,然后把这个IP地址写入到DNS的配置文件里面,这样,一旦用户访问这个url就会变解析成对应的IP地址。假设用户访问了www.baidu.com,那么就会被解析成112.80.248.73这个IP。其实这就是本地局域网DNS的原理。
假设我们有一个wifi网卡wlan0,3G网卡ppp0。那么拨号成功后,ppp0将有自己的IP,可以连接外网。wifi作为热点,所有接入它的设备将在同一局域网内,但明显和ppp0不在同一个网段。
那么我们需要把从wlan0接收到的目的地址是112.80.248.73的数据包都转发到ppp0,并且把自己伪装成从ppp0发出的数据。
明确了数据流的流向,就等于知道了这个链路上的有哪些表和链。那么我们首先选择nat表,因为只有它能做网址转换,然后更深入,我们知道这个过程中,nat表的PREROUTING这个链是具体实现“伪装”功能的。
具体做法:
1、使能转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
2、设置转发表nat
iptables -t nat -A POSTROUTING -d 112.80.248.73 -p tcp -j MASQUERADE -o ppp0
iptables -t nat -A POSTROUTING -d 112.80.248.73 -p udp -j MASQUERADE -o ppp0
-t后面的参数指定哪个表格进行修改,我们选择nat
-A说明规则添加的方式,append“追加”
POSTROUTING,说明修改的chain
-d是匹配规则中的一种,表示目的IP
-p 是网络协议
-j jump,指跳转哪个target进行处理
MASQUERADE是伪装,它自动检测出口的ip,然后将数据包伪装成从ppp0发出的数据请求
-o 出口网卡
通过这个方法,我们就可以访问外网的一个url了,比如百度地图的API,中海达官网等。
手机连上wifi热点后自动弹窗的功能的更多相关文章
- 【转载】华为荣耀V9手机如何设置WiFi热点共享
有时候我们在电脑的时候发现没有无线网络以及有线网络,如果你的手机有相应网络,并且流量足够(当前很多手机流量套餐都是不限量了),可以开启手机上的Wifi热点进行流量共享使用,开启Wifi流量热点后,电脑 ...
- 电脑能上网,手机连上wifi不能上网
电脑能上网,手机连上wifi不能上网 ,其实只要把手机的dhcp 改为我们熟悉的就行了 我此处就设置为114.114.114.114
- 连上Wi-Fi 热点自动弹窗的实现方法
当我们连上某个热点, 自动弹出登录窗口的专业名称叫做: Captive portal 原理, 实现方式有三种 1 : dns 跳转, 在热点上面实现配置, 把所有dns请求返回都配置为:服务器地址 : ...
- 手机共享成wifi热点电脑无法上网的问题
第二次遇到这样的问题,每次百度都不能解决我遇到的问题.上一次已经自己鼓捣着解决了,后来忘记怎么弄好的.第二次遇到这个问题,又是浪费了许多时间后,偶然弄好了,突然想起来上次就是这样弄好的.所以就针对我自 ...
- Angular页面加载后自动弹窗
首先在控制器内写好一个弹窗,我用的是ionic的默认提示对话框 // 一个确认对话框 $scope.showConfirm = function() { var confirmPopup = $ion ...
- 七牛上传ipa后自动生成plist文件
1.利用模板技术动态生成plist文件的内容:(模板内容和data替换为plist需要的内容) //artTemplate <script src="js/template.js&qu ...
- 手机连接wifi自动弹窗的原理及其实现方案
一.手机连上wifi后会自动弹窗的原理 生活中,有很多需要认证的路由器,手机连接wifi热点后会自动弹出一个网页,让用户输入账号和密码,比如星巴克,肯地基,麦当劳,甚至是火车站和机场的候车室.其实这是 ...
- [转载]Windows 7笔记本创建wifi热点供手机上网教程
用智能手机的朋友会发现这样一个问题,智能手机比普通手机上网更耗流量.这是因为智能手机应用(软件)丰富,而且大部分应用都会自动联网.为此,许多人每月包了上百M的流量套餐,但用的时候还是小心翼翼,生怕流量 ...
- Windows 7笔记本创建wifi热点供手机上网教程
Windows 7笔记本创建wifi热点供手机上网教程 | 浏览:60606 | 更新:2012-07-19 11:48 | 标签:笔记本 wifi 1 2 3 4 5 6 7 分步阅读 用智能手机的 ...
随机推荐
- gridview--基本的gridview
GridView 元素距离设定 因为该设定比较简单 防止以后忘记 所以贴 供自己查阅 1. 布局:main.xml <?xml version="1.0" encoding= ...
- html_
============= 博客大全: 脚本之家:http://www.jb51.net/list/list_233_104.htm 红黑联盟: http://www.2cto.com/kf/yid ...
- eclipse升级,导入旧版eclipse的插件[转]
启动 eclipse.菜单 File => import … => Install => From existing Installation, 点确定, 就会弹出对话框, 浏览选择 ...
- heredoc和nowdoc的区别
heredoc使用 <<< EOT 的标示符,而nowdoc使用 <<< 'EOT' 这样的标示符,其中nowdoc是PHP5.3引进的新技术,它包含了heredo ...
- Windows 64位下安装Redis详细教程
方法/步骤 在D盘新建文件夹[redis],右键解压Redis ZIP包,把所有文件解压到redis文件夹中.(其他盘符也可以滴^_^) 文件介绍: redis-benchmark.exe ...
- 30天轻松学习javaweb_tomcat的虚拟目录设置
1.在server.xml文件的</Host>前面加入.需要重新启动Tomcat才能生效.<!--配置虚拟目录--><Context path="/itcast ...
- Xcode7--坑无法运行iOS9以下的模拟器
Unable to open liblaunch_sim.dylib. Try reinstalling Xcode or the simulator 解决办法 一.找到目标文件 /Applicati ...
- 查看Oracle的SID用户名等信息
源地址:http://zhidao.baidu.com/question/681563406501077052.html 用sysdba身份登录 比如 conn /as sysdba 匿名管理员登陆 ...
- Using Redis as Django's session store and cache backend
http://michal.karzynski.pl/blog/2013/07/14/using-redis-as-django-session-store-and-cache-backend/
- sql server 2008 System.Data.SqlClient.SqlException (0x80131904): 查询处理器未能为执行并行查询启动必要的线程资源 处理方法
修改并行度: 修改了这个“最大并行度”,如果再没出现 cxpacket应该没问题了 参考资料:http://jingyan.baidu.com/article/5d6edee22daf8799eade ...