Ich muss den MAC und die IP-Adresse der Verbindungsclients kennen. Wie kann ich das in PHP tun?
php
mac-address
Neveen
quelle
quelle
Antworten:
Server IP
Sie können die Server-IP-Adresse von erhalten
$_SERVER['SERVER_ADDR']
.Server-MAC-Adresse
Für die MAC-Adresse können Sie die Ausgabe unter
netstat -ie
Linux oderipconfig /all
Windows analysieren .Client-IP-Adresse
Sie können die Client-IP von erhalten
$_SERVER['REMOTE_ADDR']
Client-MAC-Adresse
Die Client-MAC-Adresse steht Ihnen nur unter bestimmten Umständen zur Verfügung: Wenn sich der Client im selben Ethernet-Segment wie der Server befindet.
Wenn Sie also eine Art LAN-basiertes System erstellen und Ihre Clients sich im selben Ethernet-Segment befinden, können Sie die MAC-Adresse erhalten, indem Sie die Ausgabe von
arp -n
(Linux) oderarp -a
(Windows) analysieren .Bearbeiten : Sie fragen in Kommentaren, wie Sie die Ausgabe eines externen Befehls erhalten. Eine Möglichkeit besteht darin, Backticks zu verwenden, z
Aber was ist, wenn sich der Client nicht in einem LAN befindet?
Nun, Sie haben kein Glück, es sei denn, Sie können den Kunden diese Informationen freiwillig zur Verfügung stellen und auf andere Weise übermitteln lassen.
quelle
Die MAC-Adresse eines Clients (im Sinne des Computers, der die HTTP-Anforderung ausgegeben hat) wird von jedem Router zwischen dem Client und dem Server überschrieben.
Die Client-IP wird dem Skript in bequem zur Verfügung gestellt
$_SERVER['REMOTE_ADDR']
. In einigen Szenarien, insbesondere wenn sich Ihr Webserver hinter einem Proxy befindet (dh einem Caching-Proxy),$_SERVER['REMOTE ADDR']
wird die IP des Proxys zurückgegeben , und es gibt häufig einen zusätzlichen Wert, der$_SERVER['HTTP_X_FORWARDED_FOR']
die IP des ursprünglichen Anforderungsclients enthält.Manchmal, insbesondere wenn Sie mit einem anonymisierenden Proxy arbeiten, den Sie nicht kontrollieren, gibt der Proxy nicht die tatsächliche IP-Adresse zurück, und Sie können nur auf die IP-Adresse des Proxys hoffen.
quelle
Ich glaube nicht, dass Sie MAC-Adresse in PHP erhalten können, aber Sie können IP von
$_SERVER['REMOTE_ADDR']
Variable erhalten.quelle
Für Windows Server denke ich, dass Sie dies verwenden können:
quelle
exec
nur `echogetmac
Alles was Sie tun müssen, ist arp in eine andere Gruppe einzuteilen.
Standard:
Mit Befehl:
Sie erhalten:
Und da Apache ein Daemon ist, der unter dem Benutzer www-data ausgeführt wird, kann er diesen Befehl jetzt ausführen.
Wenn Sie jetzt ein PHP-Skript verwenden, z.
Sie erhalten die Ausgabe des Linux-
arp -an
Befehls.quelle
arp
Binärdatei ist redundant undwww-data
verfügt weiterhin über Ausführungsberechtigungen von derother
Umode.Verwenden Sie diese Klasse (https://github.com/BlakeGardner/php-mac-address)
Dies ist eine PHP-Klasse für die Manipulation von MAC-Adressen auf Unix-, Linux- und Mac OS X-Betriebssystemen. Es wurde hauptsächlich geschrieben, um beim Spoofing für drahtlose Sicherheitsüberprüfungen zu helfen.
quelle
Wenn der Benutzer in Windows Ihr Skript lokal verwendet, ist dies sehr einfach:
quelle
Sie können die folgende Lösung verwenden, um Ihr Problem zu lösen:
quelle
Wir können MAC-Adresse in Ubuntu auf diese Weise in PHP erhalten
quelle
Abrufen der MAC-Adresse mithilfe von PHP: (Getestet in Ubuntu 18.04) - Update 2020
Hier ist der Code:
Ausgabe:
quelle
Möglicherweise ist das Abrufen der Mac-Adresse nicht der beste Ansatz, um den Computer eines Clients über das Internet zu überprüfen. Verwenden Sie stattdessen ein Token, das durch die Anmeldung eines Administrators im Browser des Clients gespeichert wird.
Daher kann der Client dieses Token nur haben, wenn der Administrator es ihm über seinen Browser gewährt. Wenn das Token nicht vorhanden oder gültig ist, ist der Computer des Clients ungültig.
quelle
Mit diesem Code können Sie die MAC- Adresse oder die physische Adresse abrufen
Ich habe explode oft verwendet, weil shell_exec ("ipconfig / all") vollständige Details des gesamten Netzwerks zurückgibt . Sie müssen also eins nach dem anderen teilen. Wenn Sie diesen Code ausführen, erhalten Sie
Ihre MAC-Adresse 00 - ## - ## - CV-12 // Dies ist eine gefälschte Adresse, die nur angezeigt werden soll.
quelle
Dies funktioniert für mich unter Windows, ebenso
ipconfig /all
wie der Windows-Systembefehl.quelle
Unter Linux mit iptables können Sie jede Anfrage an einen Webserver mit Mac-Adresse und IP in einer Datei protokollieren. von PHP Lookup letzten Artikel mit IP-Adresse und Mac-Adresse erhalten.
Denken Sie daran, dass die Mac-Adresse vom letzten Router in der Ablaufverfolgung stammt.
quelle
Sie können dies einfach mit openWRT tun. Wenn Sie ein Captive-Portal verwenden, können Sie PHP und OpenWRT mischen und eine Beziehung zwischen der IP und dem Mac herstellen.
Sie können einen einfachen PHP-Code schreiben mit:
Wenn Sie später openWRT verwenden
/tmp/dhcp.leases
, erhalten Sie etwas mit dem Formular:Dort haben Sie den Mac, die IP-Adresse und den Hostnamen.
quelle