Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230303
  • 博文数量: 48
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 412
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-24 10:27
个人简介

Continuous pursuit technical details

文章分类

全部博文(48)

文章存档

2014年(1)

2013年(47)

分类: LINUX

2013-12-04 10:04:41

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(可以截获所有的网络数据)
--------
|链路层|-------设备驱动 
--------       
|物理层|-------网卡

阅读(6552) | 评论(1) | 转发(3) |
给主人留下些什么吧!~~

niao59292013-12-05 10:18:37

不错。好东西!!!