• 简体中文
  • 繁体中文
  • English
Shaohui.org>作品>SnifferFox>SnifferFox工作原理

SnifferFox工作原理

软件首先把网卡设置为混杂模式,然后获得网卡接收到的数据,按TCP/IP协议对数据包进行分析,按照用户的要求把一部分包过滤掉,然后再把这些等剩下的数据包写入缓冲区(一块指定大小的内存块,可以根据用户计算机的内存大小手工设置),显示在用户界面上,当缓冲区满了的时候,系统会自动把缓冲区的数据写入到外存中去。
下图是一个简单的说明。

SnifferFox是一个多线程的系统,大致可以分成3个线程(实现的时候实际只用了2个),抓包线程(Sniffer Thread),协议分析和过滤的线程,用户界面。工作在数据链路层,因此可以获得原始的数据帧,所以SnifferFox可以支持ARP,RARP等底层协议。
由于Sniffer截获的包的数据量是相当大的,所以把这些包都保存在内存中是不太现实的想法,所以这里我们引进了操作系统中两个概念Cache和Buffer。Cache是临时保存数据包的一个链表。为了不给用户的计算机带来太大的负担我们限制这个链表的最大长度为5000。当这个链表达到长度达到其用户设置的上限的时候,系统会自动把链表中的数据写到Buffer中,然后把Cache清空。
Buffer是一个二进制文件,它是由一个一个的数据包组成。我们不妨称每个包为一个记录。其长度是不固定的,主要是因为数据包的大小是没有办法确定的。

它由4个部分构成,ID(4字节),段偏移(4字节),数据帧的相关信息(16字节),数据(长度不定,不过可以根据图中的计算公式来计算)。其中段偏移也就是记录长度,主要是用于确定记录的结束位置和下一个记录的开始位置。

Comments