第1章:网络监听及防御技术.ppt

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

数据包详细分析 这11个数据包的含义如下: 1~3:三次握手,建立连接 4~5:第一次发送数据 6~7:第二次发送数据 8~11:断开连接 下面将对这11个数据包进行详细分析。 * * 1 C?S SYN SEQ=X+0 与TCP报文格式相对应 * * 2 S?C SYN,ACK SEQ=Y+0 ACK=X+1 * * 3 C?S ACK SEQ=X+1 ACK=Y+1 三次握手结束 * * 4 C?S PSH,ACK SEQ=X+1, data length=256, next seq=257 ACK=Y+1 数据内容见下页图 * * 相关开发库 (1) 基于UNIX系统的开发库libpcap * * 相关开发库 (1) 基于UNIX系统的开发库libpcap (packet capture library)对开发者而言,网卡驱动程序和BPF(分组过滤器)捕获机制是透明的,需要掌握的是libpcap库的使用。libpcap隐藏了用户程序和操作系统内核交互的细节,完成了如下工作: 向用户程序提供了一套功能强大的抽象接口。 根据用户要求生成过滤指令。 管理用户缓冲区。 负责用户程序和内核的交互。 * * 相关开发库 (2)基于Windows系统的WinPcap WinPcap是基于Windows 操作系统环境的Libpcap ,其在监听程序中起的作用和UNIX 系统下的libpcap类似。但是比libpcap多一些功能,如WinPcap可以发送数据,但是libpcap则不行。 * * 相关开发库 WinPcap的架构包括: 内核级的数据包监听设备驱动程序NPF(Netgroup packet Filter):关键组件,把设备驱动增加在Windows,它直接从数据链路层取得网络数据包不加修改地传递给运行在用户层的应用程序上,也允许用户发送原始数据包。 低级动态连接库packet.dll:运行在用户层,?把应用程序和数据包监听设备驱动程序隔离开,使得应用程序可以不加修改地在不同Windows系统上运行。 高级系统无关库Wpcap.dll:它和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口,不同Windows平台上的高级系统无关库是相同的。 * * 相关开发库 WinPcap架构图 * * 相关开发库 Pcap_open_live Pcap_setfilter Pcap_next_ex MyPacketProcess Pcap_dump 使用Winpcap的流程 打开网卡接口,设置为混杂模式 设置过滤器(捕获前过滤) 捕获数据 对捕获到的数据进行处理 将捕获到的数据进行存储 * * linux 设置网卡为混杂模式 #include stdio.h #include errno.h #include sys/ioctl.h #include stdlib.h #include sys/socket.h #include sys/types.h #include string.h #include linux/in.h #include linux/if_ether.h #include unistd.h #include net/if.h int main(int argc, char **argv) { int sock, n; struct ifreq ethreq; if ( (sock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))0) { perror(socket); exit(1); } * * linux 设置网卡为混杂模式 /* Set the network card in promiscuos mode */ strncpy(ethreq.ifr_name,eth0,IFNAMSIZ);//把网络设备的名字填充到ifr结构中 if (ioctl(sock,SIOCGIFFLAGS,ethreq)==-1) {//获取接口标志 perror(ioctl); close(sock); exit(1); } ethreq.ifr_flags|=IFF_PROMISC; //获取接口标志后将其设置成混杂模式 if (ioctl(sock,SIOCSIFFLAGS,ethreq)==-1) { perror(ioctl); close(sock); exit(1); } printf(Success to set eth0 to promiscuos mode..

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档