*** EINLEITUNG *** Dies ist ein kleiner Patch fuer den ISC DHCP Client (Version 2). Dieser liegt z.B. SuSE Linux bei oder kann ansonsten von http://www.isc.org (ftp://ftp.isc.org/isc/dhcp/dhcp-2.0.tar.gz) runtergeladen werden. Ziel des Ganzen ist, in einem Netz DHCP Server zu finden. (Besonders wenn man z.B. auf einer LAN-Party als Organisator einen Server laufen hat und irgendein Gast "vergisst", seinen eigenen DHCP Server zu stoppen.) *** ZUR LOESUNG *** Der ISC DHCP Client gibt von sich aus bereits aus, welche Pakete er raus- geschickt hat und welche er von welcher IP zurueckbekommen hat. So weit, so gut. Damit haetten wir jetzt also theoretisch die IP Adressen aller DHCP Server, die noch freie IP Adressen haben. (Server, die keine IP Adressen frei vergeben [sondern z.B. nur an bestimmte MAC-Adressen] oder die schon alle Adressen vergeben haben, werden sich nicht melden, aber zumindest im ersten Fall wohl auch kein Problem darstellen) Dumm ist nur, dass der Client anschliessend auch unbedingt die Netzwerk- einstellungen aendern will ... ... und genau das aendert (hoffentlich ;-) ) dieser Patch. Ruft man den gepatchten und neu kompilierten "dhclient" mit dem Parameter "-s" auf, bricht der Client ab, nachdem er die DHCPOFFER (= erste Antworten der DHCP Server) erhalten hat. Ich hoffe, ich hab alle Moeglichkeiten abgedeckt. Bei mir scheint es jedenfalls zu laufen ;-) *** INSTALLATION *** Der Patch muss, nachdem man den Sourcecode (siehe oben) runtergeladen und entpackt hat, in das "client"-Verzeichnis kopiert und dann mit "cat dhclient-scan-0.3.diff | patch" installiert werden. Nachdem man das Paket anschliessend kompiliert und installiert hat, kann man z.B. mit "dhclient -s eth0" das Netzwerk nach DHCP Servern durchsuchen. Ohne den Parameter "-s" sollte sich der Client uebrigens wie zuvor verhalten und folglich auch als normaler DHCP Client verwenden lassen! *** INSTALLATION - Teil 2 *** Um die Sache noch etwas komfortabler zu machen, hab ich noch ein kleines Skript beigelegt (dhcpscan), welches man manuell starten oder auch ueber cron aufrufen lassen kann, um das Netz regelmaessig zu durchsuchen. Beispiel fuer /etc/crontab, um alle 10 Minuten zu scannen: */10 * * * * root /irgend/ein/pfad/zu/dhcpscan Das Skript kann den/die eigenen DHCP Server rausfiltern und ermittelt zu den gefundenen IPs noch die MAC-Adresse und (optional) den NetBIOS-Namen und die Arbeitsgruppe, um die anschliessende Suche des "Taeters" zu erleichtern. Die gesammelten Informationen lassen sich auf der Konsole ausgeben oder per Mail oder WinPopup-Message an einen Benutzer/Rechner senden (oder auch alles gleichzeitig ;-) ). Neu: es kann auch bei jedem gefundenen (fremden) Server ein weiteres Programm gestartet werden, dem IP, MAC-Adresse, NetBIOS-Name und Arbeitsgruppe als Parameter uebergeben werden. (Erspart die Filterung oder Aenderung der Ausgabe dieses Skripts) Konfiguriert wird dies alles ueber ein paar Variablen am Anfang des Skripts. Ein Blick dort hinein koennte also nicht Schaden ... ;-) Nachtrag: Mit Version 0.4 des Skripts habe ich noch eine Option eingetragen, so dass mit dem Portscanner "nmap" statt mit dem gepatchten DHCP Client gezielt nach DHCP Servern gesucht werden kann. Den gepatchten Client sollte man aber weiterhin vorziehen, da nur er wirklich erkennt, ob es sich um DHCP Server handelt und ob diese auch freie IPs verteilen. *** AUTOR *** Skript, Patch und dies Gelaber hier von Markus Wiesner . Das Paket findet man z.Zt. unter http://www.informatik.uni-bremen.de/~mwiesner/dhcpscan.tar.gz Verwendung auf eigene Gefahr! Wer der Sache nicht traut, hat schliesslich den Sourcecode, um alles zu pruefen! (Sind aber ja auch nur ein paar Zeilen :-) ) Verbesserungen sind Willkommen. Besonders der Patch ist wohl eher "dahingepfuscht" ... hab den Original-Sourcecode grad so weit verstanden, um hier und da ein Abbruch einzubauen, bis das Programm das zu machen schien, was ich vorhatte ;-)