27 Dez

Sinn und Unsinn von MAC-Filtern

\"*\"Die MAC-Adresse (Media Access Control oder Ethernet-ID) ist notwendig, um Netzwerkpakete von einem Netwerkanschluss zum anderen zu bringen. Sie identifiziert immer Sender und Empfänger. Die 48-Bit Zahl (z.B. 08:00:20:ae:fd:7e) hat im Netzwerk eine ähnliche Funktion wie IP-Adressen im Internet. Sie sollte daher für jede Netzwerkkarte einzigartig sein. Tatsächlich gibt es auch eine weltweit zentrale Verwaltung für MAC-Adressen.

Über MAC-Adressen kann man den Netzwerkverkehr in einem lokalen Netzwerk steuern und filtern. Auch in Routern für den Privatgebrauch finden sich häufig MAC-Filter. Das hat dazu geführt, dass fast alle User und leider auch viele Admins glauben, sie könnten darüber ihr Netz absichern und zum Beispiel private Rechner aussperren.

\".\"Die MAC-Adresse jeder Netzwerkkarte kann verändert werden!

Im Land der Blinden ist der einäugige König

Bei einem NUR auf MAC-Sicherheit basierenden Netz hat ein Hacker leichtes Spiel. Er beobachtet den Netzwerkverkehr mit einem Sniffer und holt sich die MAC-Adressen aus den Netzwerkpaketen. Danach verändert er einfach seine eigene Ethernet-ID. Mit etwas Glück war es das schon, denn auch DHCP-Server benutzen die MAC-Adressen zum Zuordnen der IPs.

Die MAC-Adresse unter Windows-XP ändern.

Am Beispiel einer weit verbreiteten Karte mit Realtek-Chipsatz möchte ich zeigen, wie unter WindowsXP und ähnlich auch unter Vista bzw. Windows2000 die MAC-Adresse verändert werden kann.

1 In der Netzwerkumgebung die Netzwerkverbindungen anzeigen lassen und in der entsprechenden Karte über Rechte Mausaste->Eigenschaften den Konfigurationsdialog aufrufen.

\"*\"

2 Oben bei Verbindung herstellen über auf Konfigurieren klicken. Danach erscheint der Dialog zum Einstellen der jeweiligen Netzwerkkarte, der auch über den Hardwaremanager aufgerufen werden könnte.

\"*\"

3 Auf der Registerkarte Erweitert finden sich verschiedene Einstellungsoptionen. Bei Realtek heißt der Eintrag "Network Address". Bein Intel lautet der Eintrag "Locally Administered Address". Oben rechts muss man nur eine beliebige 12-stellige Hexzahl ohne Leerzeichen oder Verbindungszeichen eingeben. Das ist dann die neue MAC-Adresse.

\"*\"

Die bekannten Hersteller wie 3-Com und Intel liefern auch Tools zum ändern der MAC-Adresse. Für Windows gibt es auch noch das Tool SMAC, das softwareseitig die Adresse ändert. Hab ich aber nicht ausprobiert.

Unter Linux ist das setzen der MAC-Adresse freilich noch einfacher.

\".\" ifconfig «Interface Name» hw ether «neue-mac-adresse»

Links:

01 Dez

Adressdaten visualisieren mit Google Maps

­\"*\"Google.Maps
(maps.google.de) ist aus zwei Gründen bemerkenswert. Erstens
dürfen kommerzielle wie nicht kommerzielle Seiten die Karten
benutzen. Zweitens bietet Google eine API zum individualisierten
Erweitern der Karten mit eigenen Informationen. Im Folgenden möchte
ich euch zeigen, wie so interaktive Landkarten aus Adressdatenbanken
entstehen können. Interessant ist das z.B. für wissenschaftliche Projekte oder aktuelle Trends wie GeoTagging.

Am Anfgang steht die Karte

Um eigene Karten in einer Webseite einzusetzen, muss man sich einen
Schlüssel (api key) bei code.Google.com holen. In der Webseite
wird die Karte in drei Schritten eingebunden.

1: die Scripte für Google-Api werden geladen. Anstelle von XXX muss der eigene Key eingetragen werden.

<script
src=\“http://maps.google.com/maps?file=api&amp;v=2&amp; key=xxx=\“text/javascript\“></script>

2: Wir erstellen einen Bereich mit einem <div>-Container in der gewünschten Größe der map. (Hier 300×200)

<div
id=\“map\“ style=\“width:300px; height:200px; border:
thin solid black;\“>

3: Eine Javascript-Funktion, die nach den Laden der Seite durch body
aufgerufen wird erstellt. Diese Funktion lädt die Karte in den
<div>-Container und setzt den Ausschnitt aud den gewünschen ort und die Vergrößerung.

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById(\“map\“));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}

Notfalls kopiert man sich einfach das Beispiel von Google, das zusammen mit
dem Schlüssel angezeigt wird.

Zusätzlich können wir unsere Map mit weiteren Funktionen versehen. Ein
map.addControl(new GmapTypeControl()) zaubert zum Beispiel einen
Umschalter zwischen Satellitenfotos und Kartenmaterial auf die Map.

Unter
http://code.google.com/apis/maps/documentation/index.html findet ihr die Dokumentation mit vielen Beispielen.

Jetzt kommen die Adressen

Um Objekte weltweit auf der Karte verorten zu können, benutzt
Google ein globales Koordinatensystem (Längengrad und
Breitengrad). Die Position einer Adresse lässt sich direkt
eingeben oder über die eingebaute Adresssuche ermitteln. Das
mache ich mir im Beispiel zu nutze. Ein einfacher http-request
fordert die xml-Datei (adressen.xml) vom Server ab und sendet das
Ergebnis an die Funktion setAllIcons.

http_request.onreadystatechange = setAllIcons;
http_request.open(\’GET\‘, \’adressen.xml\‘, true);

SetAllIcons parsed die Adressen durch und sendet bei jeder Adresse eine Anfrage an den Geocoder. Das Geocoder-Objekt erstellt wiederum an der gefundenen Stelle ein Symbol.

Das Beispiel

\"*\"
Klicken, um das Beispiel aufzurufen

Hier der gesamte Code. Halbwegs versierte Programmierer sollten wenig Probleme damit haben.

<!DOCTYPE HTML PUBLIC \“-//W3C//DTD HTML 4.01 Transitional//EN\“
  \“http://www.w3.org/TR/html4/loose.dtd\“>
<html>
<head>
<title>Google Maps – Geocoder</title>
<meta http-equiv=\“content-type\“ content=\“text/html; charset=iso-8859-1\“>
<meta name=\“generator\“ content=\“HAPedit 3.2\“>
<style type=\“text/css\“>
body,td,a,p,.h {
    font-weight: normal;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #484848;
}

body {
    margin: 5px;
    background-color: #ffffff;
    background-image: url(./grgrad.gif);
    background-repeat: repeat-x;
}
</style>
<!– einbinden der Scripte –>
<script src=\“http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA_tOM59zZ_XsFVVdihujF6hQ-miN1MYoL4dHQNMeu9rS71G8BNxTBwS2oAgwwTEpxApbBCgBxl3rWvg\“  type=\“text/javascript\“></script>
<script language=\“javascript\“ type=\“text/javascript\“>
  <!–
   var map ;
   var icon;
   var n;
   var geocoder;
   var marker=[];
   var point=[];
   var info=[];

   // Wird nach dem Laden automatisch gesartet
   function load()
   {
    if (GBrowserIsCompatible())         // Auf Browserkompatibitit&auml;t pr&uuml;fen
    {
     map = new GMap2(document.getElementById(\“map\“));
     map.enableDoubleClickZoom();
     map.enableScrollWheelZoom();
     var latlng = new GLatLng(52.52348,13.411494) ; // Berlin – Zentrum
     map.setCenter(latlng,11); // 12 = Zoomfaktor f&uuml;r die &Uuml;bersicht bei 750×580

     // Ein Symbol erstellen
     icon = new GIcon();
     icon.image = \“icon.png\“;
     icon.iconSize = new GSize(36, 32);
     icon.iconAnchor = new GPoint(15,15);

     // Hier kommt der AJAX-Aufruf der die Daten einliest – in nserem Fall nur ein Plain-XMLfile
     http_request = false;
     if (window.XMLHttpRequest) { // Mozilla, Safari,…
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType(\’text/xml\‘);
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject(\“Msxml2.XMLHTTP\“);
            } catch (e) {
                try {
                    http_request = new ActiveXObject(\“Microsoft.XMLHTTP\“);
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert(\’Ende 🙁 Kann keine XMLHTTP-Instanz erzeugen\‘);
            return false;
        }
        http_request.onreadystatechange = setAllIcons;
        http_request.open(\’GET\‘, \’adressen.xml\‘, true);
        http_request.send(null);
    } else
    {
     document.getElementById(\“map\“).innerHTML = \“<h1>Der Browser ist nicht kompatibel mit Google Maps. Sorry…</h1>\“ ;
    }
   }

   // Wertet die XML-Daten aus und postioniert die Icons – Wird &uuml;ber den http_request aufgerufen
   function  setAllIcons() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
               // geocoder Objekt von google
               geocoder = new GClientGeocoder() ;
               n = 1;
               // root-Node
               var items = http_request.responseXML.getElementsByTagName(\’adressen\‘);
               for (var i=1;i<items.length;i++) { // arbeite die Adressen ab
                 firma = getNode(items[i],\’firma\‘);
                 ort = getNode(items[i],\’plz\‘)+ \“ \“ + getNode(items[i],\’ort\‘)
                 adresse = getNode(items[i],\’adresse1\‘)
                 info[i] = firma+\“ | \“+adresse;
                 // hole die globale Veortung
                 geocoder.getLatLng( \“germany, \“+ort+\“, \“+adresse, function(point) {
                 if (point) {
                    // Setze neues Symbol
                    marker[n] = new GMarker(point, {icon:icon, title:info[n]} );
                    map.addOverlay(marker[n]);
                    n++;
                  } });
               }
             }
         }
     }

     // hole Wert aus einem Node
     function getNode(obj,tag) {
         return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;

    }

      // –>
   </script>
</head>
<body bgcolor=\“#D1D0CD\“ text=\“black\“ link=\“#444444\“ alink=\“gray\“ vlink=\“#111111\“ onload=\“load();\“ onunload=\“GUnload()\“>
  <span style=\“font-size:18px;\“>&nbsp;Bezirks&auml;mter in Berlin</span>
  <!– ab hier wird die Map dargestellt –>
  <div id=\“map\“ style=\“width: 757px; height:512px; border: thin solid black;\“></div>
</body>
</html>

Unser Beispiel verwendet eine einfache XML-Datei für die Adressdaten
und außer Javascript keine serverseitige Programmiersprache.
Dadurch funktioniert die Seite teilweise auch ohne Webserver. Bei
einer richtigen Datenbank würde man die Position vorher ermitteln
und als Koordinaten abspeichern. Dann würde der AJAX-Aufruf zum
Beispiel an ein PHP, JSP oder Phyton-Script gehen, das nur die
gesuchten Daten samt Position zurückgibt.

Die Daten könnten jetzt mit InfoWindows, die sich beim Klick auf die
Icons öffnen, noch aufgepeppt werden. Ich wollte das Beispiel
aber so einfach wie möglich halten.

Das Beispiel mit Adressen und Bildern hier herunterladen. (gmap.zip)