Как получить MAC-адрес компьютера посетителя в веб-приложении ASP.NET? - PullRequest
1 голос
/ 31 августа 2009

В ASP.NET (C #) WebApp я могу легко получить IP-адрес ПК посетителей, но как узнать MAC-адрес ПК посетителей в веб-приложении ASP.NET?

И это приложение ASP.NET работает во внутренней сети нашей компании, и посетители также находятся в той же внутренней сети нашей компании.

Ответы [ 4 ]

6 голосов
/ 31 августа 2009

MAC-адрес не является частью IP-заголовка (или любых других протоколов выше этого) и, таким образом, недоступен, если все, что вы видите - это трафик HTTP.

РЕДАКТИРОВАТЬ (после обновления OP): поскольку клиенты и серверы находятся в одной внутренней сети, не лучше ли получить имя хоста по IP-адресу, а не по MAC-адресу? Вы можете легко найти имя хоста на основе IP-адреса.

3 голосов
/ 31 августа 2009

Ответ, который сразу приходит на ум, заключается в том, что это возможно только в том случае, если вы пишете элемент управления ActiveX, который запускается в браузере клиента для получения этой информации от вашего имени. С другой стороны, это может быть возможно с помощью JavaScript на клиенте, если javascript может создавать экземпляр COM-объекта, который будет получать информацию. Единственный другой способ, о котором я могу думать, - это служба Windows, которая выполняет запрос ARP после захвата IP-адреса.

1 голос
/ 31 августа 2009

Поскольку вы находитесь в одной подсети, вы можете P / Invoke GetIpNetTable , чтобы получить таблицу ARP веб-сервера. Если вы делаете это в режиме реального времени, дополнительная работа не требуется - поскольку вы разговариваете с клиентом, у вас будет информация ARP. В противном случае вам нужно будет создать запрос ARP или некоторый IP-трафик (скажем, ap ing ), чтобы получить его в кеше - и обратите внимание, что из-за DHCP и других сетевых капризов (например, переворачивание машины выключено), возможно, что преобразование IP в MAC позже даст другой ответ.

Также обратите внимание, что любые внешние клиенты (то есть клиенты через маршрутизатор) просто не будут отображаться в таблице - так что будьте готовы к этому. Если вам по какой-то причине вам нужен MAC, это технически MAC вашего маршрутизатора.

1 голос
/ 31 августа 2009

Вы не можете легко сделать это. - это протоколы, такие как ARP, которые позволяют трансляцию между MAC-адресами и IP-адресами, но этот трафик обычно находится за брандмауэром и поэтому недоступен для вас на общедоступном веб-сайте.

В интрасети вы можете что-то делать, но не через ASP.NET. Вам понадобится использовать другие механизмы для сбора этой информации, но такие инструменты (например, анализаторы пакетов), как правило, недоступны для разработчиков и могут противоречить корпоративным политикам IS.

...