F.B*_*Bek 5 c# sockets udp tcp packet-sniffers
最近,我为我目前合作的公司完成了我的网络嗅探器。
我想知道:
1.首先,在加载时我得到了计算机上的所有设备/主机名。
IPHostEntry HostEntry = Dns.GetHostEntry((Dns.GetHostName()));
Run Code Online (Sandbox Code Playgroud)
2.嗅探套接字以捕获数据包必须是原始套接字,地址族为internetwork 类型,协议为IP。
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
Run Code Online (Sandbox Code Playgroud)
3.将套接字绑定到选定的 IP 地址。
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(TEXT-OF-YOUR-HOST-ENTRY), 0));
Run Code Online (Sandbox Code Playgroud)
4.设置套接字选项。
5. 将传出数据包捕获到 byte[] 数组。
mainSocket.IOControl(IOControlCode.ReceiveAll, YOUR-TRUE-BYTES, YOUR-OUTGOING-BYTES);
Run Code Online (Sandbox Code Playgroud)
6.开始异步接收数据包。
mainSocket.BeginReceive(BYTE-DATA, 0, BYTE-DATA-LENGTH, SocketFlags.None, new AsyncCallback(YOUR-RECEIVE-FUNCTION), null);
Run Code Online (Sandbox Code Playgroud)
7.分析/解析收到的字节。并且不要忘记调用另一个到 BeginReceive 以便我们继续接收传入的数据包。
8.最后进行解析,您可以创建自己的类或使用已经发明的类/dll 来研究捕获的包。
这就是我的全部。
- 我希望这对尝试在 C# 中启动一些网络嗅探器的人有所帮助。
- 我希望有人向我展示更好的方法来做到这一点。
- 是否还有机会在我捕获的包裹到达目的地之前对其进行编辑?
感谢您的时间。
| 归档时间: |
|
| 查看次数: |
9254 次 |
| 最近记录: |