J'ai besoin de connaître le MAC et l'adresse IP des clients de connexion, comment puis-je faire cela en PHP?
php
mac-address
Neveen
la source
la source
Réponses:
IP du serveur
Vous pouvez obtenir l'adresse IP du serveur à partir de
$_SERVER['SERVER_ADDR']
.Adresse MAC du serveur
Pour l'adresse MAC, vous pouvez analyser la sortie de
netstat -ie
sous Linux ouipconfig /all
sous Windows.Adresse IP du client
Vous pouvez obtenir l'adresse IP du client à partir de
$_SERVER['REMOTE_ADDR']
Adresse MAC du client
L'adresse MAC du client ne vous sera pas disponible sauf dans une circonstance particulière: si le client est sur le même segment Ethernet que le serveur.
Donc, si vous construisez une sorte de système basé sur LAN et que vos clients sont sur le même segment Ethernet, vous pouvez obtenir l'adresse MAC en analysant la sortie de
arp -n
(linux) ouarp -a
(windows).Edit : vous demandez dans les commentaires comment obtenir la sortie d'une commande externe - une façon est d'utiliser des backticks, par exemple
Mais que faire si le client n'est pas sur un réseau local?
Eh bien, vous n'avez pas de chance si vous ne pouvez pas demander au client de fournir cette information et de la transmettre par d'autres moyens.
la source
L'adresse MAC d'un client (au sens de l'ordinateur qui a émis la requête HTTP) est écrasée par chaque routeur entre le client et le serveur.
L'adresse IP du client est commodément fournie au script dans
$_SERVER['REMOTE_ADDR']
. Dans certains scénarios, en particulier si votre serveur Web est derrière un proxy (c'est-à-dire un proxy de mise en cache),$_SERVER['REMOTE ADDR']
il renverra l'IP du proxy , et il y aura souvent une valeur supplémentaire$_SERVER['HTTP_X_FORWARDED_FOR']
qui contient l'IP du client de la requête d'origine.Parfois, en particulier lorsque vous avez affaire à un proxy anonyme que vous ne contrôlez pas, le proxy ne renvoie pas la véritable adresse IP, et tout ce que vous pouvez espérer est l'adresse IP du proxy.
la source
Je ne pense pas que vous puissiez obtenir une adresse MAC en PHP, mais vous pouvez obtenir une adresse IP à partir d'une
$_SERVER['REMOTE_ADDR']
variable.la source
Pour le serveur Windows, je pense que vous pouvez utiliser ceci:
la source
exec
uniquement `echogetmac
Tout ce que vous avez à faire est de mettre arp dans un groupe différent.
Défaut:
Avec commande:
tu auras:
Et comme apache est un démon s'exécutant sous l'utilisateur www-data, il est maintenant capable d'exécuter cette commande.
Donc, si vous utilisez maintenant un script PHP, par exemple:
vous obtiendrez la sortie de la
arp -an
commande linux .la source
arp
binaire est redondant,www-data
il a toujours des autorisations d'exécution de l'other
umode.Utilisez cette classe (https://github.com/BlakeGardner/php-mac-address)
Il s'agit d'une classe PHP pour la manipulation d'adresses MAC au-dessus des systèmes d'exploitation Unix, Linux et Mac OS X. il a été principalement écrit pour aider à l'usurpation d'identité pour les audits de sécurité sans fil.
la source
Sous windows, si l'utilisateur utilise votre script localement, ce sera très simple:
la source
Vous pouvez utiliser la solution suivante pour résoudre votre problème:
la source
Nous pouvons obtenir l'adresse MAC dans Ubuntu de cette manière en php
la source
Obtenir l'adresse MAC à l'aide de PHP: (Testé dans Ubuntu 18.04) - Mise à jour 2020
Voici le code:
Production:
la source
Peut-être qu'obtenir l'adresse Mac n'est pas la meilleure approche pour vérifier la machine d'un client sur Internet. Envisagez d'utiliser un jeton à la place qui est stocké dans le navigateur du client par la connexion d'un administrateur.
Par conséquent, le client ne peut avoir ce jeton que si l'administrateur le lui accorde via son navigateur. Si le jeton n'est pas présent ou valide, la machine du client n'est pas valide.
la source
Vous pouvez obtenir l' adresse MAC ou l' adresse physique en utilisant ce code
J'ai utilisé exploser plusieurs fois parce que shell_exec ("ipconfig / all") renvoie les détails complets de tout le réseau. vous devez donc les séparer un par un. lorsque vous exécutez ce code, vous obtiendrez
votre adresse MAC 00 - ## - ## - CV-12 // c'est une fausse adresse pour le spectacle uniquement.
la source
Cela fonctionne pour moi sur Windows, tout comme la
ipconfig /all
commande système Windows.la source
sous linux en utilisant iptables, vous pouvez enregistrer dans un fichier chaque demande au serveur Web avec l'adresse mac et l'ip. à partir du dernier élément de recherche php avec l'adresse IP et obtenir l'adresse mac.
Comme indiqué, rappelez-vous que l'adresse mac provient du dernier routeur sur la trace.
la source
Vous pouvez le faire facilement en utilisant openWRT. Si vous utilisez un portail captif, vous pouvez mélanger php et openWRT et établir une relation entre l'IP et le mac.
Vous pouvez écrire un code PHP simple en utilisant:
Plus tard, en utilisant openWRT vous pouvez aller
/tmp/dhcp.leases
, vous obtiendrez quelque chose avec le formulaire:Là, vous avez le mac, l'adresse IP et le nom d'hôte.
la source