2016-04-16 2 views
0

Dies ist meine erste Frage zu StackOverflow. Also, wenn es irgendwelche Fehler gibt, ignorieren Sie sie bitte. Wenn Sie Probleme haben, meine Frage zu verstehen, lassen Sie es mich bitte wissen, ich versuche es am besten, um mein Problem zu erklären :).C#: IP in Hostnamen auflösen, wenn ein Host mehr als 1 IP hat

Derzeit versuche ich einen Paket-Sniffer mit pcap.net in C# zu erstellen. Ich habe ein Problem beim Auflösen der IP-Adressen in Hostnamen.

Hier ist mein Problem: Wenn eine Website hat mehr als 1 IP-Adresse, zum Beispiel, wenn ich den Befehl in Eingabeaufforderung

nslookup yahoo.com 

I

DNS request timed out. 
    timeout was 2 seconds. 
*** Can't find server name for address 192.168.0.1: Timed out 
Server: google-public-dns-a.google.com 
Address: 8.8.8.8 

Non-authorative answer: 
Name: yahoo.com 
Addresses: 206.190.36.45, 98.139.183.24, 98.138.253.109 
die folgende Ausgabe bekam

Also, es ist klar, dass ich mehr als 1 IP-Adresse für yahoo.com habe.

Jetzt benutze ich das folgende Stück Code, der für die Hosts mit 1 IP-Adresse funktioniert (zB wenn ich IP-Quelle/Ziel als 8.8.8.8 habe gibt mir das Ergebnis google -public-dns-a.google.com)

private void PacketHandler(Packet packet) 
{ 
     IpV4Datagram ip = packet.Ethernet.IpV4; 

     string sourceHost = ip.Source.ToString(); 
     string destinationHost = ip.Destination.ToString(); 

     #region Code to get the host name of the source ip and the destination ip 

     string tempSourceIP = sourceHost; 
     string tempDestinationIP = destinationHost; 
     IPHostEntry source_ipHostEntry, destination_ipHostEntry; 
     try 
     { 
      source_ipHostEntry = Dns.GetHostEntry(sourceHost); 
      destination_ipHostEntry = Dns.GetHostEntry(destinationHost); 
      sourceHost = tempSourceIP + " :: (" + source_ipHostEntry.HostName + ")"; 
      destinationHost = tempDestinationIP + " :: (" + destination_ipHostEntry.HostName + ")"; 

     } 
     catch (Exception) 
     { 
      sourceHost = tempSourceIP; 
      destinationHost = tempDestinationIP; 
     } 
     #endregion 
} 

ich die Ergebnisse und Sourcehost destinationHost zu GUI Hinzufügen (das ist ein Datagrid genau zu sein) für die Ergebnisse angezeigt werden.

Meine Frage ist - Gibt es eine Möglichkeit herauszufinden, ob die Quell-IP oder die Ziel-IP zu der Liste der IPs eines Hosts gehört, der unbekannt ist (zB wenn meine Quell-IP oder Ziel-IP 206.190.36.45 ist) , wie kann ich herausfinden, dass die IP gehört yahoo.com)?

UPDATE: Ich war im Internet surfen, um eine Lösung für meine Frage zu finden, und ich fand diesen Link How to retrieve a list of websites from an IP address?. Dies löst teilweise mein Problem, da es immer noch einige IP-Adressen gibt, die nicht auf ihren Host-Namen aufgelöst werden können, selbst nachdem diese Methode ausgeführt wurde. Und da ich einen Paket-Sniffer mache, ist diese Methode vielleicht nicht die beste. Weil ich dem Benutzer den Hostnamen der IP-Adresse in Echtzeit zeigen möchte, wenn die Werte in der GUI geladen werden (ich meine mein Datagrid). Und ich würde mich freuen zu wissen - wenn die Lösung in dem Link zur Verfügung stellt, ist der einzige Weg, um mein Problem zu lösen.

Antwort

1

Sie könnten versuchen, rDNS.

https://en.wikipedia.org/wiki/Reverse_DNS_lookup

Aber wie erwähnt:

nicht alle IP-Adressen haben einen Reverse-Eintrag.

+0

Ihr Link ist sehr hilfreich. Vielen Dank. "Nicht alle IP-Adressen haben einen umgekehrten Eintrag" - Das ist der Grund, warum mein Code Einschränkungen hat. Das gleiche gilt auch für nslookup. Aber ich habe eine Frage - wie lösen die Webseiten wie domaintools ips auf? Wenn sie irgendeine Art von Datei verwenden, wo bekomme ich diese Datei? Das ist der Grund, warum ich angefangen habe zu denken und diese Frage zu stellen. –

+0

Ich habe versucht, deine Antwort zu verbessern, aber es funktioniert nicht wegen meines Rufs. Bitte, nichts dagegen. –

+0

Ich vermute, dass diese Seiten eine Art umgekehrte Tabellen enthalten.Einschränkungen des Reverse IP Lookup-Tools: Die Ergebnisse umfassen alle .com-, .net-, .org-, .biz-, .us- und .info-Domains sowie alle anderen aufgelisteten gTLD- oder ccTLD-Domains Die IP, die wir kennen Domains, die zu einer IP-Adresse hinzugefügt wurden, werden täglich aktualisiert Domains, die von einer bestimmten IP-Adresse entfernt wurden, werden möglicherweise erst nach zwei Wochen angezeigt. " – brickner