SharpSniffer--C#版Sniffer - pcy - 博客园

虽然网上已经有了SharpSniffer
这一个SharpSniffer还是原创的
无他,唯为学习
工程文件下载:

主要过程


1、创建套接字
2、绑定到本机
3、设置IOControl
4、接收数据
5、处理(显示)数据

关键代码


                创建socket ,据MSDN,IOControlCode.ReceiveAll(后面要使用到)使用时有以下限制:

 


               绑架到本机,只有绑定到本机才可以监听数据包:

 

 

 


           获取本机IP地址,从一个主机名可能解析到好几个地址,这要看你电脑的网络适配器的状态了,这里只取{dy}个:

 

private static IPAddress GetHostAdress()
{
string hostName=Dns.GetHostName();
var hostAddreses
=Dns.GetHostAddresses(hostName);
return hostAddreses[0];
}

 

 


             很关键的一步,对IOControl进行设置。这里输入参数为1表示RCVALL_ON(启用接收所有包),当输入参数为0时表示RCVALL_OFF,具体定义在MSDN中WSAIoctl函数的Remark中说的很清楚:

 

byte[] outValue = BitConverter.GetBytes(0);
byte[] inValue = BitConverter.GetBytes(1);
socket.IOControl(IOControlCode.ReceiveAll,inValue, outValue);
//对IO设置为可以接受所有包

 

 


很关键的,接收数据

 

int recvedSize = socket.ReceiveFrom(buf, ref ep); //用ReceiveFrom接受数据
// socket.Receive(buf); //用Receive也能接受到数据,不过使用ReceiveFrom可以直接获取发送方IP地址

 

 


接下来要显示数据了,这里只是简单的把数据打印出来,如果想获取该数据包的更多信息则就需要按IP数据包的格式来解析包的内容了:

 

 

 


详细过程参考
本程序在WinXP sp3, VS2010, .Net Framework 4.0 Client & .Net Framework 2.0下编译运行通过
能成功抓包,如ping发出和收到的数据包能抓到,打开网页的数据包也能抓到。

不足之处

暂时没有分析包的内容

posted on 2010-05-03 12:46 阅读(44)  

郑重声明:资讯 【SharpSniffer--C#版Sniffer - pcy - 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——