Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come indentificare il mac address di un utente in PHP

di :: 11 giugno 2022
Come indentificare il mac address di un utente in PHP

In questo articolo vediamo se, e come, sia possibile ottenere il MAC ADDRESS di un utente che sta navigando il nostro sito, utilizzando PHP, in un ambiente Linux.

Cos'è un MAC ADDRESS

E' un identificatore univoco di ogni scheda di rete, che sia ethernet o wireless. E' un codice a 48 bit (6 byte) assegnato in modo univoco dal produttore ad ogni scheda di rete ethernet.

Esistono quindi 2^48 possibili combinazioni, cioè 281.400 miliardi di possibili valori.

Ecco un esempio di indirizzo MAC: c0:bf:c0:89:6a:1e

A noi interessa recuperare il MAC ADDRESS dell'utente che sta visitando il nostro sito, non quindi il MAC ADDRESS del nostro pc.

Possiamo ottenere il MAC ADDRESS di un utente con PHP?

La prima risposta che posso darti è: ni.

PHP non dispone infatti di variabili che consentano di leggere il mac address di un utente, o funzioni native per ottenerlo.

Tuttavia, possiamo superare questo limite utlizzando exec() o shell_exec(), funzioni PHP che consentono di eseguire un comando Linux da PHP.

Devo però darti un'altra pessima notizia. Putroppo non possiamo ottenere l'indirizzo mac di un utente che sta visitando il nostro sito, a meno che non sia in una LAN. Non volevo dirtelo prima, altrimenti non avresti letto questo articolo :-)

Se l'utente è nella stessa LAN possiamo usare il comando ARP (Address Resolution Protocol) che permette di risalire all'indirizzo fisico di una scheda di rete (il MAC Address) corrispondente ad un dato indirizzo IP.

Quindi per prima cosa occorre recuperare l'IP dell'utente. In questo esempio, per comodità, utilizziamo $_SERVER['REMOTE_ADDR'], ma, come sappiamo, non è il modo migliore per ottenerlo. Ho dedicato un articolo approfondito su come ottenere l'IP di un utente in PHP.

Recuperato l'ip dell'utente, tramite shell_exec chiamiamo il comando arp, ed otteniamo l'indirizzo mac

Prima di creare un script, prova a lancare da terminale arp -a così da capire cosa rispode il comando arp. Ecco un esempio.

# arp -a
host71-125-265-82.serverdedicati.mioprovider.com (83.245.136.7) at 00:39:56:a7:6e:f5 [ether] on eth32
host254-125-265-82.serverdedicati.mioprovider.com (83.245.136.254) at 00:39:56:a7:0b:8f [ether] on eth32
host10-125-265-82.serverdedicati.mioprovider.com (83.245.136.10) at 00:39:56:a7:03:3d [ether] on eth32
host4-125-265-82.serverdedicati.mioprovider.com (83.245.136.4) at 00:39:56:a7:f8:78 [ether] on eth32
? (192.168.1.27) at 00:39:56:a7:e1:de [ether] on ens33
host1-125-265-82.serverdedicati.mioprovider.com (83.245.136.1) at 00:00:5e:00:01:04 [ether] on eth32
host23-125-265-82.serverdedicati.mioprovider.com (83.245.136.23) at 00:39:56:a7:c5:4a [ether] on eth32
host2-125-265-82.serverdedicati.mioprovider.com (83.245.136.2) at d0:ef:c0:89:64:1e [ether] on eth32
? (192.168.1.28) at 00:39:56:a7:37:17 [ether] on ens33
host3-125-265-82.serverdedicati.mioprovider.com (83.245.136.3) at d0:ef:c0:89:6a:1e

Adesso vediamo come utilizzarlo in uno script PHP e come recuperare il mac address da questa lista

<?php
$ipaddress = $_SERVER['REMOTE_ADDR'];

$mac = shell_exec("/usr/sbin/arp -a $ipaddress | awk '{print $4}'");

echo "ip: ".$ipaddress.", mac_addr: $mac";
?>

Nello script abbiamo utilizzato awk per manipolare il dato ottenuto, e quindi estrarre il solo mac address.

Inoltre abbiamo utilizzato /usr/sbin/arp, cioè il path completo del programma, e non solo semplicemente arp, perchè chiamato da PHP potrebbe rendere un "command not found".

Anche se probabilmente avresti voluto conoscere il mac address di un utente remoto, ed hai capito di non poterlo ottenere, spero che questo articolo ti sia stato comunque di aiuto.

Stay tuned!

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE