Как получить необработанные данные полезной нагрузки TCP? С#
Я хочу написать необработанный сокет для получения данных полезной нагрузки из TCP-пакета..
Я пробовал WinPcap не удалось получить данные полезной нагрузки... что только показать количество байтов в полезной нагрузке предоставляется..
Что я уже пробовал:
public void Run() { using (PacketCommunicator communicator = selectedAdapter.Open(65536, // portion of the packet to capture // 65536 guarantees that the whole packet will be captured on all the link layers PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode 1000)) // read timeout { if (communicator.DataLink.Kind != DataLinkKind.Ethernet) { listBox1.Items.Add("This program works only on Ethernet networks."); return; } // Compile the filter using (BerkeleyPacketFilter filter = communicator.CreateFilter("ip and tcp")) { // Set the filter communicator.SetFilter(filter); } listBox1.Items.Add("Listening on " + selectedAdapter.Description + "..."); // start the capture communicator.ReceivePackets(0, PacketHandler); } } public void PacketHandler(Packet packet) { listBox1.Items.Add(packet.Timestamp.ToString("yyyy-MM-dd hh:mm:ss.fff") + " length:" + packet.Length); IpV4Datagram ip = packet.Ethernet.IpV4; TcpDatagram tcp = ip.Tcp; listBox1.Items.Add(" ** Source **" + packet.Ethernet.IpV4.Source + " ** Destination **" + packet.Ethernet.IpV4.Destination + " ** Payload **" + packet.IpV4.Payload); listBox1.Items.Add(ip.Source + " : " + tcp.SourcePort + " ->>> " + ip.Destination + " : " + tcp.DestinationPort); listBox1.Items.Add("Payload: "+tcp.Payload); }
Nathan Minier
Возможно, вам лучше всего послужит поиск источника тех, кто уже делает это лучше всего:
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=дерево