皮皮学,免费搜题
登录
logo - 刷刷题
搜题
【简答题】
以下程序代码是 基于 WinPcap 的 , 实现 对网络中 UDP 数据的捕获与分析 。 #include "stdafx.h" #include "..\..\..\Include\pcap.h" void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data); int _tmain(int argc, _TCHAR* argv[]) { pcap_if_t *alldevs; pcap_if_t *d; int inum; int i=0; pcap_t *adhandle; char errbuf[PCAP_ERRBUF_SIZE]; u_int netmask; char packet_filter[] = "ip and udp"; struct bpf_program fcode; /* 获取设备列表 */ if( ________ 1 __________ (&alldevs, errbuf) == -1) { fprintf(stderr,"pcap_findalldevs 函数调用错误 : %s\n", errbuf); return 1;; } for(d=alldevs; d; d=d->next) { printf("%d. %s", ++i, d->name); if (d->description) printf(" (%s)\n", d->description); else printf(" ( 没有可用的描述符 )\n"); } if(i==0) { printf("\n 无法找到网络接口 ! 请确认 WinPcap 已正确安装 .\n"); return -1; } printf(" 请待捕获数据的输入网卡编号 (1-%d):",i); scanf("%d", &inum); if(inum < 1 || inum > i) { printf("\nAdapter number out of range.\n"); pcap_freealldevs(alldevs); return -1; } for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++); /* 打开网卡 */ adhandle= ________ 2 __________ (d->name, 65536, 1, 1000, errbuf ); if ( adhandle == NULL) { fprintf(stderr,"\n 无法打开网络适配器 . WinPcap 不支持 %s \n", d->name); // 释放设备列表 ________ 3 __________ (alldevs); return -1; } if(pcap_datalink(adhandle) != DLT_EN10MB) { fprintf(stderr,"\n 本在以太网环境下可用 .\n"); pcap_freealldevs(alldevs); return -1; } if(d->addresses != NULL) netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr; else netmask=0xffffff; // 编译过滤器 if ( ________ 4 __________ (adhandle, &fcode, packet_filter, 1, netmask) <0 ) { fprintf(stderr,"\n 无法编译过滤规则,请检查语法的正确性 .\n"); pcap_freealldevs(alldevs); return -1; } // 设置过滤器 if ( ________ 5 __________ (adhandle, &fcode)<0) { fprintf(stderr,"\n 设置过滤器错误 .\n"); pcap_freealldevs(alldevs); return -1; } printf("\nlistening on %s...\n", d->description); pcap_freealldevs(alldevs); /* 开始流量捕获 */ ________ 6 __________ (adhandle, 0, packet_handler, NULL); return 0; } /* 每当有数据包进入,则以下回调函数被 WinPcap 调用 */ void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) { struct tm *ltime; char timestr[16]; ip_header *ih; udp_header *uh; u_int ip_len; u_short sport,dport; time_t local_tv_sec; local_tv_sec = header->ts.tv_sec; ltime=localtime(&local_tv_sec); strftime( timestr, sizeof timestr, "%H:%M:%S", ltime); printf("%s.%.6d len:%d ", timestr, header->ts.tv_usec, header->len); ih = (ip_header *) (pkt_data + 14); // 以太网头部长度 ip_len = (ih->ver_ihl & 0xf) * 4; uh = (udp_header *) ((u_char*)ih + ip_len); sport = ntohs( uh->sport ); dport = ntohs( uh->dport ); printf("%d.%d.%d.%d.%d -> %d.%d.%d.%d.%d\n", ih->saddr.byte1, ih->saddr.byte2, ih->saddr.byte3, ih->saddr.byte4, sport, ih->daddr.byte1, ih->daddr.byte2, ih->daddr.byte3, ih->daddr.byte4, dport); }
手机使用
分享
复制链接
新浪微博
分享QQ
微信扫一扫
微信内点击右上角“…”即可分享
反馈
参考答案:
举一反三
【单选题】在下列自然资源的开发利用中,不涉及化学变化的是
A.
从石油中通过 分馏得到汽油、煤油和柴油
B.
从 煤中得到焦炉煤气、煤焦油和焦炭
C.
以 煤、石油和天然气为原料生产合成材料
D.
从海水中提取溴
【多选题】利润表的特点有()。
A.
主要根据损益账户的本期发生额编制
B.
根据相关账户的期末余额编制
C.
属于静态报表
D.
属于动态报表
【单选题】关于失智老年人使用家用电器不正确的是()。
A.
利用现代化家电帮助失智老年人完成家 务,可以教会失智老年人使用洗衣机 电冰箱、电视、微波炉等家电
B.
使用家用电器的能力训练,需先评估观 察失智老年人使用家用电器的能力
C.
失智老年人避免使用电器,以免操作不 当造成危险
D.
可以将操作步骤一步ー步写出来,放在 电器旁边,请老人按步骤执行
【判断题】中邮小包的优点是运费经济、便宜,运输时间短,可以送达全球各个邮政网点。
A.
正确
B.
错误
【简答题】利润表的特点有( )
【单选题】关于失智老年人使用家用电器不正确的是()
A.
利用现代化家电帮助失智老年人完成家务,可以教会失智老年人使用洗衣机、电冰箱、电视、微波炉等家电
B.
使用家用电器的能力训练,需先评估观察失智老年人使用家用电器的能力
C.
失智老年人避免使用电器,以免操作不当造成危险
D.
可以将操作步骤一步一步写出来,放在电器旁边,请老人按步骤执行。
【判断题】在特邀调解中,立案前的委派调解和立案后的委托调解均属于法院调解的范畴。
A.
正确
B.
错误
【简答题】三菱PLC FX1N-MR各个英文和数字的意义
【简答题】利润表的特点有( )。
【单选题】在下列自然资源的开发利用中,不涉及化学变化的是
A.
用蒸馏法淡化海水
B.
用铁矿石冶炼铁
C.
用石油裂解生产乙烯
D.
用煤生产水煤气
相关题目:
参考解析:
知识点:
题目纠错 0
发布
创建自己的小题库 - 刷刷题