Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的网络嗅探器#_C#_Sockets_Tcp_Udp_Packet Sniffers - Fatal编程技术网

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=)