免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 714 | 回复: 0
打印 上一主题 下一主题

数据包截获:内核改动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-08 23:40 |只看该作者 |倒序浏览

概述
在此,我们将操作内核源代码以扩展内核本地数据包截获能力。
内核源文件位于 /usr/src/linux,要修改的两个主要文件是 ip_input.c 和 ip_output。这两个文件位于 /usr/src/linux/net/ipv4/ 目录中。
源文件修改:ip_input.c
ip_input.c 包含这两个函数,可以为所有流入数据包调用它们: incoming packets:
  ip_local_deliver(struct sk_buff, struct device,struct packet_type)
为所有的流入数据包执行而不考虑目的地
   ip_rcv(struct sk_buff, struct device,struct packet_type)
为目的地是本地机器的所有数据包进行调用
  • sk_buff
        TCP/IP 协议栈中数据包的容器。
  • device
        设备结构。
  • packet_type
        数据包的类型:流入或流出。

ip_rcv 执行 IP 层所需的几个任务,包括重新装配、校验和计算等。
由于 ip_rcv 处理所有流入的 IP 数据包,因此这是一个添加要对流入数据包执行任何附加代码的好地方。其他选项是用于编写自己的 ip_rcv 例程的。
源文件修改:ip_output.c
与 ip_output 一样,ip_output.c 位于 /usr/src/linux/net/ipv4/ 目录中,它处理流出的数据包。它的四个函数是:
     ip_build_and_sent_pkt(struct sk_buff,struct sock,u32 saddr,u32
   daddr, struct ip_options)
将 IP 报头添加到 sk_buff 并将其发送出去
    ip_queue_xmit(struct sk_buff)
对要发送的数据包排队
    ip_build_xmit_slow()
构建和传送数据包
      ip_build_xmit()
“快速”构建和传送数据包,该选项只用于无需碎片整理的选项。
只有 ip_build_xmit_slow 和 ip_build_xmit 处理所有流出的 IP 数据包,因此任何额外处理均可在任何阶段完成。对于 ip_input.c,其他选项用于编写自己的例程,然后从这些例程中调用最初的函数。您选择的策略依赖于您要实现的功能。
使用 Makefiles 修改源代码
可以使用 Makefiles 动态修改内核源代码;Makefile 脚本确保对源代码做必需的修改。可以使用一条命令(make install 或 make uninstall)添加或删除数据包拦截器,然后重新编译内核并重新启动机器。
由于该机制要求修改 Linux 内核源代码,所以快速调试可能非常困难。而且,由于该方法要求重新编译内核,所以这个过程是冗长、复杂且不灵活的。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76292/showart_1686476.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP