欢迎来到天天文库
浏览记录
ID:25535579
大小:94.50 KB
页数:21页
时间:2018-11-20
《linux系统下sniffer的实现(二)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Linux系统下Sniffer的实现(二)BOOLReadTable()//读取Table.DAT{FILE*tab=fopen(TABLE_FILE,"r");//打开文件intcount=fread(Tab,sizeof(int),TAB_SIZE,tab);fflush(tab);//刷新文件流for(inti=0;i<=TAB_SIZE-2;i++)if(Tab[i]!=-1Tab[i+1]!=-1)Tab[i+1]=Tab[i+1]+Tab[i];elsebreak;returnTRUE;}int
2、LoadPack()//加载数据包{inti;intload_packs=0;FILE*pack=fopen(PACK_FILE,"r");for(i=0;i<BUF_COUNT;i++){if(Tab[to_be_load+i]!=-1Tab[to_be_load+i+1]!=-1){intsize=Tab[to_be_load+i+1]-Tab[to_be_load+i];intoffset=Tab[to_be_load+i];if(fread(buf+i,size,1,pack)!=1){printf
3、("Readerror...");exit(1);}load_packs++;//更新变量}else{/*donothing*/}}fflush(pack);//刷新数据流to_be_load+=load_packs;//更新变量returnload_packs;//返回读取的数目} 3.4.2系统中的buffer 在现实中的很多系统中,buffer是很重要的一种思想,为的就是减少读取外部存储的次数,延长设备的使用寿命。Buffer在计算机系统中,应用是很广泛的,例如,在硬盘和内存之间存在一层缓冲区,
4、在CPU和内存之间同样也存在一层缓冲区,这层缓冲区通常被称作Cache。 在本系统中,也同样利用了Buffer思想,有着传统意义上的原因,当然还考虑到用户操作时的特殊性,系统的Buffer思想描述如下: l在任意时刻,Buffer内最多存储100个Package数据 l刚开始,加载pack0~pack99共计100个package,当要查看pack100时,则采取的方法是:保留旧的50个package,加载新的50个package,则package编号变为:pack50~pack149,这样操作的原因是为了
5、用户的方便,因为用户经常会查看某个报文附近的几个报文。 初始状态下,假设系统已经加载了编号为0到99的数据包,如图2.7所示: 图2.7加载前缓冲区内容 在某一时刻,假设用户想查看编号为100的数据包,则需要重新加载,重新加载后的数据包如图2.8所示: 图2.8加载后缓冲区内容 使用此种Buffer思想,用户操作的方便性即体现在这个方面,在对某条报文进行研究时,会经常查看它的临近报文,使用此种机制,那么便不会不断的对要查看的临近报文进行加载,减少了读取硬盘的次数。
6、 3.4.3系统的显示问题 在控制台上,要想建造一个好的用户操作界面,是一件比较难的事情,根据我的体验,linux下著名的Sniffer工具tcpdump的操作界面也不够友好,普通用户很难操作。在ple”模式,“detail”模式意为“详细显示模式”,“simple”模式意为“简单显示模式”。 在“detail”模式下,每个包得到尽可能详细的解析,解析包的每一层信息,示意如图2.9: 图2.9详细显示模式 根据上图显示的信息,可以得知此包是一个ICMPPackage,具体内容属于pingRe
7、ply,更详细得知是本主机ping本主机的一个数据包。 “simple”模式意为简单模式,所谓简单模式就是对每个Package尽可能的用一句话来描述,虽然尽可能的简短,但是一定要包含以下信息: lPackage的类型 lPackage的作用 这种模式的重要作用是在用户对包进行检测和测量时,通常会查看相邻的几个Package,这样的模式方便用户进行“查看上一个Package”和“查看下一个Package”,只要用户在这种模式下按“N”或者“n”就可以查看下一个package,只要按“L”或“l”键就可以查看
8、上一个Package。 “simple”模式的示意如图2.10所示: 图2.10简单显示模式 从图中可以看出,当前正在查看的包用“蓝色”的线条标出,方面用户的操作,当用户向上或者向下进行选择时,此蓝色线条也同样会向上或向下运动,这样做的原因是是的系统显示具有动态效果。 “detail”模式的显示比较简单,只要逐层进行解析就可以了,下面我们主要讨论下
此文档下载收益归作者所有