佐须之男 发布的文章

wifidog认证无线认证管理

在网上了解到,许多实现无线或者有线Web验证的方案都用到 WiFi无线热点管理系统
目前比较主流的有:ros wiwiz 海蜘蛛这几个。ROS全称RouterOS软路由,最强大,但是比较复杂,海蜘蛛很容易,但效果一般般,WiWiZ实现一般,效果比较好,目前大部分研究的是wiwiz.为什么选择Wiwiz?并不是因为多人选我们就根从,而是因为它适合我们。

Wiwiz是一个开发式的系统,、装配置灵活,可以安装到路由器或者本地计算机、虚拟机都可以。通过Wiwiz Web控制面板创建并定制自己的热点。包括认证方式、是否付费及费率、认证页面的外观样式、颜色、图片以及服务条款都可以进行定制。为用户有偿提供网络服务。

Wiwiz系统,全称Wiwiz HotSpot Builder,一个WiFi无线热点管理系统,也可用于有线,
创建强制门户/认证页面。
Wiwiz HotSpot Builder的组成:
1、Wiwiz Web控制面板
2、客户端-Wiwiz HotSpot Builder Utility
部署了Wiwiz系统的计算机、路由器或者无线路由器充当WIFI网中的Internet网关。
可以实现Web认证。市面上创建商用Wifi热点的做法一般都是用强制网络门户系统(Captive Portal)/热点管理系统
来实现的。他们的原理都类似,需要一个防火墙/网关系统,一个用于认证管理和控制的后台系统。
常见的技术解决方案有NoCat、Wifidog、Chillispot等。有一些整套的解决方案,FON、Wiwiz、
ile sans fil、Sputnik、FreeSpot,这些要money的哦。wifidog 是免费开源的解决方案,只是性能不是很好,用于一般环境是足够的。

本文章由http://www.wifidog.pro/2015/04/07/wifidog%E8%AE%A4%E8%AF%81-5.html 整理编辑,转载请注明出处

海蜘蛛Tomato V3.3系统编译视频教程

很久没发布Tomato固件和帖子,今天给大家奉上一篇Tomato编译的教程,后期可能会陆陆续续地上传一些技术类视频,方便大家学习。由于工作和经济压力原因,没有时间做固件,但是非常感觉大家对我的支持。
未来的一段时间,我会转到幕后做一些Tomato的视频开发教程,让更多的人加入开发队伍中来。

视频是4K录制的,高清的土豆比较模糊,请大家选择超清播放,优酷视频还在审核中,请大家耐心等待。

视频中需要用到的代码和资料

请使用Ubuntu 64位系统

http://dl.hi-spider.com/mips/GPL_Hi-spider_tomatoV3.3.tar.gz

1.设置编译环境
在Ubuntu的系统执行如下命令

sudo apt-get update
sudo apt-get install build-essential linux-headers-$(uname -r)
sudo apt-get install libncurses5 libncurses5-dev m4 bison flex libstdc++6-4.4-dev g++-4.4 g++ libtool sqlite
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev
sudo apt-get install libc6 libncurses5-dev  automake


2.配置交叉编译工具

sudo cp -R opt/brcm 源码的位置/shibby_v3/tools/brcm /opt/brcm

vi ~/.bashrc
在最后一行处加入
if [ -d "/opt/brcm" ] ; then
    PATH=/opt/brcm/hndtools-mipsel-uclibc/bin:/opt/brcm/hndtools-mipsel-linux/bin:$PATH
fi
保存退出, 以便每次启动linux时能找到编译器.
source ~/.bashrc



find -type d -exec chmod +x {} \;

技术相关咨询和路由器定制联系:18013582125(QQ和手机是同一个)

本文章由 http://www.wifidog.pro/2015/04/03/tomato%E6%B5%B7%E8%9C%98%E8%9B%9B%E7%BC%96%E8%AF%91.html 整理编辑,转载请注明出处

wifidog配置分析

AuthServer {
    Hostname                  (Mandatory; Default: NONE)
    SSLAvailable              (Optional; Default: no; Possible values: yes, no)
    SSLPort                   (Optional; Default: 443)
    HTTPPort                  (Optional; Default: 80)
    Path                      (Optional; Default: /wifidog/ Note:  The path must be both prefixed and suffixed by /.  Use a single / for server root.)
    LoginScriptPathFragment   (Optional; Default: login/? Note:  This is the script the user will be sent to for login.)
    PortalScriptPathFragment  (Optional; Default: portal/? Note:  This is the script the user will be sent to after a successfull login.)
    MsgScriptPathFragment     (Optional; Default: gw_message.php? Note:  This is the script the user will be sent to upon error to read a readable message.)
    PingScriptPathFragment    (Optional; Default: ping/? Note:  This is the script the user will be sent to upon error to read a readable message.)
    AuthScriptPathFragment    (Optional; Default: auth/? Note:  This is the script the user will be sent to upon error to read a readable message.)
}

# Listen on this port
GatewayPort 2060

# Parameter: CheckInterval
# Default: 60
# Optional
#
# How many seconds should we wait between timeout checks.  This is also
# how often the gateway will ping the auth server and how often it will
# update the traffic counters on the auth server.  Setting this too low
# wastes bandwidth, setting this too high will cause the gateway to take
# a long time to switch to it's backup auth server(s).
CheckInterval 60

# Parameter: ClientTimeout
# Default: 5
# Optional
#
# Set this to the desired of number of CheckInterval of inactivity before a client is logged out
# The timeout will be INTERVAL * TIMEOUT
ClientTimeout 5

wifidog流程参照http://dev.wifidog.org/wiki/doc/developer/FlowDiagram描述,这里介绍下配置内容。

AuthServer是Portal服务器的配置项;GatewayPort是Wifidog监听的地址,默认是2060,一般保持默认即可;CheckInterval是心跳时长,单位是秒,什么是心跳呢,客户端认证成功之后,如果有网络访问动作,Wifidog getway就会每隔一段时间访问Portal服务器的一个脚本,用于认证计费,当然,如果客户使用超时或超流量,也可以通过心跳强制客户端下线。ClientTimeout是用户一次认证成功后的网络访问时长,超过这个时间需要重新认证,这个时长并非由ClientTimeout单独决定,取决于INTERVAL * TIMEOUT。详细的配置信息可以访问:http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf

重点讨论Portal服务器的配置项,Hostname是Portal服务器的ip或者是域名,SSLAvailable和SSLPort是SSL加密配置,如果你的Portal服务器有配置HTTPS加密,则需要配置这两项;Path是指你的脚本路径(举例,http://a.com/to/,则a.com是域名,/to/是路径),注意路径必须以“/”开头和结尾,如果是根路径,则填一个“/”即可;接下来的5个配置指明你的脚本名,这说明了我们需要写五个脚本,我会详细说明。(以下文中涉及的“第几步”均是指Wifidog认证过程的步骤)

LoginScriptPathFragment配置项配置的是登陆脚本,它通过GET方式接受传入参数gw_address、gw_port、gw_id、mac和url,gw_address是AP Getway的ip地址;gw_port是Wifidog监听的端口,即上面介绍的wifidog.conf中的GatewayPort配置;gw_id是AP Getway的id,配置文件wifidog.conf中可以配置,默认值是default,这个值的作用是当存在多个AP是,服务器或管理员可以根据不同的id确定用户的接入点;mac是客户计算机的网卡物理地址,注意不是AP网关的mac,这个mac是用来识别客户计算机的;url是客户初始访问的Url,这些Querystring都是AP Getway向客户端发出重定向请求自动生成的。这个脚本同时需要提供登陆页面,如果登陆成功,需要向客户;端返回302重定向,重定向到:http://gw_address:gw_port/wifidog/auth?token=[token];即实现第7步,其中[token]是你自己自动生成的token字符串,随机生成一个字符串即可,但是长度最好长些,安全性更高,另外,token需要根据不同用户保存,最好保存于数据库中,之后的AP Getway询问token有效性(第9步)还需要用到。这里最好使用cookie或session,使之后的登陆成功页面可以判断用户已经成功,阻止未登录成功的人访问认证成功页面。

PortalScriptPathFragment配置项配置的是登陆成功后服务器展示的脚本(第11步),它通过GET方式接受1个传入参数,gw_id,这个脚本比较简单,告知用户登陆成功即可,当然,最好重定向到用户之前想要方位的url,即第1步用户输入的URL。
MsgScriptPathFragment配置项配置的是错误信息展示脚本,它通过GET方式接受一个传入参数message,这个脚本也很简单,展示message的内容即可,目的是当认证过程出现错误,AP Getway会重定向到这个脚本,URL中含有错误的信息。

PingScriptPathFragment配置项配置的是心跳脚本,这个脚本它通过GET方式接受5个传入参数,gw_id,sys.uptime,sys.memfree,sys.load,wifidog.uptime,其中,sys.uptime指的是AP Getway的启动时间,sys.memfree指的是AP Getway的空闲内存,sys.load指的是AP Getway的CPU负载,wifidog.uptime指的是wifidog的启动时间,这个脚本每隔一段时间(Wifidog.conf里配置的CheckInterval),Wifidog会自动访问,但是其目的不是用户验证,而是帮助管理员管理AP节点,了解AP节点的负载情况,适时增加节点等,Wifidog访问这个脚本时,需要这个脚本返回Pong,如果你没有统计AP节点负载数据的需求,可以丢弃这些数据,直接回应Pong,注意,这个回应只包含“Pong”字符串,无需包含其他html标签。

AuthScriptPathFragment是用户认证脚本,实现的是第10步的功能,这个脚本它通过GET方式接受7个传入参数:stage、ip、mac、token、incoming、outcoming和gw_id。其中stage的值是login,ip是客户端的ip,注意不是AP Getwap的ip;mac是客户端的网卡物理地址,token就是你在认证脚本生成并返回给客户端的;incoming和outcoming用于流量控制,默认值为0;gw_id同上。如何识别用户登录成功,通过mac和token吧,LoginScriptPathFragment登陆脚本在用户登陆成功后需要记录用户的mac和token,然后在此处验证,如果匹配,回复Auth: 1,否则,回复Auth: 0。另外,这个脚本也是心跳脚本,每隔一段时间Wifidog会自动访问,如果用户使用时间超过限制或流量超过额度,服务器可以及时回应Auth: 0结束用户的访问。另外需要注意的是,回应同样无需包含html标签,另外,在Auth后的冒号和0/1之间,有一个空格,缺少这个空格也会导致出错。
在配置Wifidog的配置文件wifidog.conf是,配置脚本的配置项都必须以“?”结尾,否则以GET方式传递的QueryString会因Url缺少问号访问错误的脚本。

本文章由 http://www.wifidog.pro/2015/04/03/wifidog%E9%85%8D%E7%BD%AE%E5%88%86%E6%9E%90-1.html 整理编辑,转载请注明出处

wifidog认证实现路由器插入广告

现在有很多免费的wifi 访问网页的时候底部会出现一些广告,以下为的实现过程:

1.在路由器上抓http的TCP/IP包,解压,对比,并重新算校验码,打包,并转发

如果没有很深入对的TCP/IP的了解,肯定做不了

2.使用现场的一些带过滤的代理软件(其实也是实现以上过程,但已封装好接口,不需要你在去了解TCP/IP的高深知识)

 在IPTABLE上转做好端口转发,比如把80转发到此代理的上,如8080

以下为第2种实现,基于openwrt(目前国内绝大部分广告路由的实现方式,没高大上的代码,但方式消耗更多的资源,不建议使用)

安装

http://www.privoxy.org/user-manual/actions-file.html#ADD-HEADER

修改配置文件

confdir /etc/privoxy
logdir /var/log
filterfile default.filter
filterfile user.filter
#logfile privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action   # Main actions file
actionsfile user.action      # User customizations
listen-address  10.1.1.1:8118 #你的路由地址,代理服务器地址
toggle  1
enable-remote-toggle  1
enable-remote-http-toggle  0
enable-edit-actions 1
enforce-blocks 0
buffer-limit 4096
forwarded-connect-retries  0
accept-intercepted-requests 1
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 300
socket-timeout 300
permit-access  10.1.1.0/24
debug   1    # show each GET/POST/CONNECT request
debug   4096 # Startup banner and warnings
debug   8192 # Errors - *we highly recommended enabling this*
#admin-address privoxy-admin@example.com
#proxy-info-url http://www.example.com/proxy-service.html

在user.filter 中添加规则

FILTER: block-weeds  
s|</head>|<script type="text/javascript" src="http://www.yourdomainname.com/ystest/js/hupu.js"></script>$0|

把用户规则加入到服务 user.action

{+filter{block-weeds}}
.*

把访问80的转向到你的本地代理服务器,如果你弄有wifidog时候,将要一些判断

iptables -t nat -A PREROUTING -s 0.0.0.0/0.0.0.0 -p tcp --dport 80 -j REDIRECT --to-ports 8118

如果一些普通的商家路由,此方法没任何问题,自己写个C小程序管理下配置等.

增加百度推广 user.action (哎,有钱大家赚....) 其他首页推广类似实现.

{+redirect{?tn=baiduerr}}
www.baidu.com/$
{+redirect{s@tn=\w+@tn=baiduerr@}}
www.baidu.com/s\?

配置注释:

##config
#配置在线手册
user-manual ./doc/user-manual/
#不信任的网页
trust-info-url  http://www.example.com/why_we_block.html
#出错时候管理员的邮箱
admin-address privoxy-admin@example.com
#不可访问时候的地址
proxy-info-url http://www.example.com/proxy-service.html
#配置目录
confdir .
#日志目录
logdir .
#模板目录
templdir .
#所有动作
actionsfile match-all.action
#基于网址过滤(系统带,过滤广告地址)
actionsfile default.action
#基于网址过滤(自定义)
actionsfile user.action
#基于内容过滤(系统带,去除一些网站广告内容)
filterfile default.filter
#基于内容过滤(自定义) 
filterfile user.filter
#日志文件
logfile privoxy.log
#日志等级
debug 1
#监听的地址
listen-address 127.0.0.1:8118
#启用内容切换
toggle 1
#是否可以网页上开启内容切换
enable-remote-toggle 0
#内容切换后是否使用特殊的HTTP头
enable-remote-http-toggle 0
#是否可以在网页上编辑网络行为
enable-edit-actions 0
#被禁止的页面是否可以被用户解封
enforce-blocks 0
#缓存大小
buffer-limit 4096
#代理验证
enable-proxy-authentication-forwarding 0
forwarded-connect-retries 0
#
accept-intercepted-requests 1
allow-cgi-request-crunching 0
split-large-forms 0
#活动链接超时
keep-alive-timeout 5
#流水线送达,访问页面不正常禁用
tolerate-pipelining 1
#SOCKET 超时
socket-timeout 300

本文章由http://www.wifidog.pro/2015/04/03/wifidog%E8%AE%A4%E8%AF%81%E5%AE%9E%E7%8E%B0%E5%B9%BF%E5%91%8A%E6%8F%92%E5%85%A5.html 整理编辑,转载请注明出处