J'ai besoin de connaître le MAC et l'adresse IP des clients connectés, comment puis-je faire cela en PHP ?
Comment obtenir la sortie de arp -a en utilisant php ?
J'ai besoin de connaître le MAC et l'adresse IP des clients connectés, comment puis-je faire cela en PHP ?
Vous pouvez obtenir l'adresse IP du serveur à partir de $_SERVER['SERVER_ADDR']
.
Pour l'adresse MAC, vous pourriez analyser la sortie de netstat -ie
sous Linux, ou ipconfig /all
dans Windows.
Vous pouvez obtenir l'IP du client à partir de $_SERVER['REMOTE_ADDR']
L'adresse MAC du client ne sera pas disponible pour vous, 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 un réseau local et que vos clients sont sur le même segment Ethernet, alors vous pourriez obtenir l'adresse MAC en analysant la sortie de arp -n
(linux) ou arp -a
(Windows).
Modifier Vous demandez dans les commentaires comment obtenir la sortie d'une commande externe - l'une des façons est d'utiliser des backticks, par exemple
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
Eh bien, vous n'avez pas de chance, à moins que le client ne vous donne volontairement cette information et ne la transmette par d'autres moyens.
@paulDixon Bonjour, c'est un vieux post, et je me demande s'il y a un nouveau moyen d'obtenir l'adresse Mac ?
@jcho360 Il n'est toujours pas possible d'obtenir l'adresse MAC d'un client. Je ne m'attends pas à ce que cela se produise de toute façon, car l'adresse MAC n'a pas de valeur de communication et ne sera donc pas préservée dans l'en-tête de requête het.
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'IP du client est commodément fourni au script dans $_SERVER['REMOTE_ADDR']
. Dans certains cas, notamment si votre serveur web se trouve derrière un proxy (c'est-à-dire un proxy de mise en cache) $_SERVER['REMOTE ADDR']
renverra l'adresse IP de la proxy et il y aura une valeur supplémentaire, souvent $_SERVER['HTTP_X_FORWARDED_FOR']
qui contient l'adresse IP du client de la demande originale.
Parfois, notamment 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.
Il ne faut jamais dire jamais :) Vous pouvez faire le lien entre le client et le serveur avec javascript.
Regardez ce lien Recherche de MAC en Javascript
En utilisant le code javascript ci-dessus et en modifiant les autorisations de sécurité. Mettez le résultat dans une variable, et envoyez la valeur MAC par (avec Jquery), Ajax à votre fichier PHP `.
var detected= "00:FF:AB:CC:DD" ;
$.post("MAC-log.php", { id : detected} ) ;
L'adresse mac n'est visible que sur les réseaux locaux, vous pouvez accéder à l'adresse mac de n'importe quel appareil en dehors de son réseau local, par exemple votre adresse mac sera stockée et visible dans votre routeur wifi local, et en dehors de celui-ci, tous les appareils de votre réseau utiliseront et communiqueront avec la même adresse IP, que le routeur traduira en adresse mac et enverra en interne.
Tout ce que vous avez à faire est de placer arp dans des groupes différents.
Par défaut :
-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*
Au commandement :
sudo chown root:www-data /usr/sbin/arp
vous obtiendrez :
-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*
Et comme apache est un démon fonctionnant sous l'utilisateur www-data, il est maintenant capable d'exécuter cette commande.
Donc si vous utilisez maintenant un script PHP, par exemple :
<?php
$mac = system('arp -an');
echo $mac;
?>
vous obtiendrez la sortie de linux arp -an
commandement.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
L'adresse IP de quoi ? Du client qui est connecté ?
2 votes
Adresse du serveur ou d'un visiteur ?
14 votes
Dans quel but voulez-vous l'adresse MAC ? Savez-vous qu'elle peut être modifiée par l'utilisateur ?
0 votes
@EJP J'ai un cas d'utilisation pour l'adresse MAC. Je veux servir des informations différentes en fonction de l'appareil qui demande la page Web. Existe-t-il un autre moyen d'obtenir des informations uniques sur l'appareil qui demande la page ?