数据包的获与分析.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据包的获与分析

网络安全编程技术 第3讲:数据包的捕获与分析 任德斌 本讲编程训练目标 编程实现一个协议分析器。该协议分析器将包含以下几部分功能 : 数据采集——捕捉Ethernet网络数据包; 解析Ethernet网数据帧头部的全部信息; 解析IP数据包的头部信息; 解析TCP和UDP包的头部信息; 主要内容 用原始Socket抓包 进行协议分析 使用开发工具包WinPcap抓包 1. 用原始Socket抓包流程 创建原始Socket 获取一个需要监听网络接口的ip地址,并绑定(必须要显示绑定) 设置网卡为混杂模式 开始循环接收数据 关闭Socket 关键代码1:创建原始Socket SnifferSocket = socket(AF_INET, SOCK_RAW, IPPROTO_IP); if (Result == SOCKET_ERROR) { printf(socket failed with error %d\n, WSAGetLastError()); return 0; } 原始socket的特点 应用程序可以收到目标是其它主机的包 应用程序会收到ip包 如果设置IP_HDRINCL 选项,可以手动设置发送的ip包的头部 不能拦截数据,因为系统采用的是拷贝的方式 由于安全原因,在xp-sp2,windows 7中原始socket的使用有限制: 不能发送tcp包 不能使用伪造的原ip地址 关键代码2:绑定到一个本地IP地址 Result = gethostname(Name, 255); pHostent = (struct hostent*)malloc(sizeof(struct hostent)); pHostent = gethostbyname(Name); SOCKADDR_IN sock; sock.sin_family = AF_INET; sock.sin_port = htons(5555); memcpy(sock.sin_addr.S_un.S_addr, pHostent-h_addr_list[0], pHostent-h_length); Result = bind(SnifferSocket, (PSOCKADDR) sock, sizeof(sock)); 获取本地接口的更好方法 SOCKADDR_IN input; char remoteip[]=;//可以是任意地址 short remoteport=80; char buf[1024]; input.sin_family = AF_INET; input.sin_addr.s_addr = inet_addr(remoteip); input.sin_port = htons(remoteport); Result = WSAIoctl (SnifferSocket, SIO_ROUTING_INTERFACE_QUERY, input, sizeof(input), buf, 1024, dwBytesRet, NULL, NULL); SOCKADDR_IN *lpIf = (SOCKADDR_IN *)buf; sock.sin_addr=lpIf-sin_addr; 关键代码3:设置为混杂模式 u_long InOutParam=1; Result =ioctlsocket(SnifferSocket, SIO_RCVALL, InOutParam); 参数InOutParam表示命令SIO_RCVALL 的输入参数 WSAIoctl是相应的Winows扩展函数,更复杂,更强大。 以太网卡的工作模式 网卡的MAC地址(48位) 通过ARP来解析MAC与IP地址的转换 用ipconfig/ifconfig可以查看MAC地址 正常情况下,网卡应该只接收这样的包 MAC地址与自己相匹配的数据帧 广播包 网卡完成收发数据包的工作,两种接收模式 混杂模式:不管数据帧中的目的地址是否与自己的地址匹配,都接收下来 非混杂模式:只接收目的地址相匹配的数据帧,以及广播数据包(和组播数据包) 为了监听网络上的流量,必须设置为混杂模式 共享网络和交换网络 共享式网络 通过网络的所有数据包发往每一个主机 最常见的是通过HUB连接起来的子网 交换式网络 通过交换机连接网络 由交换机构造一个“MAC地址-端口”映射表 发送包的时候,只发到特定的端口上 关键代码4:读取数据 char Packet[60000]; Result = recv (SnifferSocket, Packet, sizeof(Pa

文档评论(0)

1444168621 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档