2010-07-22 21 views
23

Qualcuno può darmi qualche suggerimento su come prelevare l'indirizzo MAC dell'utente da una richiesta HTTP?Come posso ottenere un indirizzo MAC da una richiesta HTTP?

Gli utenti saranno dallo all'esterno della rete.

+0

hi, Scusa, ho dimenticato di dirti che si tratta di un sito di asp.net. Cheers –

+0

possibile duplicato di [Ottieni l'utente del sito Web MAC di ASP.NET.] (Http://stackoverflow.com/questions/1342738/get-the-mac-of-asp-net-website-user) – Oded

+0

- 1 Ho già risposto alla domanda precedente di Richard (http://stackoverflow.com/questions/3308258/iis7-restrict-website-access-by-mac-address). –

risposta

37

Dipende dalla configurazione della rete. Ma probabilmente no.

Ecco un breve aggiornamento su Ethernet e IP. L'indirizzo MAC è un indirizzo univoco della scheda di rete. Viene utilizzato per identificare per quale utente sul segmento di rete è un pacchetto. È possibile utilizzare ARP per ottenere un indirizzo MAC per un indirizzo IP. Ma questo funziona come previsto solo se si è nello stesso segmento di rete.

Quindi la domanda è, che cos'è un segmento di rete? Dipende dalla tecnologia che usi, ma qui ci sono i casi più comuni. Un'intera rete wireless è un segmento di rete. Ogni utente della rete può comunicare tramite Ethernet a tutti gli altri utenti. Sulle reti basate su cavi, questo dipende dall'hardware. Se hai un buon vecchio BNC o un hub hai un segmento di rete con tutti gli usi. Ancora una volta ogni utente può parlare con qualsiasi altro. Con un interruttore nella rete un segmento di rete è solo il cavo che ti collega allo switch. Qui puoi solo parlare con lo switch tramite Ethernet. Ogni altro utente ha bisogno di almeno IP.

Peccato che la maggior parte delle situazioni con HTTP, che si basa su TCP/IP, non si sia mai del 99,99% nello stesso segmento di rete dell'utente. È possibile utilizzare ARP, ma otterrà solo l'indirizzo MAC del primo hop. È meglio, a seconda dell'hardware, potrebbe non essere nemmeno su una rete IP basata su Ethernet; ATM ad esempio ...

+6

Ciao Sean, grazie per aver confuso ulteriormente la situazione! lol, no sul serio, buon post informativo, evviva –

+0

Huh? Wha? A meno che non si utilizzi una tecnica che può essere considerata come violazione della privacy di base degli utenti, come l'installazione di un plugin/active-x/tojan sul sistema dell'utente, la risposta è: ** No, Tecnicamente impossibile **. Ho solo provato a spiegare perché ... Forse tu o qualcun altro puoi imparare e capire ... – rioki

+1

Penso che questo non sia del tutto corretto: le porte dello switch non sono lo stesso segmento, tuttavia si può parlare via Ethernet tra switch diversi porti. C'è una cache ARP su uno switch per questo. – EFraim

0

Questo non è possibile, a meno che non si intenda creare un componente ActiveX, nel qual caso funzionerà solo su IE.

+0

Un componente activeX non sarebbe fuori discussione, ma l'indirizzo MAC sarà utilizzabile? –

+0

utilizzabile per cosa? – nos

+0

convalida rispetto a un valore contenuto nel database? –

1

Non penso che ci sia un modo per farlo in ASP.NET.
MAC è una proprietà di un pacchetto TCP e sul livello HTTP non ci sono pacchetti o MAC (ad esempio, una singola richiesta HTTP può essere assemblata con diversi pacchetti TCP).

Si potrebbe provare a utilizzare uno sniffer di pacchetti (come WireShark) per acquisire pacchetti TCP e quindi analizzarli per estrarre i MAC e associarli alle richieste HTTP.

In ogni caso, non sarà possibile ottenere dati utili a meno che l'utente non si trovi nello stesso segmento di rete del server.

UPD. Come è stato sottolineato nei commenti, ho mescolato i livelli di rete. L'indirizzo MAC è una proprietà di Ethernet frame, non un pacchetto TCP.
La conclusione è ancora corretta, tuttavia.

+4

L'indirizzo MAC è in un pacchetto tcp? Da quando? Gli indirizzi MAC provengono da un livello di trasporto molto più basso e nemmeno dall'intestazione del pacchetto ip. –

+0

Sì, gli indirizzi MAC sono di livello molto basso –

+0

Ciò che intendeva era un pacchetto in generale. Nel caso di TCP non hai pacchetti, è un flusso. Nel caso di IP hai dei frame ... E normalmente non puoi accedere a nessuno di questi nel codice della modalità utente. – rioki

Problemi correlati