很久以前写的一个功能,可以在内核协议栈植入一段代码,比如广告javascript。主要是修改http协议,难点在于修改了tcp包后,需要重组,可采用nf_conntrack_helper机制中的函数nf_nat_mangle_tcp_packet解决重组包问题。
涉及到的技术点包括netfilter,netlink,selinux,socket,json等,直接上源码。
https://github.com/yanjinjin/webad_last
流程如下

一个网络数据包的接收流程为 网卡----->网卡驱动----->内核协议栈------>应用程序
一个网络数据包的发送流程为 应用程序------>内核协议栈------>网卡驱动------>网卡
如上图,当浏览器访问一个链接,发送一个http的get请求包,路径为1------>2------>3
浏览器接收http响应包,路径为4------>5------>6

本文介绍了如何在内核协议栈中植入代码,特别是在处理HTTP协议时,通过修改TCP包并利用nf_conntrack_helper机制的nf_nat_mangle_tcp_packet函数来重组包。涉及的技术包括netfilter、netlink、selinux、socket和json。通过在数据包接收和发送流程中加入hook,实现对网页访问路径的干预,达到修改网络数据包的目的。
最低0.47元/天 解锁文章
1461

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



