




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
No10学 院信息科学与工程学院专 业计算机科学与技术姓 名XXX学 号题 目监控IP包流量内容及要求:编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件或用图形表示出来(建议用图形表示统计结果)。程序的具体要求如下:用命令行运行:IPstatistic time logfile其中,IPstatistics是程序名,time是设定的时间间隔(单位为分钟,比如,2表示2分钟);logfile表示统计结果写入的日志文件名(若用图形表示统计结果则可以不选这个参数)Windows Xp,CodeBlocks 10.05 进度安排:第16周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期三,四,五:软件编码实现第17周周一:软件总体调试周二:软件运行分析周三:答辩,验收程序周四:答辩,验收程序周五:书写课程设计报告,提交指导教师(签字):年 月 日学院院长(签字):年 月 日课程设计任务书目 录1 题目内容及设计要求12 总体设计12.1 总体功能框图12.2 类的设计说明12.3 主要算法流程图33程序清单及注释34运行结果与分析105总结126参考文献121 题目内容及设计要求题目8监控IP包流量编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件或用图形表示出来(建议用图形表示统计结果)。程序的具体要求如下:用命令行运行:IPstatistic time logfile其中,IPstatistics是程序名,time是设定的时间间隔(单位为分钟,比如,2表示2分钟);logfile表示统计结果写入的日志文件名(若用图形表示统计结果则可以不选这个参数)。2 总体设计2.1 总体功能1.课程设计中的重点及难点1)程序中会用到Winpcap,Wiinpcap的介绍请参阅附录B.2 ) 列出网卡列表,让用户进行选择可用的网卡。3)注意过滤器的使用,只需捕获IP包,别的包都过滤掉。 2.参考算法1)取得当前网络设备列表(在标准输出上显示,以让用户进行选择)。2)将用户选择的Ethernet卡以混杂模式打开,以接收到所有的数据包。3)设置过滤器,此处的过滤器“IP”。3 ) 捕获IP包并按包的源地址进行统计(用链表结构进行实现)。2.2 类的设计说明 IP包头部结构:Struct ip_header unsigned char ver_ihl; /版本号(4位)+头部长度(4位) unsigned char tos; /服务类型unsigned short tlen; /总长度unsigned short flag_fo; /标志+片偏移unsigned char ttl; /生存时间unsigned char proto; /协议unsigned short crc; /校验和DOWORD saddr; /源地址DOWORD daddr; /目的地址unsigned char int op_pad; /选项+填充;1) 选择网卡。/选择一个Enthernet卡 for(d=alldevs;d;d=d-name) If(d-addresses!=NULL) i+; if(head=NULL) head=d; 2) 给出网卡列表,让用户选择。for(d=alldevs;d;d=d-next) /列出网卡列表,让用户进行选择 cout+j”:”name; if(d-description) cout” ”descriptionname,1000,1,1000,erbuff)=NULL) cout”n Unable to open the adapter.”endl; pcap_freealldevs(alldevs); return;4) 编译过滤器并设置过滤器。if(pcap_compile(fp,&fcode,packet_filter,1,netmask)0) cout”n Unable to compile the packet filter.Check the syntax.n”=0) time (&end); /获取系统时间 if(end-beg=min*60) /计算统计时间 if(res=0) continue; /超时ip_header *ih; /找到IP头的位置 ih=(ip_header *) (pkt_data+14); /14为Enthernet头的长度 link.addNode(ih-saddr); /将源IP地址加入链表6)输出链表的内容。 2.3 主要算法流程图主要算法流程图如图2-4所示。获取网卡列表选择Ethernet网卡打开网卡(混杂模式)编译设置过滤器 捕获IP包将IP包源地址加入链表超时否?输出链表内容结束开始YN 图2-4程序流程图3 程序清单及注释#ifndef IPNODELIST_H_INCLUDED#define IPNODELIST_H_INCLUDED#endif / IPNODELIST_H_INCLUDED/(1)程序中使用的链表(以头文件IPNodeList.h的形式给出):/IP结点类,存放IP包的源IP地址和其发送的数据包个数class IPNodeprivate:long m_lIPAddress; /IP地址long m_lCount; /发送数据包数public:IPNode *pNext; /指向下一个IP结点IPNode(long sourceIP) /构造函数 m_lIPAddress=sourceIP; m_lCount=1; /初始化数据包个数为1 /数据包个数加1void addCount()m_lCount+; /返回数据包个数 long getCount() return m_lCount; /返回IP地址long getIPAddress() return m_lIPAddress; ;/结点链表class NodeList IPNode *pHead; /链表头 IPNode *pTail; /链表尾public:NodeList() pHead=pTail=NULL; NodeList()if(pHead!=NULL) IPNode *pTemp=pHead; pHead=pHead-pNext; delete pTemp; /IP结点加入链表void addNode(long sourceIP) if(pHead=NULL) /当链表为空时 pTail=new IPNode(sourceIP); pHead=pTail; pTail-pNext=NULL; else /不为空时 for(IPNode *pTemp=pHead;pTemp;pTemp=pTemp-pNext) /如果链表中存在此IP,发送数据包个数加1 if(pTemp-getIPAddress()=sourceIP) pTemp-addCount(); break; /如果链表中没有此IP,则加入链表 if(pTemp=NULL) pTail-pNext=new IPNode(sourceIP); pTail=pTail-pNext; pTail-pNext=NULL; /输出IP结点,即IP地址和其发送的IP包个数ostream& print(ostream & out) for(IPNode* pTemp=pHead;pTemp;pTemp=pTemp-pNext) long lTemp=pTemp-getIPAddress(); outinet_ntoa(*(in_addr*)&(lTemp)t; outgetCount()endl; return out; ;/主程序如下:#include#include#include#include#include#include#include pcap.h#include IPNodeList.h#pragma comment(lib,Wpcap.lib)#pragma comment(lib,Ws2_32.lib)/IP包的头部结构struct ip_header unsigned char ver_ihl; /版本号(4位)+头部长度(4位) unsigned char tos; /服务类型 unsigned short tlen; /总长度 unsigned short identification; /标识 unsigned short flags_fo; /标志+片偏移 unsigned char ttl; /生存时间 unsigned char proto; /协议 unsigned short crc; /校验和 DWORD saddr; /源地址 DWORD daddr; /目的地址 unsigned int op_pad; /选项+填充;void main(int argc,char *argv)if(argc!=3) /判断参数是否正确 coutUsage:IPStatistic time logfileendl; coutPress any key to continue.endl; _getch(); return; double min=atof(argv1); pcap_if_t *alldevs; /网络设备结构 pcap_if_t *d,*head=NULL; pcap_t *fp; /网卡描述 char errbufPCAP_ERRBUF_SIZE; /错误信息 unsigned int netmask; /子网掩码 char packet_filter=ip; /过滤,选择IP协议 struct bpf_program fcode; struct pcap_pkthdr *header; const unsigned char *pkt_data; /获取网络设备列表 if(pcap_findalldevs(&alldevs,errbuf)=-1) coutError in pcap_findalldevs:errbuf; return; int i=0; /网卡数 if(i=0) /无设备 cout=1) int j=0; for(d=alldevs;d;d=d-next) /列出网卡列表,让用户进行选择 cout+j:name; if(d-description) cout descriptionendl; coutnEnter the interface number (1-jk; if(kj) coutout of rangeendl; return; for(d=alldevs,i=1;inext,i+); /找到选择的网卡 head=d; /以混杂模式方式打开网卡if(fp=pcap_open_live(head-name,1000,1,1000,errbuf)=NULL) coutnUnable to open the adapter.addresses != NULL)netmask=(struct sockaddr_in*) (head-addresses-netmask)-sin_addr.S_un.S_addr;else /没有地址则假设为C类地址 netmask=0xffffff; /编译过滤器if(pcap_compile(fp, &fcode,packet_filter,1,netmask)0) coutnUnable to compile the packet filter.Cheak the syntex.n; pcap_freealldevs(alldevs); return; /设置过滤器if(pcap_setfilter(fp,&fcode)0) coutnError setting the filter.n; pcap_freealldevs(alldevs); return; /显示提示信息及每项含义coutttlistening on description.endlendl;ofstream fout(argv2,ios:app); /日志记录文件fouttIP Statistic:(min minutes)endl;time_t tmp=time(NULL);foutctime(&tmp);fouttIP Statistic:(min minutes)endl;foutIP Statistic:(min minutes)endl;fout Sour IP tpacket numbers=0) time(&end); /获得系统时间 if(end-beg=min*60) /计算系统时间 break; if(res=0) continue; /超时 ip_header *ih; /找到IP头的位置 ih = (ip_header *) (pkt_data+14); /14为以太头的长度 link.addNode(ih-saddr); /将源IP地址加入链表 coutSour IP tpacket numbersendl; link.print(cout); /输出到屏幕 link.print(fout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 腔镜手术基本操作及相关知识试题与答案
- 江苏省如皋市南片区八校联考2026届英语九年级第一学期期末学业质量监测模拟试题含解析
- 2026届黑龙江省齐齐哈尔市克东县化学九年级第一学期期末监测模拟试题含解析
- 江苏省启东市东安中学2026届化学九上期中综合测试试题含解析
- 2026届内蒙古牙克石市英语九年级第一学期期末调研模拟试题含解析
- 信托贷款财产抵押契约协议书5篇
- 跨区域中央空调安装与远程监控服务合同
- 中央空调系统安装与能耗监测合同
- 离婚后房屋产权变更及财产分割执行协议
- 婚后共同房产分割协议书:女方权益保障范本
- 统编2024版七年级语文上册全册知识点梳理
- 给我一颗原始星球 (小镇舍长)
- 体表肿物护理常规
- 3.1做有梦想的少年 课件-2024-2025学年统编版道德与法治七年级上册
- (新版)资金分析师职业鉴定考试复习题库资料-下(多选、判断题)
- 读书是教师最好的修行读书分享
- 三轴搅拌桩安全技术交底(好)
- 水平三田径大单元教案
- 剑桥国际英语教程词汇指南初级版
- 产后抑郁的预防及护理
- 教师网络安全培训内容
评论
0/150
提交评论