首先需要配置Winpcap环境,具体环境包与配置方法到家可以到这里下载:
http://download.youkuaiyun.com/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包,这时候可以发现百度主页完全打不开了,而其他网站可以正常打开,即阻断成功。
结果图:

本文介绍了一种基于Winpcap的动态内容阻断技术,通过协议还原HTTP和AC多模式匹配分析网页,利用Fin数据包阻断网页加载。通过构建AC自动机匹配模式,抓取并修改网络数据包,模拟阻断特定网页,如百度主页。尽管存在TCP会话结束快速的问题和网络路由限制,但该方法展示了阻断的可能性。内容分析简化处理仅匹配URL,完整阻断需考虑滑动窗口预测。附带CodeBlocks工程代码。
最低0.47元/天 解锁文章
426

被折叠的 条评论
为什么被折叠?



