Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

gibt es eine Möglichkeit die MAC-Adresse per Browser auszulesen? Vielleicht mit Java/JavaScript?

Ist für ein Intranet gedacht, keine Router etc. dazwischen.

Gruß

oscha

Geschrieben

IMHO nicht. Seh es grad nicht in den Umgebungsvariablen. Und man kann, glaub ich, auch nicht per JS auf die Registry zugreifen. Du könntest, da du von einem Intranet sprichst und vorausgesetzt, es ist eine homogene Browserlandschaft, ein ActiveX-Modul schreiben. Das könnte eventuell gehen.

Geschrieben
Hallo,

gibt es eine Möglichkeit die MAC-Adresse per Browser auszulesen? Vielleicht mit Java/JavaScript?

Ist für ein Intranet gedacht, keine Router etc. dazwischen.

Gruß

oscha

Bei einem Windows Webserver Würde ich einfach zuerst den client anpingen und dann per "arp" die macadresse holen. Wie die Equivalenten *nix Befehle dazu sind weiss ich leider nicht.

Geschrieben
Heißen genauso. Deine Lösung muß dann halt schon serverseitig laufen, so daß dem Client die Adresse schon mitgegeben wird.

jo PHP läuft meines Wissens auf Serverseite :floet:

einfach per $_SERVER['REMOTE_ADDRR'] anpingen in arp nachsehen auslesen und freuen :)

Geschrieben

Enrico T.:

diese brauche ich, damit die user bei freischaltung für's inet im dhcp eine fest IP eingetragen bekommen.

so sehen sie die adresse sofort und können diese einfacher mitteilen.

An die anderen Freaks ;):

kann mir jemand einen denkanstoss geben??? habe Win32 als Serverplattform.

1. IP bekomme ich mit PHP heraus

2. "arp -a" auf dem server ausführen klappt auch, die ausgabe erscheint

<?php
system("arp -a");
?>[/PHP]

3. Wie vergleiche ich mit PHP die Ausgabe von arp -a mit der dazugehörigen IP?

4. Ausgabe sollte wieder einfach gehen

Geschrieben


<?php

function getMacFromIp( $sIP) {
system("arp -a ". $sIP, $ret);
foreach ( $ret as $line) {
if ( strpos( $line, $sIP) !== false) {
return trim(explode( " ", $line)[3]);
}
}
?>
[/PHP]

versuch ma so

Geschrieben

<?php
$sIP = getenv("REMOTE_ADDR");

system("arp -a ". $sIP, $ret);
foreach ( $ret as $line) {
if ( strpos( $line, $sIP) !== false) {
trim(explode( " ", $line)[3]);
}
?>[/PHP]

Parse error: parse error, unexpected '[' in D:\WAMP\_httproot\mac.php on line 7

Geschrieben

ich steig irgendwie nicht ganz dahinter....

<?php
$ip = getenv("REMOTE_ADDR");

system("arp -a $ip");
if (strpos($line,$ip) != false) {
$cols = explode(' ',$line);
trim($cols[3]);
}
?>[/PHP]

Parse error: parse error, unexpected $end in D:\WAMP\_httproot\mac.php on line 9

Geschrieben

Folgende Fehlermeldung erscheint nu:

Schnittstelle: 192.168.99.254 --- 0x2 Internetadresse Physikal. Adresse Typ 192.168.202.216 00-0b-5d-49-64-c8 dynamisch

Warning: Invalid argument supplied for foreach() in D:\WAMP\_httproot\mac.php on line 6

was hat es mit dem $ret auf sich, wenn diese doch gar nicht deklariert sind?!?

Geschrieben
1. Die Funktion sieht so aus:

string system ( string befehl [, int return_var])

Darum meckert foreach auch, denn es wird ein array erwartet und ein int übergeben.

2.

Wenn Sie auf die direkte Rückgabe/ Ausgabe eines Befehls angewiesen sind, dann benutzen Sie stattdessen die Funktion passthru().

siehe: http://de2.php.net/manual/de/function.system.php

sorry, mein fehler!

ich hab nochma in meinen archiven gekramt, und das hier gefunden:


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)-3 ]);
$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;
}
[/PHP]

  • 8 Jahre später...
Geschrieben

Hallo,

endlich mal jemand der zu diesem Problem ein sinnvolles Script hat, danke @ kills

Leider funktioniert das ganze bei mir nur im internen LAN, ich benötige es aber um die MAC-Adresse im Internet auszulesen. Folgende Problemstellung..:

Für einen Kunden hab ich eine Anwendung zur Gutscheinerfassung und Rabattauszahlung programmiert. Bisher wurden hierfür Gutscheine immer per Post eingesendet und dann durch unsere Mitarbeiter erfasst. Nun wünscht der Kunde aber, dass die Käufer seiner Produkte direkt im Internet Ihre Rabatte anfordern können. Hierfür bin ich nun grade dran die ganze Anwendung etwas umzubauen, so dass der Endkunde im Internet Gutscheincodes von den Produktverpackungen und seine Daten angeben kann und er dann automatisch den Rabatt überwiesen bekommt. Da der Rabatt aber nur ausgezahlt werden soll wenn der Kunde auf ein neues Produkt umsteigt soll sichergestellt sein, dass jeder Kunde nur einmal einen Rabatt anfordern kann. Hierzu sind schon verschiedene Prüfungen eingebaut um den Kunden zu identifizieren (Adresse, Bankverbindung). Da nun aber viele Leute auch mehrere Bankkonten haben und auch bei der Eingabe der Adressen äußerst kreativ sind würde ich als zusätzliche Sicherheit gerne noch eine Prüfung per MAC-Adresse einbauen. Hierzu reicht die Adresse des Hausanschlusses (Router) vollkommen aus. Kennt nun irgendjemand eine Möglichkeit um die MAC über's Internet auszulesen..? Auf irgendeinem Weg muss es ja möglich sein, denn alle Chatbetreiber der Welt führen Benutzersperrungen nicht nur per IP-Adresse oder Benutzernamen, sondern in Extremfällen auch per MAC-Adresse durch. Die Antwort "Geht nicht" könnt Ihr euch also sparen..;-)

Bin wirklich dankbar wenn mir hier jemand den entscheidenden Hinweis geben kann.

Geschrieben (bearbeitet)
Auf irgendeinem Weg muss es ja möglich sein, denn alle Chatbetreiber der Welt führen Benutzersperrungen nicht nur per IP-Adresse oder Benutzernamen, sondern in Extremfällen auch per MAC-Adresse durch. Die Antwort "Geht nicht" könnt Ihr euch also sparen..;-)

Geht nicht, siehe MAC-Adresse

In jedem Frame nach Ethernet-II-Variante wird vor dem Typfeld und den Daten zunächst die MAC-Adresse des Empfängers und des Senders übertragen. Empfänger und Sender müssen Teil des Local Area Networks (LAN) sein. Soll ein Paket in ein anderes Netz geschickt werden, wird es auf Ethernet-Ebene zunächst an einen Router geschickt. Dieser analysiert die Daten auf der untergeordneten Schicht und vermittelt das Paket dann weiter. Er erzeugt dazu einen neuen Ethernet-Frame, wenn es sich bei dem Nachbarnetz ebenfalls um ein Ethernet handelt. Dazu ersetzt ein Router die MAC-Adressen, d. h. wenn Router R1 ein Ethernet-Frame empfängt und es an den Router R2 weitergeben soll, ersetzt R1 die Quelladresse mit seiner eigenen MAC-Adresse und die Zieladresse mit der Mac-Adresse von R2.

Du bekommst zwar eine MAC-Adresse, diese ist aber dann die Adresse des Routers des LANs in dem der Server steht (Details z.B. in den Cisco CCNA Unterlagen) und eine Sperrung auf IP-Ebene ist wohl auch nicht sinnvoll, denn bei den meisten Anbietern wechselt die IP alle 24h bzw. bei einem Reconnect. Eine Sperrung auf IP Ebene macht nur dann Sinn, wenn der User eine statische IP benutzt

Bearbeitet von flashpixx
  • 3 Wochen später...
Geschrieben

Hallo,

info:

Die "Chatbetreiber" könnten nur mittels eines Lokal installiertem Client deine Mac Adresse rauskriegen (siehe Post von Flashpixx) und demnach sperren. Wer macht sowas? Und bringt ja auch nichts, kannst ja einfach deine MAC-Adresse ändern. :) Hatte ich bis jetzt noch nicht gehört.?!

Ich behaupte, die MAC-Adresse des Routers reicht NICHT aus. Denn der Kunde kann sich ja hinter einen anderen Router schalten.

Gruß,

lotmf

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...