Raw Socket不在网卡混杂模式下能收到本机的tcp/udp数据吗

 我来答
p9...3@33sn.cc
2017-03-14 · 超过17用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:15.5万
展开全部
. 摘要 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 | |--------|--------|----------------|--------------------------------| | Time to live | Protocol | Header checksum | |--------|--------|----------------|--------------------------------| | Source address | |--------|--------|----------------|--------------------------------| | Destination address | |--------|--------|----------------|--------------------------------| | Option + Padding | |--------|--------|----------------|--------------------------------| | Data | |--------|--------|----------------|--------------------------------| TCP header structure: 16 32 bit |--------------------------------|--------------------------------| | Source port | Destination port | |--------------------------------|--------------------------------| | Sequence number | |--------------------------------|--------------------------------| | Acknowledgement number | |--------------------------------|--------------------------------| | Offset | Resrvd |U|A|P|R|S|F| Window | |--------------------------------|--------------------------------| | Checksum | Urgent pointer | |--------------------------------|--------------------------------| | Option + Padding | |--------------------------------|--------------------------------| | Data | |--------------------------------|--------------------------------| 五. 实现 Sniffer OK! 现都清楚, 等. 面我用 BCB6 写 Simple Sniffer 代码, 仅供参考. (需要工程文件加入WS2_32.LIB文件) /
Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式