上一篇:Q-Zone使用技巧完全攻略 >>
VC中利用原始套接字实现网络监听
网络监听工具(sinff)是提供给网络管理员的一类管理工具。在以太网中(Ethernet),当网络上连接多台计算机时,某瞬间只能有一台计算机可以传送数据。以太网中,数据是以被称为帧的数据结构为单位进行交换的。通常,在计算机网络上交换的数据结构体的单位是数据包。而在以太网中则称为帧。这种数据包是由记录着数据包发送给对方所必需信息的报头部分和记录着发送信息的报文部分构成。报头部分包含接收端的地址、发送端的地址、数据校验码等信息。
在以太网上,帧(数据包)是被称为带碰撞检测的载波侦听多址访问(CAMA/CD)发送的,在这种方法中,发送到指定地址的帧实际上是发送到所有计算机的,只是如果网卡检测到经过的数据不是发往自身的,简单忽略过去而已。
2、网络监听工作原理
工作在普通模式下的网卡只能接收发往本地地址和广播的数据包,其余数据包将简单的转发,并不把数据提交给主机处理。工作在混杂模式下的网卡将接收所有经过本网卡的数据。所以网络监听程序只能工作在混杂模式下。对于不能工作在网卡,将无法监听所有在网络上传输的数据。网络监听的核心就是设置网卡为混杂模式。通常的套接字只能相应与自己硬件地址相匹配的或以广播方式发送的数据帧。对于其他数据帧,网络接口验证投递地址并非自身地址后将不做响应,也就是说网络程序无法接收到达网卡的数据包。
3、具体实现
对网卡设置混杂模式是通过原始套接字(row socket)实现的,这有别于通常是使用的数据流和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。
例子程序运行画面如图所示:
|
如图一 |
4、小结
本文介绍的以原始套接字实现网络侦听的方法实现起来比较简单,尤其是不需要编写驱动程序就能实现网络侦听。但由于接收到的数据报头不含帧信息,因此不能接收网络层的其他数据包,如ARP、RARP等。原始套接字只能监听但不能实现拦截。另外最致命的缺点就是只能在Winsock层次上进行,而对于网络协议栈中底层协议的数据包例如TDI无法进行处理。对于一些木 马和病毒来说很容易避开这个层次的监听。
下一篇:VC++编程实现对火焰的计算机动态仿真 >>
相关文章:
- · 瑞星9.15病毒预警:注意恶鹰变种蠕虫
- · 瑞星9.16病毒预警:消耗系统资源的蠕虫
- · 瑞星9.19病毒预警:修改注册表的蠕虫
- · 网络安全基础:几个容易被误认为病毒的文件
- · Windows中DLL文件基本原理及修改方法
- · 卡巴斯基推出智能手机防毒软件试用版
- · P2P蠕虫现身网络 可执行文件成传播载体
- · 20年来破坏力最大的10种计算机病毒
- · 盖茨称搜索有改进空间 找信息更方便
- · 微软再陷反托拉斯起诉 Go控其侵权
- · 微软于年底前推出CRM3.0 价格未定
- · IT经理世界:微软的统战
- · Web环境下SQL注入攻击的检测与防御
- · 全球软件潮席卷中国:下一个会是谁?
- · SQL Server数据库实用小技巧集合
- · SQL Server日志清除的两种方法
- · JavaScript代码可导致浏览器攻击
- · SQL Server存储过程编写和优化措施
- · SQL Server销售喜人 微软涉嵌入数据库
- · “毒蛇”出洞 IBM欲一统全球数据库市场
- · 恶意工具利用公开代码侵入Google数据库
- · 微软已开发出网络用户共享的3D图像处理软件
- · 商业周刊:IBM收购软件公司的热情高涨
- · IBM演示分子级数据存储 突破CMOS极限
- · IBM开源战略圈定八大技术新领域
- · 商业周刊:软件业务拉动IBM实现成长
- · 互联网“搜索+商务”模式的归宿
- · 分析师称社交网络迅速崛起 改变互联网未来
- · 盖茨淡出已定 互联网时代微软即将到来
- · 互联网周刊:Google的软肋
- · 互联网周刊:Web2.0如何走向商业化
- · 腾讯升级QQ宠物 强化互联网增值服务
- · IT巨头联手打造互操作标准SML
- · 美国Network World:网络十大前沿技术
- · Digg如何成功:网建先行广告靠后
- · 互联网走向架构web2.0和应用个人门户化
- · 头脑风暴 “攒”出更稳定的软件
- · Web程序员年薪10万 本科生起薪3.8万
