Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrerm

Mac Address do cliente

Recommended Posts

Olá,

 

Tenha uma aplicação Web em C# e estou tentando capturar o Mac Address de quem está acessando.

Consegui apenas ter um retorno do servidor onde está a aplicação

           string retorno = "";
           foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
           {
               if (networkInterface.GetPhysicalAddress().ToString() != "")
                   retorno = networkInterface.GetPhysicalAddress().ToString();
           }

 

Mas o que preciso é capturar o Mac do cliente, alguém sabe como posso fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro,

 

Primeira por questões de segurança você não tem acesso diretamente as configurações da maquina do cliente, você vai conseguir obter algumas informações que é enviada pelo browser na requisição utilizando o ServerVariables.

 

Algumas informações.

http://www.w3schools.com/asp/coll_servervariables.asp

 

Agora se sua aplicação estiver executando em uma intranet e sobre um dominio você tem como pegar todas as informação da maquina do clientes que acessa sua aplicação web usando WMI, um exemplo neste post http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/1344dad4-dffe-486c-bf30-1b75d21fc9ba.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O sistema não é acessado pela Intranet, ele está na Web.

A minha intenção é bloquear o acesso do sistema somente aos Mac´s cadastrados, como são muitos usuários não gostaria de ter que configurar nada nas máquinas para evitar um volume alto de manutenções futuras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente:

Não esqueça da referencia: using System.Management;

 

public string FindMACAddress()
       {
           //create out management class object using the
           //Win32_NetworkAdapterConfiguration class to get the attributes
           //af the network adapter
           ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration");
           //create our ManagementObjectCollection to get the attributes with
           ManagementObjectCollection objCol = mgmt.GetInstances();
           string address = String.Empty;
           //loop through all the objects we find
           foreach (ManagementObject obj in objCol)
           {
               if (address == String.Empty)  // only return MAC Address from first card
               {
                   //grab the value from the first network adapter we find
                   //you can change the string to an array and get all
                   //network adapters found as well
                   if ((bool)obj["IPEnabled"] == true) address = obj["MacAddress"].ToString();
               }
               //dispose of our object
               obj.Dispose();
           }
           //replace the ":" with an empty space, this could also
           //be removed if you wish
           address = address.Replace(":", "");
           //return the mac address
           return address;
       }

Referencia: http://www.dreamincode.net/code/snippet1727.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hi.

 

Bem, digamos que isso não é possível.

 

Nos web apps, o mac address não é passado pela layer do OSI. Se não me engano, ela fica na layer de enlace e não é transmitida para a de transporte.

Ainda que a aplicação esteja em intranet, um mac address só é acessível dentro de uma sub rede, ou seja, não globaliza a intranet como um todo.

 

O que você pode fazer é distribuir um applet pro cliente, e enviar os dados a partir dele. Mas dentro de uma web application, não será possível.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrerm,

 

Se o teu site não é público coloque um sistema de controle de acesso, e forneça o usuário e senha para quem bem lhe entender :D.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel,

 

O sistema já tem controle de acesso por usuário e senha.

Mas como algumas informações são confidenciais e podem ser usadas incorretamente pretendia bloquear pelo Mac Address, dessa maneira ele poderia acessar somente da máquina dele e não seria necessário instalar nada na máquina do usuário para realizar esse controle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andre boa noite,

 

Você conseguiu uma solução? Estou com um site com o mesmo problema de controlar o acesso por MAC.

 

Não consegui.

Realizei o controle somente pelo IP, como o IP da empresa era fixo foi possiível realizar esse controle.

 

Futuramente pretendo estudar outras maneiras de realizar o bloqueio via MAC, talvez seja possível em JavaScript, preciso dar uma olhada.

 

Caso não seja vou ter que solicitar que o usuário instala o aplicativo para validação do MAC, mais ou menos igual é feito por alguns bancos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.