Как перехватить пакеты, отправленные приложением, и проверить их заголовок и содержимое? [закрытый]
Я хотел бы знать, как я могу перехватывать пакеты, отправленные определенным приложением, а затем проверить, что эти пакеты содержат. Мне нужен совет, что делать, потому что я никогда не делал ничего подобного, и я хочу учиться сам.
3 ответов
Pcap.Net
Pcap.Net является .NET-оболочкой для WinPcap, написанной на C++ / CLI и C#. Он имеет почти все функции WinPcap и включает в себя структуру интерпретации пакетов.
SharpPcap
SharpPcap-это кросс-платформенная платформа захвата пакетов для среды .NET, основанная на известных библиотеках pcap / WinPcap. Оно обеспечивает API для захватывать, впрыскивать, анализировать и строить пакеты, использующие любой язык .NET, например C# и VB.NET.
сравнение Pcap.Net и SharpPcap
Wireshark
оно использован для диагностики сети, анализа, программного обеспечения и развития протокола коммуникаций, и образования. И я думаю, что это самый универсальный пакет сниффер, который я использовал до сих пор.
Саша
Fiddler-это прокси-сервер веб-отладки, который регистрирует весь трафик HTTP(S) между вашим компьютером и интернетом. Fiddler позволяет проверять трафик, устанавливать точки останова и" возиться " с входящие или исходящие данные. Fiddler включает в себя мощную подсистему сценариев на основе событий и может быть расширена с помощью любого языка .NET. Недавно скрипача настиг Телерик. Но это все еще бесплатный AFAIK.
некоторый пример создания сокета сниффера c#.
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);
вы можете использовать Fiddler для просмотра HTTP-трафика http://www.fiddler2.com/fiddler2/.
Альтернативно Wireshark http://www.wireshark.org/ для более продвинутых вещей
сводка анализаторов пакетов здесь http://en.wikipedia.org/wiki/Packet_analyzer
больше деталей чего вы пытаетесь достигнуть помогли бы нам посоветовать.