[PHP] MAC Adresse auslesen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von My-Doom, 23. September 2008 .

Schlagworte:
  1. 23. September 2008
    MAC Adresse auslesen

    Hy,
    Ich bin grade dabei Schulnetzwerkintern etwas zu basteln.
    Erstmal geht es darum, die macadresse des rechners auszulesen (später dann in ne db schreiben), der getmac.php aufruft.
    in dieser steht derzeit:
    PHP:
    <? php
     
    function  getMac  $Ip ) {
          if (
    strtoupper ( substr ( PHP_OS 0 3 )) ===  'WIN' ) {
             
    $output  shell_exec ( "nbtstat -a  $Ip " );
             
    $output  explode ( "\n" , $output );
             
    $mac_line  explode  ( "=" $output sizeof ( $output )- ]);
             
    $sMacAddress  trim ( $mac_line [ 1 ]);
          } else {
             
    $location  = ` which arp `;
             
    $arpTable  = ` $location  \n  $Ip `;
             
    $arpSplitted  split ( "\n" , $arpTable );
       
             foreach (
    $arpSplitted  as  $value ) {
          
                
    $valueSplitted  split ( " " , $value );
          
                foreach (
    $valueSplitted  as  $spLine ) {
             
                   if (
    preg_match ( "/ $Ip /" , $spLine )) {
                      
    reset ( $valueSplitted );
                
                      foreach (
    $valueSplitted  as  $spLine ) {
                         if (
    preg_match ( "/[0-9a-f][0-9a-f][:-]" .
                                        
    "[0-9a-f][0-9a-f][:-]" .
                                        
    "[0-9a-f][0-9a-f][:-]" .
                                        
    "[0-9a-f][0-9a-f][:-]" .
                                        
    "[0-9a-f][0-9a-f][:-]" .
                                        
    "[0-9a-f][0-9a-f]/i" , $spLine )) {
                            
    $sMacAddress  $spLine ;
                            break;
                         }
                      }
                   }
                }
             }

          }
          return 
    $sMacAddress ;
          }
    print 
    getmac ( $REMOTE_ADDR );
    ?>
    Die Ausgabe ist allerdings die MAC des Proxys in der Schule (auch wenn er in keinem browser der beteiligten pcs eingetragen ist)

    Verrät mir jemand wo der Fehler ist bzw. Warum nur die proxy-mac rauskommt?

    (Mir ist bewusst, dass die mac adresse aufm iso-osi Layer ist und php da eigentlich kein Zugriff drauf hat - aber über den arp umweg sollte es doch eigentlich funktionieren?)
     
  2. 23. September 2008
    AW: MAC Adresse auslesen

    Vielleicht uebergibst du der Funktion einfach die falsche IP
     
  3. 23. September 2008
    AW: MAC Adresse auslesen

    scherzkeks; danke xD

    Hab auch schon obendrüber (übter print getmac...) $ip=getenv("REMOTE_ADDR"); probiert. Gibt auch einfach die proxy mac aus.

    Und wenn ich direkt ne IP Übergebe (print getmac('10.34.7.69') gibts gar keine ausgabe mehr..

    grüße

    My-Doom
    (php noob)
     
  4. 23. September 2008
    AW: MAC Adresse auslesen

    was passiert eigentlich wenn du das command selber in die konsole eingibst? vielleicht parst deine Funktion nur den output falsch.
     
  5. 23. September 2008
    AW: MAC Adresse auslesen

    wie geb ich so nen command in die konsole ein? (also die funktion)

    Code:
    my-doom@try1:~$ php -f /opt/lampp/htdocs/getmac/index.php
    sh: -n: not found
    00:E0:81:4B:3E:A8
    aber was an dem -n falsch ist, weiß ich leider nicht.
    (e: macht man aus dem -n nen \n, gibt er nur noch die (proxy) mac aus=

    Hilfe ???
     
  6. 23. September 2008
    AW: MAC Adresse auslesen

    Ich nehm mal an du hast die Funktion gar nicht selbst geschrieben

    Rennt das PHP Script auf ner windows oder einer Linuxkiste?

    start -> ausfuehren -> cmd, dort
    nbtstat -a [ip] eingeben.

    nbtstat gibts nur unter windoof.
     
  7. 26. September 2008
    AW: MAC Adresse auslesen

    Läuft derzeit auf beidem. Hauptsächlich soll es aber auf linux laufen bzw. das script liegt auf nem linux server, und die clienten sind sowohl windows, als auch unix user.

    nbstat kenn ich gar nicht. und auch meine win cmd gibt "unbekannter befehl"(Sinngemäß) aus.

    update:
    Hab es ja bis jetzt immer nur mit meinem laptop probiert.. Habs heut in der Schule nochmal auf verschiedenen Rechnern probiert.
    Ergebnis: Hab auf meinem Ubuntu laptop via lampp nen apache (mit php) emuliert, wo die obe zitierte index.php läuft.
    Dann zuerst mit nem anderen Schulpc auf dem Suse läuft, das Skript ohne Proxy aufgerufen.
    Und oh wunder, oh wunder: Es wurde die richtige MAC adresse ausgegeben.
    Öffne ich jetzt das script von irgendeinem anderen PC (Probiert: Mein Ubuntu Laptop, zwei Schul Windows kisten), gibt das script nur noch die mac des zuerst erwähnten Schul-Suse-Rechners..
    :?

    Update2:
    getmac($sMacAdrr) macht ja wenig sinn - wenn ich der Funktion des übergebe, was sie selber ausgeben soll..

    Deshalb problem nun: getmac($REMOTE_ADDR) gibt keine Ausgabe mehr. Auf keinem pc..

    ???

    Kann mir hier nicht iiiirgendwer sagen, wie ich über ne scriptsprache, plattformunabhängig, übern browser, die MAC Adrrs des Clients rausfinde, der das script öffnet ?(
     
  8. 26. September 2008
    AW: MAC Adresse auslesen

    hab 2 seiten gefunden wobei diese: Mac Adresse auslesen - Seite 2 @ PHP - tutorials.de: Tutorial, Forum, Anleitung & Hilfe
    auf: MAC-Adresse auslesen per Browser

    verlinkt. Und in der 2ten steht wohl anscheinend die lösung!

    gruß
    gl
     
  9. 26. September 2008
    AW: MAC Adresse auslesen

    danke fürs (nochmal) suchen, aber oben steht doch genau diese funktion. Funktionieren tut sie leider nicht.
     
  10. 26. September 2008
    AW: MAC Adresse auslesen

    Ich weiss was dein Hauptproblem ist.

    Die Schulpcs gehen alle ueber einen Proxy.

    Scheinbar habt ihr einen so genannten transparenten Proxy, der auf dem Gateway laeuft. Sollte dem so sein, hast du wohl Pech.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.