基于winPcap的动态内容阻断
2014-04-13 19:50
225 查看
首先需要配置Winpcap环境,具体环境包与配置方法到家可以到这里下载:
http://download.csdn.net/detail/hit_fantasy/7187567
实现的功能:
通过协议还原(http),以及网页内容的分析(AC多模式匹配),对于网页加载使用Fin数据包等方法进行阻断。(有点像某墙。。)
流程图如下:
程序的实现过程:
首先调用Build_Ac_Automation 函数,读取文件1.txt 中的模式串建立AC自动机。
之后用pcap_findalldevs_ex 函数打开设备列表,找到可用的设备并pcap_open 函数打开。
接下来就可以抓包了:使用pcap_next_ex函数抓取局域网中的数据包。
每次抓到的包pkt_date,检查其是否为http 的数据包:如果是,则用这整个http 字符串进行AC 匹配,如果成功则将数据包中的TCP 头FIN 分节置1,添加伪首部后计算校验和,然后将这个数据包再次发送,即发送了一个FIN 包。因为一个请求(例如百度主页)会有很次tcp 会话过程,所以发送一个FIN 包能成功阻断它的加载过程。在程序里为了测试阻断是用的while(1)死循环一直发FIN包,这时候可以发现百度主页完全打不开了,而其他网站可以正常打开,即阻断成功。
结果图:
发现发现百度主页打不开了,阻断成功。
因为自己一直在发包:
分析阻断包中的内容:
可以看出是重发送的Fin包。
存在的问题:
tcp传输是一个很快的过程,尤其对于比较简单的页面。当我们在做AC匹配或者还没构造好Fin包的时候这个TCP会话可能已经自己结束了。幸好现在大多数页面都比较复杂,不止一个TCP包,所以我们可以用这样的方法阻断网页的加载。
考虑到网络路由环境,我们很难捕到别人的连接包(除非你做网关),更别说阻断了。所以这个实现最多模拟一下自己阻断自己,要真正能使用还需要很多的修改。
内容分析也是一个比较复杂的过程,要考虑协议使用什么编码,是否压缩(gzip),是否加密。在我的模拟中没有实现这些,只做了url的匹配
如果要实现完全阻断的话,要根据滑动窗口大小来做预测,这是一个比较难的过程,需要大量工程实践才能搞定。
题外话:
做内容阻断时偶然想到天朝的GFW,不禁感慨万千。whatever,技术是无错吧。
附CodeBlocks工程代码:
http://download.csdn.net/detail/hit_fantasy/7187701
http://download.csdn.net/detail/hit_fantasy/7187567
实现的功能:
通过协议还原(http),以及网页内容的分析(AC多模式匹配),对于网页加载使用Fin数据包等方法进行阻断。(有点像某墙。。)
流程图如下:
程序的实现过程:
首先调用Build_Ac_Automation 函数,读取文件1.txt 中的模式串建立AC自动机。
之后用pcap_findalldevs_ex 函数打开设备列表,找到可用的设备并pcap_open 函数打开。
接下来就可以抓包了:使用pcap_next_ex函数抓取局域网中的数据包。
每次抓到的包pkt_date,检查其是否为http 的数据包:如果是,则用这整个http 字符串进行AC 匹配,如果成功则将数据包中的TCP 头FIN 分节置1,添加伪首部后计算校验和,然后将这个数据包再次发送,即发送了一个FIN 包。因为一个请求(例如百度主页)会有很次tcp 会话过程,所以发送一个FIN 包能成功阻断它的加载过程。在程序里为了测试阻断是用的while(1)死循环一直发FIN包,这时候可以发现百度主页完全打不开了,而其他网站可以正常打开,即阻断成功。
结果图:
发现发现百度主页打不开了,阻断成功。
因为自己一直在发包:
分析阻断包中的内容:
可以看出是重发送的Fin包。
存在的问题:
tcp传输是一个很快的过程,尤其对于比较简单的页面。当我们在做AC匹配或者还没构造好Fin包的时候这个TCP会话可能已经自己结束了。幸好现在大多数页面都比较复杂,不止一个TCP包,所以我们可以用这样的方法阻断网页的加载。
考虑到网络路由环境,我们很难捕到别人的连接包(除非你做网关),更别说阻断了。所以这个实现最多模拟一下自己阻断自己,要真正能使用还需要很多的修改。
内容分析也是一个比较复杂的过程,要考虑协议使用什么编码,是否压缩(gzip),是否加密。在我的模拟中没有实现这些,只做了url的匹配
如果要实现完全阻断的话,要根据滑动窗口大小来做预测,这是一个比较难的过程,需要大量工程实践才能搞定。
题外话:
做内容阻断时偶然想到天朝的GFW,不禁感慨万千。whatever,技术是无错吧。
附CodeBlocks工程代码:
http://download.csdn.net/detail/hit_fantasy/7187701
相关文章推荐
- 基于winPcap的动态内容阻断
- JavaScript基于Ajax实现不刷新在网页上动态显示文件内容
- 基于内容,动态缩放AIR窗口.
- 基于jquery模仿新浪微博的无狭缝滚动2(内容动态加载)
- 基于内容产品的MVP探索
- 三、基于802.1x+AD+NPS+DHCP动态下发VLAN配置 (第3篇、添加角色NPS并设置)
- TextView动态改变显示的内容
- MyBatis之基于XML的动态SQL
- ssas 分析服务基于角色的动态授权
- 基于DotNet4.0的项目使用FineUI必须指定以下内容
- .NET下基于组件的分布式系统动态配置
- Extjs gridpanel 动态修改store内容
- 文本去重第一步:基于内容的文本相似性计算
- \t\t鼠标滑过导航栏 内容动态改变
- 《玩转.NET Micro Framework 移植-基于STM32F10x处理器》--内容介绍
- 插头与轮廓线与基于连通性状态压缩的动态规划
- 动态|交通银行张哲宇:目前各家银行基于区块链技术特性的创新应用还相对粗浅
- 一个基于 EasyUI 的前台架构(2)主体内容区结构设计
- 客户端脚本调用服务器端动态内容,移动到链接显示预览