《网络编程与协议分析》课程设计报告(共22页)_第1页
《网络编程与协议分析》课程设计报告(共22页)_第2页
《网络编程与协议分析》课程设计报告(共22页)_第3页
《网络编程与协议分析》课程设计报告(共22页)_第4页
《网络编程与协议分析》课程设计报告(共22页)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上计算机科学与技术学院课程设计成绩单课程名称:网络编程与协议分析 指导教师: 姓名性别男学号班级综合成绩成绩等级程序运行情况(占总成绩20%)能正确运行 基本能正确运行 能运行但结果不完善(20分) (15分) (10分)程序功能的完善程度(占总成绩10%)完善 基本完善 不完善(10分) (8分) (5分)程序结构的合理性(占总成绩10%)合理 基本合理 不太合理(10分) (8分) (5分)对问题的答辩情况(占总成绩40%)概念正确有创新 能正确回答所有问题 基本能正确回答(40分) (35分) (30分)部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力

2、(占总成绩10%)工作态度认真能独立完成任务 工作态度认真但独立性较差(10分) (8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性(占总成绩10%)符合规范 基本符合规范 规范性较差(10分) (8分) (5分)优秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 武汉科技大学计算机科学与技术学院制表 计算机科学与技术学院 课 程 设 计 报 告课程名称:网络编程与协议分析专 业: 班 级: 学 号: 姓 名: 指导老师: 网络编程与协议分析课程设计报告一、课设题目:网络数据包抓取与分析软件二、课设要求:1) 能抓取本地主机所在局域网子网内

3、的所有数据包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(

4、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,

5、 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,

6、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

7、 = 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);

8、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.In

9、sertColumn(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_Edi

10、AndLen;/版本&首部长度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

11、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

12、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: Ad

13、d 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.Delet

14、eAllItems();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 *)(alldat

15、a*)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)<=0)continue;ih=(struct iphead *)(ddatcount.buff);tem.sin_addr.s_addr=ih->ip_SoIp;strncpy(soip,inet_n

16、toa(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_EdiAndLen>>4);lis->SetItemText(i,0,buf);sprintf(buf,"%d",ih->ip_EdiAndLen&0xf);lis->SetItemTex

17、t(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->SetI

18、temText(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",

19、"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&q

20、uot;);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,

21、"%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->iIt

22、em != -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&

23、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&quo

24、t;,th.tcp_LenAndRes>>4);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,"紧急指针:%

25、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=

26、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();*pResul

27、t = 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请检查配置后重新

28、运行!");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");outfile<<setw(6)<<"版本"<&

29、lt;setw(10)<<"头部长度"<<setw(10)<<"服务类型"<<setw(8)<<"总长度"<<setw(8)<<"标识符"<<setw(8)<<"标志位"<<setw(8)<<"片偏移"<<setw(10)<<"生存周期"<<setw(6)<<"协议"<<setw(12)<<"首部校验和"<<setw(20)<<"源地址"<<setw(20)<<"目的IP地址"<&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论