【智能路由器】基于netfilter的高效广告植入(非代理方式)

【智能路由器】系列文章连接
http://blog.csdn.net/u012819339/article/category/5803489


广告植入最终目标

路由器子网下的设备访问外部web服务器时,其数据需要流经网关(这里就是路由啦),我们可以在路由器中设立“检查站”,对流经的数据包先“调戏”一番,如果对某个数据包“满意”,就会注入我们的js脚本。
广告植入的目标是要在网页中植入一个脚本连接,然后你可以尽情在你的脚本中发挥!


初步效果

先上几张效果图片尝尝鲜
1.例子使用了一个javascript脚本文件 ad.js 。脚本代码如下:

alert('Hello! If you see this, it means you successfully visited our ad.js!');

该测试脚本会使网页加载前弹出一个对话框,内容是 Hello! If you see this, it means you successfully visited our ad.js! ,如下:
截图1:
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第1张图片

截图2:
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第2张图片

2.例子使用了一个网上的脚本,其连接地址为 http://so99.cc ,可以点进去看看其内容,该脚本会在网页中加入菜单,植入效果如下:
截图1:
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第3张图片

截图2:
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第4张图片

截图3:
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第5张图片

当一个脚本被成功链接进一个网页时,web前端开发人员就可在脚本中大展拳脚了!


广告植入前分析

1 在网页中植入一条脚本,可以在这个位置(head 标签后面):



    
        
        ...
    
    
    ...
    

2 现在的浏览器都支持常见几种压缩格式,浏览器向web服务器发出资源请求时,会请求服务器下发压缩后的数据(节省带宽)。但我们无法对压缩过的数据进行植入,所以我们需要拦截客户端的请求数据包,并去除http报头中的Accept-Encoding字段,如图
【智能路由器】基于netfilter的高效广告植入(非代理方式)_第6张图片
步骤:
—>排除ARP包(即挑选ip包)
—>提取TCP数据包(http报文是架在TCP之上的)
—>检测目的端口是否是80端口数据包(https使用的是443端口,且数据加密,先不予考虑)
—>检查http的请求方式是否是GET
—>搜集http包头信息中Accept-Encoding字段,将其内容替换为空格
—>进行TCP和IP校验

3 对外部服务器返回的数据包进行筛选
步骤:
—>排除ARP包(即挑选ip包)
—>提取TCP数据包(http报文是架在TCP之上的)
—>检测源端口是否是80端口数据包(https使用的是443端口,且数据加密,先不予考虑)
—>检查http状态是否是 HTTP/1.1 200 OK
—>搜集http包头信息中Content-Type字段,判断是否是html类型
—>寻找合适的植入点(替换html文件中无关紧要的字段,http报文长度不变,这样所作的更改最少,效率也最高!)
—>数据植入,并进行TCP和IP校验

思路是替换原网页中的臃余数据。这样我们不必在Linux内核层对网络数据包重新组装,因为在netfilter上处理的数据包都是经过TCP分段或IP分片后的一个个小于1500字节的数据包,也不必更改http报文长度,只用截取http报文被TCP协议分段后的第一个分段,然后删除html文件开头一部分信息中的臃余信息,植入成我们的脚本连接即可。

如下,我复制了一个html网页的部分代码,



    <html xmlns="http://www.w3.org/1999/xhtml">

<head>   


    <script type="text/javascript" src="http://c.csdnimg.cn/pubfooter/js/tracking.js" charset="utf-8">script>  

    <script type="text/javascript">
        var protocol = window.location.protocol;
        document.write('
                    
                    

你可能感兴趣的:(智能路由器,智能路由器)