网络嗅探器的制作学习教案_第1页
网络嗅探器的制作学习教案_第2页
网络嗅探器的制作学习教案_第3页
网络嗅探器的制作学习教案_第4页
网络嗅探器的制作学习教案_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1网络网络(wnglu)嗅探器的制作嗅探器的制作第一页,共67页。第1页/共67页第二页,共67页。第2页/共67页第三页,共67页。第3页/共67页第四页,共67页。第4页/共67页第五页,共67页。第5页/共67页第六页,共67页。第6页/共67页第七页,共67页。第7页/共67页第八页,共67页。第8页/共67页第九页,共67页。第9页/共67页第十页,共67页。第10页/共67页第十一页,共67页。第11页/共67页第十二页,共67页。第12页/共67页第十三页,共67页。控件表第13页/共67页第十四页,共67页。静态(jngti)文本编辑框按钮列表(li bio)控件第14页

2、/共67页第十五页,共67页。第15页/共67页第十六页,共67页。第16页/共67页第十七页,共67页。第17页/共67页第十八页,共67页。第18页/共67页第十九页,共67页。第19页/共67页第二十页,共67页。第20页/共67页第二十一页,共67页。创建一个创建一个(y )编编辑框,并辑框,并右键点击右键点击直滚动直滚动”打上勾打上勾第21页/共67页第二十二页,共67页。第22页/共67页第二十三页,共67页。第23页/共67页第二十四页,共67页。点击查看点击查看建立建立(jinl)类向类向第24页/共67页第二十五页,共67页。第25页/共67页第二十六页,共67页。第26页/

3、共67页第二十七页,共67页。四、嗅探器功能设计第27页/共67页第二十八页,共67页。第28页/共67页第二十九页,共67页。/设置列表(li bio)m_device格式DWORD dwStyle1 = m_device.GetExtendedStyle(); dwStyle1 |= LVS_EX_FULLROWSELECT; dwStyle1 |= LVS_EX_GRIDLINES; m_device.SetExtendedStyle(dwStyle1);m_device.InsertColumn(0,NO,LVCFMT_LEFT,50); m_device.InsertColumn(1

4、,网络设备,LVCFMT_LEFT,380);m_device.InsertColumn(2,网络适配器名称,LVCFMT_LEFT,600);/设置列表(li bio)m_pack格式DWORD dwStyle = m_pack.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; dwStyle |= LVS_EX_GRIDLINES; m_pack.SetExtendedStyle(dwStyle);/添加m_pack的列标题 m_pack.InsertColumn(0,序号,LVCFMT_LEFT,60); m_pack.Insert

5、Column(1,IP协议版本,LVCFMT_LEFT,120);m_pack.InsertColumn(2,协议,LVCFMT_LEFT,80);m_pack.InsertColumn(3,源IP地址,LVCFMT_LEFT,220); m_pack.InsertColumn(4,目的IP地址,LVCFMT_LEFT,220);m_pack.InsertColumn(5,目的MAC地址,LVCFMT_LEFT,240);m_pack.InsertColumn(6,源MAC地址,LVCFMT_LEFT,240);m_pack.InsertColumn(7,数据包发送时间,LVCFMT_LEFT

6、,80);m_pack.InsertColumn(8,数据包大小,LVCFMT_LEFT,80);第29页/共67页第三十页,共67页。第30页/共67页第三十一页,共67页。/禁用(jn yn)相关按钮GetDlgItem(IDC_BUTTON_START)-EnableWindow(FALSE);第31页/共67页第三十二页,共67页。第32页/共67页第三十三页,共67页。第33页/共67页第三十四页,共67页。第34页/共67页第三十五页,共67页。第35页/共67页第三十六页,共67页。第36页/共67页第三十七页,共67页。/与抓包过程有关(yugun)的变量声明pcap_if_t

7、 *alldevs;/网络设备列表pcap_if_t *d;int inum;int i;pcap_t *adhandle;char errbufPCAP_ERRBUF_SIZE;CString m_str;CString m_str2;第37页/共67页第三十八页,共67页。HANDLE hThread;DWORD ThreadID;第38页/共67页第三十九页,共67页。第39页/共67页第四十页,共67页。/初始化相关(xinggun)变量i=0;第40页/共67页第四十一页,共67页。if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &

8、amp;alldevs, errbuf) = -1) exit(1); /在列表框m_device中打印(d yn)网络适配器列表 for(d=alldevs; d; d=d-next) m_str.Format(%d,i+1);m_device.InsertItem(i+,m_str);m_str=d-name;m_device.SetItemText(i-1,1,m_str); if (d-description)m_str=d-description;m_device.SetItemText(i-1,2,m_str); elsem_str=No description available

9、;m_device.SetItemText(i-1,2,m_str); 第41页/共67页第四十二页,共67页。第42页/共67页第四十三页,共67页。/调整(tiozhng)控件可用性GetDlgItem(IDC_BUTTON_START)-EnableWindow(TRUE);第43页/共67页第四十四页,共67页。第44页/共67页第四十五页,共67页。第45页/共67页第四十六页,共67页。第46页/共67页第四十七页,共67页。/*宏*/信息框每行输出16个字节#define LINE_LEN 16/最多能存储5000个数据包#define MAXSIZE 5000/*全局变量*/C

10、MySnifferDlg *dlg;/用于访问CMySnifferDlg中的成员的指针int number;/捕获(bhu)到的数据包的序号CString pack_strMAXSIZE;/可最多存储MAXSIZE个数据包的信息volatile BOOL m_bRun;/* packet handler 函数声明 */void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);/回调函数,每次捕获(bhu)到数据包就调用该函数处理数据包/*线程函数*/void Thre

11、adFunc()pcap_loop(dlg-adhandle,0,packet_handler,NULL);/抓包第47页/共67页第四十八页,共67页。number=0;dlg = this;第48页/共67页第四十九页,共67页。void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)第49页/共67页第五十页,共67页。CString message_start;GetDlgItemText(IDC_EDIT_SELECT_DEVICE,m_str);inum=

12、atoi(char*)(LPSTR)(LPCTSTR)m_str);if(inum i)/ 选择的网络适配器不合法,报错并释放设备列表 message_start=选择的网络适配器不合法,请重新输入!; pcap_freealldevs(alldevs); MessageBox(message_start,错误); return; for(d=alldevs, i=0; inext, i+);/输入合法,跳转到选中的网络适配器if ( (adhandle= pcap_open(d-name, / 设备名 65535, / 65535保证能捕获到不同数据链路层上的每个数据包的全部内容 PCAP_

13、OPENFLAG_PROMISCUOUS, / 混杂模式 1000, / 读取超时时间 NULL, / 远程机器验证 errbuf / 错误缓冲(hunchng)池 ) ) = NULL) pcap_freealldevs(alldevs);/打开网络适配器失败,释放设备列表 return;pcap_freealldevs(alldevs);/ 打开选中的网络适配器后,释放设备列表hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,NULL,0,&ThreadID);/ 开始捕获线程第50页/共67页第五十一页,

14、共67页。int counter,counter2;struct tm *ltime; char timestr16; time_t local_tv_sec;/打印包的序号number+;/每次捕获到数据包就将包的序号+1dlg-m_str.Format(%d,number);dlg-m_pack.InsertItem(number-1,dlg-m_str);/打印包的时间/* 将时间戳转换成可识别(shbi)的格式 */ local_tv_sec = header-ts.tv_sec; ltime=localtime(&local_tv_sec);strftime( timestr

15、, sizeof timestr, %H:%M:%S, ltime);dlg-m_str=timestr;dlg-m_pack.SetItemText(number-1,7,dlg-m_str);/打印包的长度dlg-m_str.Format(%d,header-len);dlg-m_pack.SetItemText(number-1,8,dlg-m_str);第51页/共67页第五十二页,共67页。第52页/共67页第五十三页,共67页。ip_header *ih;ethernet_header *eh;ih=(ip_header *)(pkt_data +14);eh=(ethernet_

16、header *)(pkt_data);/首先(shuxin)打印数据包的源MAC地址和目的MAC地址/打印目的MAC地址dlg-m_str2.Format(%.2x,eh-dhost0);dlg-m_str+=dlg-m_str2;for(counter=1;counterm_str2.Format(-%.2x,eh-dhostcounter);dlg-m_str+=dlg-m_str2;dlg-m_pack.SetItemText(number-1,5,dlg-m_str);/打印源MAC地址dlg-m_str2.Format(%.2x,eh-shost0);dlg-m_str+=dlg-

17、m_str2;for(counter=1;counterm_str2.Format(-%.2x,eh-shostcounter);dlg-m_str+=dlg-m_str2;dlg-m_pack.SetItemText(number-1,6,dlg-m_str);第53页/共67页第五十四页,共67页。第54页/共67页第五十五页,共67页。if(eh-type=0 x0608)dlg-m_pack.SetItemText(number-1,1,IPv4);else if(eh-type=0 x0008)dlg-m_pack.SetItemText(number-1,1,IPv4);else

18、if(eh-type=0 xdd86)dlg-m_pack.SetItemText(number-1,1,IPv6);第55页/共67页第五十六页,共67页。第56页/共67页第五十七页,共67页。dlg-m_pack.SetItemText(number-1,2,ARP);ARP_header *ah;ah=(ARP_header *)(pkt_data +14);/打印(d yn)数据包的IP地址/打印(d yn)数据包的源IP地址dlg-m_str=;for(counter=0;counterm_str2.Format(%d,ah-saddrcounter);dlg-m_str+=dlg

19、-m_str2;dlg-m_str+=.;dlg-m_str2.Format(%d,ah-saddr3);dlg-m_str+=dlg-m_str2;dlg-m_pack.SetItemText(number-1,3,dlg-m_str);/打印(d yn)数据包的目的IP地址dlg-m_str=;for(counter=0;counterm_str2.Format(%d,ah-daddrcounter);dlg-m_str+=dlg-m_str2;dlg-m_str+=.;dlg-m_str2.Format(%d,ah-daddr3);dlg-m_str+=dlg-m_str2;dlg-m_

20、pack.SetItemText(number-1,4,dlg-m_str);第57页/共67页第五十八页,共67页。第58页/共67页第五十九页,共67页。/根据ih-proto判断所使用的协议(xiy)switch(ih-proto)case 1:dlg-m_str=ICMP;break;/ih-proto为1时,所使用的协议(xiy)为ICMPcase 2:dlg-m_str=IGMP;break;/ih-proto为2时,所使用的协议(xiy)为IGMPcase 6:dlg-m_str=TCP;break;/ih-proto为6时,所使用的协议(xiy)为TCPcase 17:dlg-

21、m_str=UDP;break;/ih-proto为17时,所使用的协议(xiy)为UDPdefault:dlg-m_str=;/如果不为1,6,17中的一个,则为空dlg-m_pack.SetItemText(number-1,2,dlg-m_str);else if(eh-type=0 xdd86)dlg-m_pack.SetItemText(number-1,1,IPv6);/打印数据包的IP地址/打印数据包的源IP地址dlg-m_str=;for(counter=0;counterm_str2.Format(%d,ih-saddrcounter);dlg-m_str+=dlg-m_st

22、r2;dlg-m_str+=.;dlg-m_str2.Format(%d,ih-saddr3);dlg-m_str+=dlg-m_str2;dlg-m_pack.SetItemText(number-1,3,dlg-m_str);/打印数据包的目的IP地址dlg-m_str=;for(counter=0;counterm_str2.Format(%d,ih-daddrcounter);dlg-m_str+=dlg-m_str2;dlg-m_str+=.;dlg-m_str2.Format(%d,ih-daddr3);dlg-m_str+=dlg-m_str2;dlg-m_pack.SetIte

23、mText(number-1,4,dlg-m_str);第59页/共67页第六十页,共67页。第60页/共67页第六十一页,共67页。/存储(cn ch)数据包的相关数据counter=0,counter2=0;dlg-m_str.Format(%08x ,counter+16);for (counter=1;(countercaplen + 1 ); counter+)dlg-m_str2.Format(%.2x ,pkt_datacounter-1);dlg-m_str+=dlg-m_str2;if ( (counter%LINE_LEN) = 0)dlg-m_str+= ;for(cou

24、nter2=0;counter2=32)&(pkt_datacounter+counter2-LINE_LEN-1m_str+=pkt_datacounter+counter2-LINE_LEN-1;else dlg-m_str+=.;dlg-m_str+=rn;dlg-m_str2.Format(%08x ,counter+16);dlg-m_str+=dlg-m_str2;pack_strnumber=dlg-m_str;第61页/共67页第六十二页,共67页。POSITION Pos = m_pack.GetFirstSelectedItemPosition();int num=

25、(int)Pos;GetDlgItem(IDC_EDIT_DATA_INFORMATION)-SetWindowText(pack_strnum);第62页/共67页第六十三页,共67页。第63页/共67页第六十四页,共67页。第64页/共67页第六十五页,共67页。ihv6=(ipv6_header *)(pkt_data +14);/打印(d yn)数据包的IP地址/打印(d yn)数据包的源IP地址dlg-m_str=;for(counter=0;counterm_str2.Format(%.2x,ihv6-saddr2*counter);dlg-m_str+=dlg-m_str2;dlg-m_str2.Format(%.2x,ihv6-saddr2*counter+1);dlg-m_str+=dlg-m_str2;dlg-m_str+=:;dlg-m_str2.Format(%.2x,ihv6-saddr14);dlg-m_str+=dlg-m

温馨提示

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

评论

0/150

提交评论