Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7093486
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: LINUX

2013-12-05 10:18:20

原文地址:TCPDUMP 原理 (Linux) 作者:zhoujianpingboy

Linux:

PF_PACKET  往是专门用于抓包的,往系统网络层注册一个协议。然后所有的往外发的包和进来的包都会调到这个文件里面 的packet_rcv() 函数,

static int (struct  *, struct net_device *dev,
 struct  *, struct net_device *orig_dev)




outgoing方向(出去的包)会在 dev_queue_xmit_nit 里面遍历 ptype_all 链表进行所有网络协议处理的时候调用到packet_rcv 。
incoming  方向(从外面其他机器进来的包会在 netif_receive_skb 函数里面同样办法遍历 ptype_all进行处理的时候调用到packet_rcv 。


利用数据链路层抓包 

Linux:
对于Linux是sock_packet 
对于Solaris是DLPI 
对于BSD是BPF 

libpcap封装了上述这些接口而已。

Windows:
采用原始套接字RAW_SOCK
采用Winpcap.lib
采用winsock 2 spi(服务提供者接口
采用Api Hook   
采用ddk(device   driver   kit设备驱动工具包)

|应用层|------exe程序,比如ie
--------
|表示层|-------ws2_32.dll
--------
|会话层|-------SPI
--------         
|传输层|-------TDI(不能截获ICMP等协议的数据)
--------  
|网络层|-------NDIS(可以截获所有的网络数据)
--------
|链路层|-------设备驱动 
--------       
|物理层|-------网卡

阅读(535) | 评论(0) | 转发(0) |
0

上一篇:计算机网络原理之二

下一篇:GO、 GO 、GO

给主人留下些什么吧!~~