Я хотел бы знать, как я могу перехватить пакеты, отправленные определенным приложением, а затем проверить, что содержат эти пакеты? Мне нужен совет, что делать, потому что я никогда не делал этого, что хочу узнать для себя.
Как перехватить пакеты, отправленные приложением, и проверить, что у них есть?
Ответ 1
Pcap.Net
Pcap.Net - это .NET-обертка для WinPcap, написанная на С++/CLI и С#. Он содержит почти все функции WinPcap и включает в себя инфраструктуру интерпретации пакетов.
SharpPcap
SharpPcap - это межплатформенная платформа захвата пакетов для среды .NET, основанная на известных библиотеках pcap/WinPcap. Он предоставляет API для захвата, ввода, анализа и создания пакетов с использованием любого языка .NET, такого как С# и VB.NET.
Сравнение Pcap.Net и SharpPcap
Wireshark
Используется для поиска и устранения неисправностей в сети, анализа, разработки программного обеспечения и коммуникаций, а также образования. И я думаю, что это самый универсальный пакетный снифер, который я использовал до сих пор.
Fiddler
Fiddler - это прокси-сервер для веб-отладки, который регистрирует весь трафик HTTP (S) между вашим компьютером и Интернетом. Fiddler позволяет вам проверять трафик, устанавливать точки останова и "скрипка" с помощью входящих или исходящих данных. Fiddler включает мощную подсистему сценариев на основе событий и может быть расширена с использованием любого языка .NET. Недавно Фиддлер был настиг Telerik. Но он по-прежнему свободен AFAIK.
Ответ 2
Пример создания сокета снизу С#.
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw,
ProtocolType.IP);
// Bind the socket to the selected IP address
mainSocket.Bind(newIPEndPoint(IPAddress.Parse(cmbInterfaces.Text),0));
// Set the socket options
mainSocket.SetSocketOption(SocketOptionLevel.IP, //Applies only to IP packets
SocketOptionName.HeaderIncluded, //Set the include header
true); //option to true
byte[] byTrue = newbyte[4]{1, 0, 0, 0};
byte[] byOut = newbyte[4];
//Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //SIO_RCVALL of Winsock
byTrue, byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
newAsyncCallback(OnReceive), null);
Ответ 3
Вы можете использовать Fiddler для просмотра HTTP-трафика http://www.fiddler2.com/fiddler2/.
Альтернативно Wireshark http://www.wireshark.org/ для более продвинутых материалов
Резюме анализаторов пакетов здесь http://en.wikipedia.org/wiki/Packet_analyzer
Более подробная информация о том, что вы пытаетесь достичь, поможет нам советовать.