C# C语言中的网络嗅探器#
最近,我为我目前工作的公司完成了我的网络嗅探器 我想知道:C# C语言中的网络嗅探器#,c#,sockets,tcp,udp,packet-sniffers,C#,Sockets,Tcp,Udp,Packet Sniffers,最近,我为我目前工作的公司完成了我的网络嗅探器 我想知道: 有没有办法在到达目的地之前编辑捕获的数据包?(UDP/TCP) 是否有其他捕获数据包的过程 以下是我的代码模板/过程: 1。首先,加载时,我会获取计算机上的所有设备/主机名 IPHostEntry HostEntry = Dns.GetHostEntry((Dns.GetHostName())); 2.用于嗅探套接字以捕获数据包的套接字必须是原始套接字,地址族为internetwork类型,协议为IP mainSocket =
- 有没有办法在到达目的地之前编辑捕获的数据包?(UDP/TCP)
- 是否有其他捕获数据包的过程
以下是我的代码模板/过程: 1。首先,加载时,我会获取计算机上的所有设备/主机名
IPHostEntry HostEntry = Dns.GetHostEntry((Dns.GetHostName()));
2.用于嗅探套接字以捕获数据包的套接字必须是原始套接字,地址族为internetwork类型,协议为IP
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
3。将套接字绑定到选定的IP地址
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(TEXT-OF-YOUR-HOST-ENTRY), 0));
4。设置插座选项
5.将传出数据包捕获到字节[]数组
mainSocket.IOControl(IOControlCode.ReceiveAll, YOUR-TRUE-BYTES, YOUR-OUTGOING-BYTES);
6.开始异步接收数据包
mainSocket.BeginReceive(BYTE-DATA, 0, BYTE-DATA-LENGTH, SocketFlags.None, new AsyncCallback(YOUR-RECEIVE-FUNCTION), null);
7.分析/解析接收到的字节。别忘了打电话给另一个人开始接收,这样我们就可以继续接收传入的数据包
8。最后,对于解析,您可以创建自己的类,或者使用已经发明的类/DLL来研究捕获的包
我只有这些。
- 我希望这对试图在C#中启动网络嗅探器的人有所帮助
- 我希望有人能告诉我更好的方法李>
- 还有没有机会在到达目的地之前编辑我捕获的包
您看过Wireshark(它使用WinPCAP库)和Pcap()的C#包装器了吗?您可以在其中实现和调用协议解码器,并将通信量保存为标准的
.Pcap
文件?为什么不首先使用Wireshark/tshark
捕获所有数据包呢?首先,我以前看过Pcap.Net,但在这种情况下,你真的不需要依赖它。C#库也可以工作。步骤5相当于Winsock 2的SIO_RCVALL常数。第二,我们需要为特殊目的/定制开发自己的网络嗅探器。据我所知,wireshark与任何其他网络嗅探器没有什么不同,在这种情况下,我们的网络嗅探器也可以捕获所有内容。我想知道的是,在数据包到达目的ip之前,是否有任何改进和编辑数据包的机会。谢谢你的评论,我完全忘了提到Pcap=)