手机连上wifi热点后自动弹窗的功能

使用buildroot编译bind DNS服务器

用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 域名配置脚本里面。

[email protected]: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,中海达官网等。

时间: 2024-10-23 21:34:58

手机连上wifi热点后自动弹窗的功能的相关文章

如何在手机网站上添加百度地图(带搜索功能)

在手机网站上添加百度地图,直接用百度API里的代码就可以, http://developer.baidu.com/map/ 就可以生成地图 输入地址等一些信息,但是如何添加地址搜索 这样的地址搜索如何添加 而且添加后会出现冲突 小尖角好像是固定定位, 还没搞出来~~~

[转]监控windows服务,当服务停止后自动重启服务

近期花时间研究了一下windows和linux下某服务停了后自动重启的功能,在网上收集了些资料,并经过测试,在此整理一下.这里介绍的是windows服务的监控,是通过批处理来实现的.本例是监控windows的Computer Browser为例,每60秒检测一次(可根据实际需要调整间隔),当发现服务停止后自动重启.AutostartService.bat批处理文件内容如下 @echo off rem 定义循环间隔时间和监测的服务: set secs=60 set srvname="Compute

基于git和intotify实现的git提交服务器自动更新的功能

基于inotify实现nodejs的提交后自动同步 首先在一台server上使用nodejs+express启动一个服务器,并使用supervisor 支持修改文件后 自动重启的功能 然后在这个工程上添加git仓库的引用(指向同一个服务器的另一个git仓库所对应的位置) 然后在所有人的本地开发环境也从server仓库中clone git 工程,并进行开发. 当提交代码后,使用inotify监控server 的git仓库文件变化. 如果发生变化后,通知线上运行的server 进行一次git pul

3D打印机如何添加自动调平功能

原理说明 Kossel/Rostock等Delta(并联/三角洲)类型的机器,可以参考:http://learn.makerlab.me/guides/11 3d打印打印时最重要的是第一层的效果,如果第一层能够很好的粘在打印平台上,后面的如果不出意外,都可以顺利完成.但是第一层的打印并没有那么容易,其中一个原因就是打印平台是否水平的问题.如果平台不水平,可能导致模型的第一层在一个位置非常牢固,在另一个位置却根本没有粘上.甚至会损坏打印头(平台不平,由低的位置运动到高的位置可能会撞坏打印头). 本

android开发步步为营之48:通过WifiManager自动连上某个wifi热点

最近参加了个某个创业公司的面试,他们做了个应用,就是用户打开他们的应用就可以提供免费上网的功能,然后面试的过程中,那哥们说,你对wifi这些协议你懂吗?需要用到比较底层的东西哦,我勒个去,就这么一个上网功能就需要很底层吗?搞得很高深的样子,真是底层是涉及到修改android的框架了,修改手机ROM了,你们做到这一步了吗?没有吧,只是在android框架提供api基础上实现的,为此,我今天特意实验了一把.也就10几分钟就搞定的事情,我被你们懵到了,额... 开发过程中主要用到WifiManager

win7系统用笔记本共享wifi热点 让手机免费上网

之前一直在用这个方法把自己的笔记本变成一个wifi热点,让手机也可以直接连wifi上网,节省网费和路由器购买费. 其实就是开启了windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP).让笔记本变成无线路由器,实现共享上网. 感觉很实用,就分享给大家.有需要的朋友可以试试.华硕和联想IBMT500笔记本亲测通过. 以操作系统为win7的笔记本或装有无线网卡的台式机作为主机. 主机设置如下: 1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车 2.启用并设定虚拟W

将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网

1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid=wuminPC key=wuminWiFi此命令有三个参数,mode:是否启用虚拟WiFi网卡,改为disallow则为禁用. ssid:无线网名称,最好用英文(以wuminPC为例). key:无线网密码,八个以上字符(以wuminWiFi为例).以上三个参数可以单独使用,例如只使用mode=di

ubuntu创建wifi热点(手机可识别)

这几天实验室的无线网跪了,一直纠结着用电脑开无线的问题,试了几种办法都不能解决这个问题,不过最终还是找到了一个终极方法,给大家分享一下. 一开始我是用Ubuntu自带的network manager进行设置的,其他的笔记本电脑或者windows平板可以发现此无线网络.但是我的Android手机却不行,貌似Android系统不支持Ad-hoc. 不管怎么样还是给大家分享一下这种方法,至少方便的给别的电脑分享无线网络. 一 使用系统自带的network manager(安卓不可用) 第一步: 单机屏

XP系统下建立WIFI热点让手机、电脑能上网

http://wenku.baidu.com/view/372c5b1fa300a6c30c229f42.html 这里记录xp系统下建立共享无线网络连接,若是支持手机设备上的话,网络适配器必须是wifi的!win7自带就有,xp系统要看电脑是否支持,很多电脑型号都没有,所以想要wif热点的,换win7系统吧,简单又好. 别像这次xp被搞了3个小时. 准备:两台笔记本,有无线,有宽带线 笔记本A,B 宽带线插上A,A创建号无线网络连接后,B进行连接 步骤: 1.确定你是否有无线适配器,这个很重要