2010-11-24 4 views
1

Ich verwende derzeit die pcap-Bibliothek für C# und fragte mich, ob es eingebaute Funktionen zum Entfernen der IP-Header und der TCP/UDP/ECT-Header gab? Wenn nicht, könnte jemand posten, wie sie das Entfernen solcher Header erreicht haben?Paketprotokollierung mit Pcap für C#

Antwort

2

Verwenden Sie PacketXLib? Ich habe das schon mal benutzt und fand es leicht genug, damit zu codieren. die Header zu extrahieren ist einfach genug, um nur die wesentlichen Grundlagen der Protokolle zu kennen

public const int ETHERNETLEN = 14; // length of ethernet header 
public const int IPLEN = 20;   // length of ip header 
public const int TCPLEN = 20;   // length of tcp header 

Angenommen Sie haben die gleiche Bibliothek verwenden ich, kann man dann umgehen nur die Header auf die Rohdaten erhalten

int dataOffset = ETHERNETLEN + IPLEN + TCPLEN; 
string rawData = ""; 
// Throw all the data into a string first up so we can work with it easier 
for (int i = dataOffset; i < aPacket.DataSize; i++) 
{ 
    byte nByte = (byte)aPacket.DataArray.GetValue(i); 
    rawData += Convert.ToChar(nByte); 
} 

Der Code, den ich sehe, wo ich das gemacht habe, ist wahrscheinlich fast ein Jahr alt, also ein bisschen unklar was genau ich tat. Ich habe einige http-Paket-Rekonstruktion tun, wie in this question Ich habe gepostet. Wenn man sich diesen Thread anschaut, war es vor gut einem Jahr, als ich das tat!

1

Ich bin der Autor von SharpPcap, ein pcap Wrapper/Bibliothek für C#.

Wenn Sie SharpPcap verwenden, bricht SharpPcap das Paket in Datagramme. Sie würden also ein Ethernet-Paket erhalten, das ein IpPaket enthält, das ein Udp-Paket enthält. Wenn Sie nur das UDP-Paket wollte können Sie leicht extrahieren, dass wie:

Packet p = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data); 
var udpPacket = UdpPacket.GetEncapsulated(p); 
if(udpPacket != null) { Console.WriteLine("found udp packet '{0}'", udpPacket); } 

UdpPacket.GetEncapsulated() durchläuft die Datagramme für das Paket suchen. Dieselbe Vorgehensweise funktioniert für alle Typen, die analysiert werden.

Verwandte Themen