已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术学院课程设计成绩单课程名称:网络编程与协议分析 指导教师: 姓名性别男学号班级综合成绩成绩等级程序运行情况(占总成绩20%)能正确运行 基本能正确运行 能运行但结果不完善(20分) (15分) (10分)程序功能的完善程度(占总成绩10%)完善 基本完善 不完善(10分) (8分) (5分)程序结构的合理性(占总成绩10%)合理 基本合理 不太合理(10分) (8分) (5分)对问题的答辩情况(占总成绩40%)概念正确有创新 能正确回答所有问题 基本能正确回答(40分) (35分) (30分)部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力(占总成绩10%)工作态度认真能独立完成任务 工作态度认真但独立性较差(10分) (8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性(占总成绩10%)符合规范 基本符合规范 规范性较差(10分) (8分) (5分)优秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 武汉科技大学计算机科学与技术学院制表 计算机科学与技术学院 课 程 设 计 报 告课程名称:网络编程与协议分析专 业: 班 级: 学 号: 姓 名: 指导老师: 网络编程与协议分析课程设计报告一、课设题目:网络数据包抓取与分析软件二、课设要求:1) 能抓取本地主机所在局域网子网内的所有数据包2) 分析并显示所抓取数据包的IP头部各字段的信息3) 分析并显示所抓取数据包的封装在IP数据包内的协议头部字段信息(TCP、UDP、ICMP等)4) 生成日志信息,以文本文档形式保存5) 分析并显示所抓取数据包应用层协议头部字段信息(HTTP、FTP、DNS、Telnet、SMTP、POP等各种应用层协议中至少取三种)三、用到的基本概念及原理(3)Winpcap的组成和结构(4)Winpcap基本原理(5)NPF在windows系统中的位置(6)系统构架四、部分代码1)初始化套接字BOOL CTestDlg:SockInit()WSADATA wsa;if(WSAStartup(MAKEWORD(2,2),&wsa)!=0)AfxMessageBox(WSAStartup fail!);m_sock=socket(AF_INET,SOCK_RAW,0);if(m_sock=INVALID_SOCKET)AfxMessageBox(socket fail!);SOCKADDR_IN addr;addr.sin_family=AF_INET;addr.sin_port=htons(5000);struct hostent FAR * pHostent;char FAR name25;gethostname(name, 25);pHostent = gethostbyname(name);memcpy(&addr.sin_addr.S_un.S_addr,pHostent-h_addr_list0,pHostent-h_len);if(bind(m_sock,(SOCKADDR *)&addr,sizeof(addr)!=0)AfxMessageBox(bind fail!);DWORD dwBytesRet;unsigned int optval = 1;int pCount=0;if(INVALID_SOCKET=(WSAIoctl(m_sock,SIO_RCVALL,&optval,sizeof(optval), NULL, 0, &dwBytesRet, NULL, NULL)AfxMessageBox(WSAIoctl Fail!);return false;return true;2)初始化表格BOOL CTestDlg:ListInit()DWORD dwStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE);SetWindowLong(m_List.m_hWnd,GWL_STYLE,dwStyle|LVS_REPO);DWORD dwStyles = m_List.GetExStyle();dwStyles &= LVS_EX_CHECKBOXES;m_List.SetExtendedStyle(dwStyles|LVS_EX_FULLROWSELECT|LVXGRIDLINES);m_List.InsertColumn(1,版本,LVCFMT_CENTER,40,0);m_List.InsertColumn(2,头部长度,LVCFMT_CENTER,60,1);m_List.InsertColumn(3,服务类型,LVCFMT_CENTER,60,2);m_List.InsertColumn(4,总长度,LVCFMT_CENTER,50,3);m_List.InsertColumn(5,标识符,LVCFMT_CENTER,50,4);m_List.InsertColumn(6,标志位,LVCFMT_CENTER,50,5);m_List.InsertColumn(7,片偏移,LVCFMT_CENTER,50,6);m_List.InsertColumn(8,生存周期,LVCFMT_CENTER,60,7);m_List.InsertColumn(9,协议,LVCFMT_CENTER,40,8);m_List.InsertColumn(10,首部校验和,LVCFMT_CENTER,80,9);m_List.InsertColumn(11,源地址,LVCFMT_CENTER,100,10);m_List.InsertColumn(12,目的IP地址,LVCFMT_CENTER,100,11);return true;3)ip,tcp,udp,icmp头部定义struct ipheadunsigned char ip_EdiAndLen;/版本&首部长度unsigned char ip_Serve;/服务类型unsigned short int ip_Len;/总长度unsigned short int ip_Sign;/标识unsigned short int ip_MarkAndMove;/标识&片偏移unsigned char ip_Ttl;/生存时间unsigned char ip_Protocol;/上层协议unsigned short int ip_Sum;/首部校验和unsigned int ip_SoIp;/源ipunsigned int ip_DeIp;/目的ip;struct tcpheadunsigned short tcp_SoPort; /16位的源端口unsigned short tcp_DePort; /16位的目的端口unsigned int tcp_Seq; /32位的序列号unsigned int tcp_Ack; /32位的确认号unsigned char tcp_LenAndRes; /4位的首部长度和4位的保留字unsigned char tcp_Flag; /2位的保留字和6位的标志位unsigned short tcp_Win; /16位的窗口大小 unsigned short tcp_Wum; /16位校验和unsigned short tcp_Mov; /16位的紧急数据偏移量;struct udpheadunsigned short udp_SoPort;/源端口unsigned short udp_DePort;/目的端口unsigned short udp_Len;/总长度unsigned short udp_Sum;/校验和;struct icmpheadunsigned char icmp_Type; /类型unsigned char icmp_Code; /代码unsigned short icmp_Sum; /16位检验和;4)“开始”按钮事件void CTestDlg:OnStart() / TODO: Add your control notification handler code hereDWORD code;if (!GetExitCodeThread(m_thr,&code) | (code != STILL_ACTIVE)alldata * recvdata=new alldata;recvdata-lis=&m_List;recvdata-sock=m_sock;m_thr=CreateThread(NULL,0,RecvProc,(LPVOID)recvdata,0,NULL);CloseHandle(m_thr);elsem_List.DeleteAllItems();ResumeThread(m_thr);GetDlgItem(IDC_STOP)-EnableWindow(TRUE);GetDlgItem(IDC_START)-EnableWindow(FALSE);GetDlgItem(IDC_STOP)-SetFocus();5)数据包抓取与初步处理DWORD WINAPI CTestDlg:RecvProc(LPVOID lpParameter)SOCKET sock=(alldata*)lpParameter)-sock;CListCtrl * lis=(CListCtrl *)(alldata*)lpParameter)-lis);struct iphead *ih;SOCKADDR_IN tem;char RecvBuf65535 = 0;char soip16;char deip16;char buf100;int i=0;while(1)if(int a=recv(sock,ddat+count.buff,sizeof(ddatcount.buff),0)ip_SoIp;strncpy(soip,inet_ntoa(tem.sin_addr),16);tem.sin_addr.s_addr=ih-ip_DeIp;strncpy(deip,inet_ntoa(tem.sin_addr),16);lis-InsertItem(i, fdgfg); sprintf(buf,%d,ih-ip_EdiAndLen4);lis-SetItemText(i,0,buf);sprintf(buf,%d,ih-ip_EdiAndLen&0xf);lis-SetItemText(i,1,buf);sprintf(buf,%d,ih-ip_Serve);lis-SetItemText(i,2,buf);sprintf(buf,%d,ih-ip_Len);lis-SetItemText(i,3,buf);sprintf(buf,%d,ih-ip_Sign);lis-SetItemText(i,4,buf);sprintf(buf,%d,ih-ip_MarkAndMove 13);lis-SetItemText(i,5,buf);sprintf(buf,%d,ih-ip_MarkAndMove&0x1fff);lis-SetItemText(i,6,buf);sprintf(buf,%d,ih-ip_Ttl);lis-SetItemText(i,7,buf);switch(int)ih-ip_Protocol)case 1:sprintf(buf,%s,ICMP);break;case 2:sprintf(buf,%s,IGMP);break;case 6:sprintf(buf,%s,TCP);break;case 8:sprintf(buf,%s,EGP);break;case 9:sprintf(buf,%s,IGP);break;case 17:sprintf(buf,%s,UDP);break;case 41:sprintf(buf,%s,IPv6);break;case 89:sprintf(buf,%s,OSPF);break;default:sprintf(buf,%s,Error);lis-SetItemText(i,8,buf);sprintf(buf,%d,ih-ip_Sum);lis-SetItemText(i,9,buf);sprintf(buf,%s,soip);lis-SetItemText(i,10,buf);sprintf(buf,%s,deip);lis-SetItemText(i,11,buf);i+;Sleep(100);return true;6)表格单击事件void CTestDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereNM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;CString buf;char tem100;int i;if(pNMListView-iItem != -1)i=pNMListView-iItem;CString strtemp;CNewDlg newdlg;iphead *iph=(iphead *)(ddati.buff);tcphead th=*(tcphead *)(ddati.buff+(iph-ip_EdiAndLen&0xf)*4);udphead uh=*(udphead *)(ddati.buff+(iph-ip_EdiAndLen&0xf)*4);icmphead ih=*(icmphead *)(ddati.buff+(iph-ip_EdiAndLen&0xf)*4);switch(int)iph-ip_Protocol)case 6:sprintf(tem,源端口:%drn,th.tcp_SoPort);buf+=tem;sprintf(tem,目的端口:%drn,th.tcp_DePort);buf+=tem;sprintf(tem,序列号:%drn,th.tcp_Seq);buf+=tem;sprintf(tem,确认号:%drn,th.tcp_Ack);buf+=tem;sprintf(tem,数据偏移:%drn,th.tcp_LenAndRes4);buf+=tem;sprintf(tem,保留:%drn,th.tcp_LenAndRes&0xf);buf+=tem;sprintf(tem,标志:%drn,th.tcp_Flag&0x3f);buf+=tem;sprintf(tem,窗口:%drn,th.tcp_Win);buf+=tem;sprintf(tem,校验和:%drn,th.tcp_Wum);buf+=tem;sprintf(tem,紧急指针:%drn,th.tcp_Mov);buf+=tem;newdlg.m_data=buf;break;case 17:sprintf(tem,源端口:%drrn,uh.udp_SoPort);buf+=tem;sprintf(tem,目的端口:%drn,uh.udp_DePort);buf+=tem;sprintf(tem,长度:%drn,uh.udp_Len);buf+=tem;sprintf(tem,校验和:%drn,uh.udp_Sum);buf+=tem;newdlg.m_data=buf;break;case 1:sprintf(tem,类型:%drn,ih.icmp_Type);buf+=tem;sprintf(tem,代码:%drn,ih.icmp_Code);buf+=tem;sprintf(tem,校验和:%drn,ih.icmp_Sum);buf+=tem;newdlg.m_data=buf;break;default:AfxMessageBox(No Data!);newdlg.m_data=;newdlg.DoModal();*pResult = 0;7)“停止”按钮事件void CTestDlg:OnStop() / TODO: Add your control notification handler code hereSuspendThread(m_thr);DWORD code;CString strDate;CString strBuf;int index = m_List.GetItemCount();int i,j = 0;GetExitCodeThread(m_thr,&code);if (code != STILL_ACTIVE)AfxMessageBox(程序初始化失败!n请检查配置后重新运行!);elseCTime ttime = CTime:GetCurrentTime(); strDate.Format(%d-%d-%d-,ttime.GetYear(),ttime.GetMonth(),ttime.GeD ay();strDate += ttime.Format(%H-%M-%S);ofstream outfile(history + strDate + .log);out
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园停车安全协议书
- 材地板铺装合同范本
- 广西柳州柳城县事业单位2025招聘拟聘(第三批)易考易错模拟试题(共500题)试卷后附参考答案
- 广州市黄埔区总工会招考工会组织员易考易错模拟试题(共500题)试卷后附参考答案
- 不锈钢材料合同范本
- 广东韶关市2025年下半年市属事业单位招考人员易考易错模拟试题(共500题)试卷后附参考答案
- 医疗战略协议书范本
- 广东广州市文化广电旅游局直属事业单位引进高层次急需专业人才易考易错模拟试题(共500题)试卷后附参考答案
- 危险品承揽协议合同
- 兽药原料转让协议书
- MOOC 数据库原理与应用-北京林业大学 中国大学慕课答案
- 公共数据治理规范-数据归集
- 人教版四年级数学下册第五单元分层作业设计
- 养殖合作协议书 养殖合作协议
- 鞋业公司ISO9001:质量管理标准
- 小儿脑性瘫痪康复治疗课件
- 2023年杭州市建德市公安局集中招聘警务辅助人员考试试卷真题
- 4.2.1指数函数的概念 课件(共21张PPT)
- 酒精所致精神障碍护理
- GB/T 19801-2005无损检测声发射检测声发射传感器的二级校准
- GB/T 13477.3-2017建筑密封材料试验方法第3部分:使用标准器具测定密封材料挤出性的方法
评论
0/150
提交评论