网站大量收购独家精品文档,联系QQ:2885784924

RawSocket(原始套接字)实现Sniffer(嗅探).doc

RawSocket(原始套接字)实现Sniffer(嗅探).doc

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

一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); 这样我们就创建了一个 Raw Socket Sniffer: 嗅探    一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); 这样我们就创建了一个 Raw Socket Sniffer: 嗅探器 关于嗅探器的原理我想大多数人可能都知道 1. 把网卡置于混杂模式; 2. 捕获数据包; 3. 分析数据包. 但具体的实现知道的人恐怕就不是那么多了. 好, 现在让我们用 Raw Socket 的做一个自已的 Sniffer. 二. 把网卡置于混杂模式 在正常的情况下,一个网络接口应该只响应两种数据帧: 一种是与自己硬件地址相匹配的数据帧 一种是发向所有机器的广播数据帧 如果要网卡接收所有通过它的数据, 而不管是不是发给它的, 那么必须把网卡置于混杂模式. 也就是说让它的思维混乱, 不按正常的方式工作. 用 Raw Socket 实现代码如下: setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)flag, sizeof(flag); //设置 IP 头操作选项 bind(sockRaw, (PSOCKADDR)addrLocal, sizeof(addrLocal); //把 sockRaw 绑定到本地网卡上 ioctlsocket(sockRaw, SIO_RCVALL, dwValue); //让 sockRaw 接受所有的数据 flag 标志是用来设置 IP 头操作的, 也就是说要亲自处理 IP 头: bool flag = ture; addrLocal 为本地地址: SOCKADDR_IN addrLocal; dwValue 为输入输出参数, 为 1 时执行, 0 时取消: DWORD dwValue = 1; 没想到这么简单吧? 三. 捕获数据包 你的 sockRaw 现在已经在工作了, 可以在局域网内其它的电脑上用 Sniffer 检测工具检测一下, 看你的网卡是否处于混杂模式(比如 DigitalBrain 的 ARPKiller). 不能让他白白的浪费资源啊, 抓包! recv(sockRaw, RecvBuf, BUFFER_SIZE, 0); //接受任意数据包 #define BUFFER_SIZE 65535 char RecvBuf[BUFFER_SIZE]; 越来越发现 Sniffer 原来如此的简单了, 这么一个函数就已经完成抓取数据包的任务了. 四. 分析数据包 这回抓来的包和平常用 Socket 接受的包可就不是一回事儿了, 里面包含 IP, TCP 等原始信息. 要分析它首先得知道这些结构. 数据包的总体结构: ---------------------------------------------- | ip header | tcp header(or x header) | data | ---------------------------------------------- IP header structure: 4 8 16 32 bit |--------|--------|----------------|--------------------------------| | Ver | IHL |Type of service | Total length | |--------|--------|----------------|--------------------------------| | Identification | Flags | Fragment offset | |--------|--------|----------------|-------------------------

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档