一个基于原始套接字的嗅探器2015-05-07嗅探器这个代码我去年的时候就已经写过了,这个学期并不是非常忙,顺手复习网络,就又尝试着写了一遍。其实在写嗅探器的时候,最主要的还是要将网卡设置为混杂模式。在此基础之上,对抓到的数据包进行分析。这个是我写出来的效果图,目前只是方便于查看,连菜单都没添加:

左面的界面显示的是主机和主机之间的链接信息,而右面则是选中主机信息之间的数据交互情况。我觉得我这个嗅探器应该是个失败品,或者说,没能够真正的将网卡设置为混杂模式。因为可以看到,上面的源地址全部都是本地主机地址,我在下载视频文件的时候,每秒几百kb的数据交互我的这个程序基本没响应。网页信息也都是发送的数据请求,根本抓不到接收数据。对于这一点希望高手能帮我指点一下。使用原始套接字写嗅探器的流程:1 使用socket创建基于IP协议的原始套接字。2 获取本地IP地址。3 将原始套接字绑定到本地IP地址上。4 使用ioctlsocket函数设置套接字选项SIO_RCVALL,即接受所有数据。5 无尽调用recv函数。