Una ricerca di indirizzo MAC parte da 48 bit e sei ottetti, e quasi tutti gli errori derivano dall'ignorare due bit all'interno del primo ottetto. Il bit I/G indica se il frame è unicast o multicast. Il bit U/L indica se il prefisso è assegnato globalmente o amministrato localmente. Sbagliare questi bit fa sì che una ricerca del produttore restituisca assurdità con sicurezza.
Questa guida copre la struttura dei byte, la numerazione dei bit che trae in inganno, perché i dispositivi moderni randomizzano i loro indirizzi, come un indirizzo a 48 bit diventa un identificatore di interfaccia EUI-64 per il link-local IPv6, e gli errori che uno strumento di ricerca dovrebbe segnalare invece di indovinare. Non afferma che alcun indirizzo appartenga a un dispositivo reale; gli strumenti qui analizzano e generano valori sintetici.
La struttura a 48 bit
Un indirizzo MAC-48 è composto da sei ottetti, 48 bit, solitamente scritto come sei coppie esadecimali. I primi tre ottetti sono l'Organizationally Unique Identifier, l'OUI, assegnato dall'IEEE a un produttore. Gli ultimi tre sono assegnati da quel produttore, anche se in pratica molti vendor li derivano da un numero di serie o da una fonte casuale.
Le cifre esadecimali sono scritte con il bit più significativo per primo nella forma testuale, ma l'IEEE trasmette ogni ottetto con il bit meno significativo per primo sul filo. Questa discrepanza è il motivo per cui il primo ottetto è l'unico punto in cui la numerazione dei bit confonde tutti: il bit 0 nello standard indica il bit meno significativo di quel primo ottetto così come scritto, non il bit più a sinistra della stringa.
- Lunghezza totale: 48 bit, 6 ottetti, 12 cifre esadecimali
- OUI: i primi 24 bit, assegnati dall'IEEE
- Porzione NIC: gli ultimi 24 bit, assegnati dal titolare dell'OUI
- Forma testuale: nibble più significativo per primo all'interno di ogni ottetto
- Ordine sul filo: ogni ottetto trasmesso con il bit meno significativo per primo
Il primo ottetto: I/G e U/L
Due bit nel primo ottetto hanno un significato. Il bit 0 è il bit Individual/Group: zero indica un indirizzo unicast per una singola interfaccia, uno indica un indirizzo di gruppo o multicast. Il bit 1 è il bit Universal/Local: zero indica che l'indirizzo è amministrato globalmente sotto un OUI, uno indica che è stato assegnato localmente, tipicamente dal software.
Poiché le cifre esadecimali sono quattro bit, questi due bit sono sempre codificati nell'ultima cifra esadecimale del primo ottetto. Ecco perché il secondo carattere del primo ottetto è sempre pari per un indirizzo unicast e dispari per un indirizzo multicast, e perché indirizzi unicast amministrati localmente con pattern come 02, 06, 0A, 0E, 12 e simili compaiono come primo ottetto degli indirizzi Wi-Fi randomizzati.
| Primo ottetto | Binario | I/G | U/L | Significato |
|---|---|---|---|---|
| 00 | 0000 0000 | 0 unicast | 0 globale | Interfaccia normale assegnata da OUI |
| 02 | 0000 0010 | 0 unicast | 1 locale | Amministrato localmente, spesso randomizzato |
| 01 | 0000 0001 | 1 multicast | 0 globale | Gruppo multicast standard |
| 03 | 0000 0011 | 1 multicast | 1 locale | Multicast con ambito locale |
| 33 | 0011 0011 | 1 multicast | 1 locale | MAC multicast IPv6, prefisso 33:33 |
| FF | 1111 1111 | 1 multicast | 1 locale | Frame broadcast |
OUI, EUI-48 e la separazione globale/locale
L'OUI è un'assegnazione a 24 bit. Quando il bit U/L è zero, i primi tre ottetti identificano l'assegnatario e una ricerca nel registro IEEE è significativa. Quando il bit U/L è uno, i primi tre ottetti sono stati scelti dal dispositivo o dal sistema operativo e nessuna voce di registro può esistere, per quanto plausibile possa sembrare il prefisso.
L'IEEE assegna anche blocchi a 36 bit nel registro MA-S, che condividono i primi 24 bit con altri assegnatari e aggiungono altri quattro bit nel terzo ottetto. Una ricerca che controlla solo i primi tre ottetti attribuirà quegli indirizzi al titolare sbagliato. Se la precisione è importante, verifica la dimensione dell'assegnazione prima di fidarti del nome del produttore.
- MA-L a 24 bit: OUI classico, tre ottetti, il caso comune
- MA-M a 28 bit: condivide un blocco a 24 bit con altri assegnatari
- MA-S a 36 bit: condivide un blocco a 24 bit, aggiunge quattro bit del terzo ottetto
- Bit U/L impostato: salta del tutto il registro, non c'è alcun assegnatario
Indirizzi randomizzati e perché le ricerche ora falliscono
I sistemi operativi moderni ruotano gli indirizzi Wi-Fi. iOS e macOS usano un indirizzo privato per rete, Android randomizza per SSID e Windows offre indirizzi hardware casuali. Tutti questi impostano il bit U/L, che è il segnale onesto che il prefisso non è un'allocazione del produttore. Le ricerche che ignorano il bit produrranno un nome di produttore per un prefisso che nessuno ha mai ricevuto.
La randomizzazione rompe anche le assunzioni nei controlli di rete. Un filtro MAC non è autenticazione, perché l'indirizzo è impostato via software sulla maggior parte delle piattaforme. La stessa proprietà rende gli indirizzi MAC inutili come identificatore stabile del dispositivo nelle analisi. Se il tuo prodotto lega una licenza o un record di dispositivo a un indirizzo MAC, si frammenterà su ogni rete che ruota gli indirizzi e può essere falsificato banalmente.
- Indirizzo randomizzato: bit U/L impostato, prefisso scelto localmente
- La rotazione per rete significa che il valore non è un ID stabile del dispositivo
- Il filtro MAC è banale da aggirare e non è controllo di accesso
- Macchine virtuali e container spesso ereditano o generano prefissi locali
- Analizza sempre i bit prima di consultare un registro dei produttori
EUI-64 e l'identificatore di interfaccia link-local IPv6
EUI-64 trasforma un indirizzo a 48 bit in 64 bit in tre passaggi: separa l'OUI e la porzione NIC, inserisce FF:FE tra di essi e inverte il bit U/L. L'inserimento fornisce 16 bit extra di lunghezza; il bit invertito mantiene coerente il significato universal/local nella forma a 64 bit, motivo per cui il risultato è chiamato EUI-64 modificato.
Il risultato è comunemente usato come identificatore di interfaccia di un indirizzo link-local IPv6, che risiede sempre in fe80::/10 e richiede sempre un indice di zona come uno scope id quando ti connetti. Le estensioni per la privacy sostituiscono questo identificatore con uno casuale per gli indirizzi globali, ma la forma derivata compare ancora nella documentazione, nelle configurazioni di laboratorio e negli inventari dei dispositivi.
| Passaggio | Valore | Spiegazione |
|---|---|---|
| MAC di partenza | 00:1A:2B:3C:4D:5E | EUI-48 a 48 bit |
| Inserisci FF:FE | 00:1A:2B:FF:FE:3C:4D:5E | EUI-64 a 64 bit |
| Inverti bit U/L | 02:1A:2B:FF:FE:3C:4D:5E | Il primo ottetto 00 diventa 02 |
| Formato IPv6 | fe80::21a:2bff:fe3c:4d5e | Link-local con quell'id di interfaccia |
Formati testuali e come analizzarli
Gli stessi 48 bit compaiono in almeno quattro notazioni. Unix e Windows usano coppie separate da due punti. Windows a volte usa i trattini. Cisco usa tre gruppi di quattro cifre esadecimali separati da punti. Alcuni strumenti emettono maiuscole, altri minuscole, e altri rimuovono del tutto i separatori. Un parser dovrebbe normalizzarli tutti e rifiutare qualsiasi cosa che non sia esattamente 48 bit.
La normalizzazione è importante per il confronto ma non per la conservazione dell'originale. La notazione con due punti in minuscolo è la forma canonica più portabile. Se accetti una stringa esadecimale nuda di 12 cifre, sii esplicito al riguardo, perché accettarla silenziosamente consente a un utente di incollare un identificatore esadecimale di 16 cifre che non è affatto un indirizzo MAC.
| Stile | Esempio | Fonte comune |
|---|---|---|
| Due punti | 00:1a:2b:3c:4d:5e | Linux, macOS, la maggior parte delle API |
| Trattino | 00-1a-2b-3c-4d-5e | Windows, alcune apparecchiature di rete |
| Cisco puntato | 001a.2b3c.4d5e | IOS e CLI correlate |
| Hex nudo | 001a2b3c4d5e | Log e CSV, ambiguo |
| Maiuscolo | 00:1A:2B:3C:4D:5E | Documentazione, etichette |
Errori che una ricerca dovrebbe segnalare
Una buona ricerca distingue "questo è malformato" da "questo è amministrato localmente" da "questo prefisso è valido ma l'assegnatario non è nel registro locale". Ridurre tutti e tre a "sconosciuto" fa perdere tempo al chiamante, perché le correzioni sono completamente diverse.
Gli errori di lunghezza sono i più comuni: cinque ottetti, sette ottetti o un EUI-64 a 64 bit incollato in un campo a 48 bit. Seguono gli errori di carattere, di solito una O al posto di uno zero o una I al posto di un uno da OCR. Poi ci sono i casi logici: indirizzi multicast, l'indirizzo broadcast e prefissi amministrati localmente, ognuno dei quali è sintatticamente valido e semanticamente speciale.
| Sintomo | Causa | Gestione corretta |
|---|---|---|
| Cinque ottetti | Incolla troncato | Rifiuta con un errore di lunghezza |
| Contiene O o I | OCR o errore di battitura | Rifiuta come esadecimale non valido |
| Bit U/L impostato | Assegnazione randomizzata o locale | Salta il registro |
| Bit I/G impostato | Indirizzo di gruppo | Non è un indirizzo di dispositivo |
| FF:FF:FF:FF:FF:FF | Broadcast | Rifiuta come indirizzo di interfaccia |
| 16 cifre esadecimali | EUI-64 fornito | Rifiuta o converti esplicitamente |
Generare fixture MAC che non possano collidere
Per i dati di test, genera sempre indirizzi unicast amministrati localmente: imposta il primo ottetto a 02 e mantieni il bit I/G a zero. Questa combinazione è garantita non appartenere a nessun produttore, quindi una fixture non può mai essere scambiata per un dispositivo reale, e uno strumento di ricerca dirà correttamente che il prefisso è locale invece di inventare un produttore.
Gli strumenti MAC del sito operano sulla struttura a 48 bit e non pretendono di identificare hardware reale. Analizzano i bit, mostrano l'OUI come bit anziché come garanzia del produttore e possono derivare una forma EUI-64. Nota che il sito non genera indirizzi di dispositivi Bluetooth o altri identificatori a 48 bit al di fuori degli strumenti MAC in stile Ethernet, e non genera affatto numeri di serie.
- Usa 02 come primo ottetto per indirizzi unicast sintetici
- Non generare mai un OUI di un produttore reale più una porzione NIC casuale
- Mantieni le fixture in un prefisso documentato in modo che siano ricercabili
- Non usare gli indirizzi MAC come identificatori stabili del dispositivo nemmeno nei test
Domande
- Quarantotto bit, sei ottetti, solitamente scritti come sei coppie esadecimali. EUI-64 estende lo stesso schema a 64 bit inserendo FF:FE e invertendo il bit U/L.
- Il suo bit basso è il bit I/G, quindi un secondo carattere pari indica unicast e uno dispari indica multicast. Il bit successivo è il bit U/L, motivo per cui 02 indica un indirizzo amministrato localmente.
- L'indirizzo è probabilmente randomizzato. I sistemi operativi moderni impostano il bit U/L per gli indirizzi Wi-Fi privati e nessun produttore è assegnato a un prefisso locale.
- No. È impostato via software sulla maggior parte delle piattaforme, ruota per rete su telefoni e laptop ed è banale da falsificare. Non basare licenze o analisi su di esso.
- No. Analizza struttura e bit, e una ricerca nel registro può riflettere solo le assegnazioni dei prefissi, non se un dispositivo esiste. Il sito non verifica l'hardware.
Quanti bit ci sono in un indirizzo MAC?+
Cosa mi dice il secondo carattere del primo ottetto?+
Perché una ricerca del produttore non restituisce nulla per il mio dispositivo?+
Un indirizzo MAC è un identificatore affidabile del dispositivo?+
Lo strumento può dirmi se un indirizzo MAC è reale?+
Gli esempi sono sintetici. Non usare un indirizzo generato per verifiche di identità, registrazione di account o consegne.