Frage

Q1 - Ist es möglich, Capture DNS-Anfrage / Antworten mit der Bibliothek

Q2 - Wenn ja, sobald ich das Paket haben hat jemand eine Beispielcode Das zeigt, wie ich die Felder aus der DNS-Antwort extrahieren könnte? Im bestimmte Adresse der IP dass DNS aufgelöst für den angegebenen DNS-Namen sofern im Besonderen.

War es hilfreich?

Lösung

Ja, es ist möglich.

Beispielcode wäre ein bisschen auf der langen Seite sein, obwohl ...

Im Wesentlichen müssen Sie:

  1. extrahieren Sie die Ethernet-Header
  2. extrahieren Sie die IP-Header
  3. extrahieren Sie die UDP-Header [unter der Annahme, das Paket nicht fragmentiert ist, oder unter Verwendung von TCP]
  4. extrahieren Sie die DNS-Nutzlast

Griff dann den Rest des Pakets gemäß der sehr gründlichen Beschreibung angegeben in RFC 1035 .

In der Praxis bedeutet das:

  1. ignorieren Anfragen - alle Informationen, die Sie brauchen, ist in Antworten (QR == 1)
  2. Check für RCODE == 0 und ANCOUNT > 0
  3. Blick in den Frage Abschnitt Namen zu finden, der abgefragt wurde
  4. Suchen Sie nach Antworten in der Antwort (duh!) Abschnitt

Um die Sache noch komplizierter Sie handle DNS Etiketten (Serie von <count><data...> Felder) und möglicherweise komprimiert Etiketten verarbeiten auch!

Das klingt böse, aber nichts davon ist eigentlich , die hart. Ich habe C ++ Code, dass all dies tut, und es ist nicht so lang, aber ich kann es nicht lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top