基于winpcap的嗅探器设计与实现_毕业设计(编辑修改稿)内容摘要:
le, amp。 header, amp。 pkt_data)) = 0) { if(res == 0) //超时 continue。 struct datapkt *data = (struct datapkt*)malloc(sizeof(struct datapkt))。 memset(data,0,sizeof(struct datapkt))。 if(NULL == data) { MessageBox(NULL,_T(空间已满,无法接收新的数据包),_T(Error),MB_OK)。 return 1。 } //分析出错或所接收数据包不在处理范围内 if(analyze_frame(pkt_data,data,amp。 (pthisnpacket))0) continue。 //将数据包保存到打开的文件中 if(pthisdumpfile!=NULL) { pcap_dump((unsigned char*)pthisdumpfile,header,pkt_data)。 } //更新各类数据包计数 pthissniffer_updateNPacket()。 //将本地化后的数据装入一个链表中,以便后来使用 ppkt_data = (u_char*)malloc(headerlen)。 memcpy(ppkt_data,pkt_data,headerlen)。 pthis(data)。 pthis(ppkt_data)。 /*预处理,获得时间、长度 */ datalen = headerlen。 //链路中收到的数据长度 local_tv_sec = header。 ltime = localtime(amp。 local_tv_sec)。 datatime[0] = ltimetm_year+1900。 datatime[1] = ltimetm_mon+1。 datatime[2] = ltimetm_mday。 datatime[3] = ltimetm_hour。 datatime[4] = ltimetm_min。 datatime[5] = ltimetm_sec。 /*为新接收到的数据包在 listControl中新建一个 item*/ (_T(%d),pthisnpkt)。 nItem = pthis(pthisnpkt,buf)。 /*显示时间戳 */ (_T(%d/%d/%d %d:%d:%d),datatime[0], datatime[1],datatime[2],datatime[3],datatime[4],datatime[5])。 pthis(nItem,1,timestr)。 /*显示长度 */ ()。 (_T(%d),datalen)。 pthis(nItem,2,buf)。 /*显示源 MAC*/ ()。 (_T(%02X%02X%02X%02X%02X%02X),dataethhsrc[0],dataethhsrc[1], dataethhsrc[2],dataethhsrc[3],dataethhsrc[4],dataethhsrc[5])。 pthis(nItem,3,buf)。 /*显示目的 MAC*/ ()。 (_T(%02X%02X%02X%02X%02X%02X),dataethhdest[0],dataethhdest[1], dataethhdest[2],dataethhdest[3],dataethhdest[4],dataethhdest[5])。 pthis(nItem,4,buf)。 /*获得协议 */ pthis(nItem,5,CString(datapktType))。 /*获得源 IP*/ ()。 if(0x0806== dataethhtype) { (_T(%d.%d.%d.%d),dataarphar_srcip[0], dataarphar_srcip[1],dataarphar_srcip[2],dataarphar_srcip[3])。 }else if(0x0800 == dataethhtype) { struct in_addr in。 = dataiphsaddr。 buf = CString(i_ntoa(in))。 }else if(0x86dd ==dataethhtype ){ int n。 for(n=0。 n8。 n++) { if(n=6) (_T(%02x:),dataiph6saddr[n])。 else (_T(%02x),dataiph6saddr[n])。 } } pthis(nItem,6,buf)。 /*获得目的 IP*/ ()。 if(0x0806 == dataethhtype) { (_T(%d.%d.%d.%d),dataarphar_destip[0], dataarphar_destip[1],dataarphar_destip[2],dataarphar_destip[3])。 }else if(0x0800 == dataethhtype){ struct in_addr in。 = dataiphdaddr。 buf = CString(i_ntoa(in))。 }else if(0x86dd ==dataethhtype ){ int n。 for(n=0。 n8。 n++) { if(n=6) (_T(%02x:),dataiph6daddr[n])。 else (_T(%02x),dataiph6daddr[n])。 } } pthis(nItem,7,buf)。 /*对包计数 */ pthisnpkt++。 } return 1。 } 数据解析函数 /*分析链路层 */ int analyze_frame(const u_char * pkt,struct datapkt * data,struct pktcount *npacket) { int i。 struct ethhdr *ethh = (struct ethhdr*)pkt。 dataethh = (struct ethhdr*)malloc(sizeof(struct ethhdr))。 if(NULL == dataethh) return 1。 for(i=0。 i6。 i++) { dataethhdest[i] = ethhdest[i]。 dataethhsrc[i] = ethhsrc[i]。 } npacketn_sum++。 dataethhtype = ntohs(ethhtype)。 //处理 ARP还是 IP包。 switch(datae。基于winpcap的嗅探器设计与实现_毕业设计(编辑修改稿)
相关推荐
存信息的结构化载体为了得到 XML文件的有效性,需要确定文件中信息必须遵守哪些结构。 这是通过 Schema来实现的, Schema 是一种描述 XML 文件中信息结构的模型。 在 XML 中, Schema 被用来建立某类数据的模型。 一旦数据模型适合特定的数据类,我们就可以创建遵守该模型的结构化 XML 文件。 DTD 是建立 XML 文件的 Schema 的一种方法。 XML 数据模型中
企业毕竟少数,这无形中人为的提高的模型的预测精度。 同时不同行业的上市公司所表现的系统风险是不一样,需要对模型里的财务危机企业和非财务危机企业进行匹配。 对模型中入选的财 务指标没有考虑到我国特殊的国情。 在我国证券市场有 3/2的股份作为国家股和法人股,不能在二级市场流通。 我国上市公司公司治理不完善,内部人控制现象严重,以及中介机构的道德诚信责任不足,造成财务报表扭曲现象普遍存在
LG7290 能够直接驱动 8 位共阴式数码管(或 64 只独立的 LED),同时还可以扫描管理多达 64 只按键。 其中有 8 只按键还可以作为功能键使用,就像电脑键盘上的 Ctrl、Shift、 Alt 键一样。 另外 ZLG7290B 内部还设置有连击计数器,能够使某键按下后不松手而连续有效。 采用 I2C 总线方式,与微控制器的接口仅需两根信号线。 可控扫描位数,可控任一数码管闪烁。
会分配给一个客户经理。 客户经理对分配给自己的销售机会制定客户开发计划,计划好分几步开发,以及每个步骤的时间和具体事项。 制定完客户开发计划后,客户经理按实际执行请跨功能填写计划中每个步骤的执行效果。 常州大学本科毕业设计(论文) 第 6 页 共 47 页 在开发计划结束的时候,根据开发的 结果不同,设置该销售机会为“开发失败”或“开发成功”。 如果开发客户成功,系统自动创建新的客户记录。
= true。 } //文件打开函数 private void open() { if(() ==) { if( != null) { ()。 = null。 } String filename =。 try { curFile = filename。 curBmp = new Bitmap(curFile)。 = curBmp。 displayImage()。 dirPath = (0
开发板 系统硬件采用的 s3c2440 mini2440 开发板。 开发板 体积小, 便于 携带;接口多 ,易 扩展;功耗小 ,便于长时间 进行 导航 定位。 图 1 主控芯片电路 . 芯片介绍 S3C2440A 采用了 ARM920t 的内核, 的 COMS 标准宏单元和存储单元。 其低功耗,简单,且全静态设计特别适合对于 低 成本和功率敏感型的应西昌学院 毕业论文(设计 ) 7 用。