设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 安全技术 >> 病毒漏洞 >> Raw Socket(原始套接字)实现Sniffer(嗅探)
精品推荐
病毒漏洞点击TOP10
·动网论坛上传文件漏洞
·常用几种软件密码破解的方法
·尘缘雅境图文系统存在严重漏洞
·Raw Socket(原始套接字)实现Sniffer(嗅探)
·远程线程注入版获取SYSTEM权限
·“艾妮”(ANI)病毒解决方案
·如何成为一名黑客(附FAQ)
·能开启摄像头偷窥隐私的病毒
·解决DF冰点不修改NTLDR,最后一次正确配置的问题
·CGI漏洞
安全技术点击TOP10
·主板芯片级维修技术资料
·Symantec AntiVirus防病毒服务器安装配置使用指南
·教你如何手动查杀“幽灵(I-Worm.Ghost)”病毒
·贴片元件标记对应型号资料
·主板芯片组详解
·在WindowsXP/2003下查看端口对应的进程
·主板点不亮(不显示)的BIOS修复两法
·计算机启动过程详解
·网吧如何禁止使用PP点点通
·主板开机原理
精选专题

Raw Socket(原始套接字)实现Sniffer(嗅探)

作者: 来源:网络文章 时间:2005-12-17 23:58:24

Raw Socket(原始套接字)实现Sniffer(嗅探)(1)

一. 摘要 
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]; 

共9页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [98 :>

Raw Socket(原始套接字)实现Sniffer(嗅探) 相关文章:
Raw Socket(原始套接字)实现Sniffer(嗅探) 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com