C#中的网络嗅探器

时间:2016-07-28 11:34:14

标签: c# sockets tcp udp packet-sniffers

最近,我为我目前正在合作的公司完成了网络嗅探器。

我想知道:

  • 有没有办法在到达目的地之前编辑捕获的数据包? (UDP / TCP)
  • 是否还有其他捕获数据包的程序?

这是我的代码模板/程序:

1。首先,加载时我会在计算机上获取所有设备/主机名。

IPHostEntry HostEntry = Dns.GetHostEntry((Dns.GetHostName()));

2. 为了嗅探套接字以捕获数据包必须是一个原始套接字,地址族是互联网类型,协议是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. 将传出的数据包捕获到byte []数组。

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. 分析/解析收到的字节数。并且不要忘记将另一个调用BeginReceive,以便我们继续接收传入的数据包。

8。最后,对于解析,您可以创建自己的类或使用已经发明的类/ dll来研究捕获的包。

  

多数民众赞成。

     
      
  • 我希望这有助于尝试在C#中启动网络嗅探器的人。
  •   
  • 我希望有人能告诉我更好的方法。
  •   
  • 还有机会在我们到达目的地之前编辑我拍摄的包吗?
  •   
     

感谢您的时间。

0 个答案:

没有答案