web-dev-qa-db-fra.com

Comment puis-je obtenir une adresse MAC à partir d'une requête HTTP?

Quelqu'un peut-il me donner des conseils pour récupérer l'adresse MAC de l'utilisateur à partir d'une requête HTTP?

Les utilisateurs proviendront de extérieur mon réseau.

27
Richard.Gale

Cela dépend de la configuration de votre réseau. Mais probablement non.

Voici un petit rappel sur Ethernet et IP. L'adresse MAC est une adresse unique de la carte réseau. Il est utilisé pour identifier pour quel utilisateur sur le segment de réseau un paquet est. Vous pouvez utiliser ARP pour obtenir une adresse MAC pour une adresse IP. Mais cela ne fonctionne comme prévu que si vous êtes sur le même segment de résea.

La question est donc de savoir ce qu'est un segment de réseau? Cela dépend de la technologie que vous utilisez, mais voici les cas les plus courants. Un réseau sans fil complet est un segment de réseau. Chaque utilisateur du réseau peut parler via Ethernet à tout autre utilisateur. Sur les réseaux filaires, cela dépend du matériel. Si vous avez un bon vieux BNC ou un concentrateur, vous avez un segment de réseau avec toutes les utilisations. Encore une fois, chaque utilisateur peut parler à n'importe quel autre. Avec un commutateur dans le réseau, un segment de réseau n'est qu'un câble qui vous connecte au commutateur. Ici, vous ne pouvez parler au commutateur que via Ethernet. Tout autre utilisateur a besoin d'au moins IP.

Dommage que la plupart des situations avec HTTP, qui s'appuie sur TCP/IP, vous n'êtes jamais à 99,99% dans le même segment de réseau que votre utilisateur. Vous pouvez utiliser ARP, mais vous n'obtiendrez que l'adresse MAC du premier saut. C'est mieux, en fonction de votre matériel, vous pouvez même ne pas être sur un réseau IP basé sur Ethernet; ATM par exemple ...

40
rioki

Je ne pense pas qu'il existe un moyen de le faire dans ASP.NET.
MAC est une propriété d'un TCP, et au niveau HTTP il n'y a pas de paquets ou MACs (par exemple, une seule requête HTTP peut être assemblée de plusieurs TCP paquets).

Vous pouvez essayer d'utiliser un renifleur de paquets (comme WireShark) pour capturer les paquets TCP, puis les analyser pour extraire les MAC et les mapper aux requêtes HTTP.

Quoi qu'il en soit, vous n'obtiendrez aucune donnée utile à moins que l'utilisateur ne se trouve dans le même segment de réseau que votre serveur.

UPD. Comme cela a été souligné dans les commentaires, j'ai mélangé les couches réseau. L'adresse MAC est une propriété de trame Ethernet , pas un paquet TCP.
La conclusion est toujours correcte, cependant.

2
VladV

Ce n'est pas possible, sauf si vous avez l'intention de créer un composant ActiveX, auquel cas il ne fonctionnera que sur IE.

0
zahstra