como obter o endereço MAC do computador remoto

6

Eu tenho uma situação específica. Eu quero obter o endereço MAC de um computador remoto, que não está no domínio. Eu sei o nome do host e endereço IP do computador remoto. O endereço IP do meu computador é 192.168.2.40 e o IP do computador remoto é 192.168.2.41.

Eu tentei:

arp -a <remote IP Address>
No ARP entries found.

nbtstat -n <remote hostname>
Host not found.

getmac /s <remote IP Address>
ERROR: The RPC server is unavailable.

É possível obter o endereço MAC do sistema remoto a partir da linha de comando, do powershell ou de outra coisa? Quais condições precisam ser definidas? Obrigado.

    
por culter 25.07.2012 / 14:44

9 respostas

6
O

nmap retornará o endereço MAC, bem como qualquer outra coisa que você gostaria de saber.

Se você tiver acesso de administrador à máquina, o powershell & Os wmi são muito úteis para obter diagnósticos remotos. Ambos possuem extensa documentação em technet.microsoft.com

edit: isso pressupõe uma máquina windows, que pelo jeito, pode não ser.

    
por 25.07.2012 / 15:52
6

Os endereços MAC são coisas de Ethernet, não de Internet. Um computador nem precisa ter um endereço MAC. A única maneira de obter o endereço MAC é colocar algum computador na mesma LAN que o computador para informá-lo a você. E você não tem como saber que está dando a informação correta.

Se vocês dois estiverem na mesma LAN Ethernet, você poderá apenas ping do computador e, em seguida, procurar na sua tabela ARP. Caso contrário, você teria que perguntar a um computador na mesma LAN Etherent / Wifi.

    
por 25.07.2012 / 14:47
6

Você pode obtê-lo do WMI e qualquer idioma que possa ler o WMI poderá acessá-lo. VBScript, JScript, Perl, Python e Powershell podem ser usados para chegar a ele.

Já que você perguntou especificamente sobre o Powershell, aqui está um exemplo do link :

param ( $Computer , $Credential )
#to make it work without parameters
if($Computer -eq $null) { $Computer = $env:COMPUTERNAME }
#program logic
$hostIp = [System.Net.Dns]::GetHostByName($Computer).AddressList[0].IpAddressToString
if($Credential) {
    $Credential = Get-Credential $Credential
    $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -Credential $Credential -ComputerName $Computer
} else {
    $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -ComputerName $Computer 
}
return ($wmi | where { $_.IpAddress -eq $hostIp }).MACAddress
    
por 25.07.2012 / 14:50
3

sim. A maneira mais fácil deve ser apenas fazer um ping e, em seguida, verificar a tabela ARP

Se você está mais interessado em obter material inventariado e reportado, eu sugiro que você dê uma olhada no software gratuito da Spiceworks ( link ) Para configurar o monitoramento constante upp e sempre ter suas informações facilmente disponíveis sobre o seu inteiro enovorenment.

Eu usei isso por anos e funciona muito bem em LAN.

Ele tem alguns problemas com o envio de inventários para sites remotos, mas ainda não descobri o porquê, mas além disso, eu recomendo strongmente.

    
por 25.07.2012 / 15:11
2

Se você souber o nome do caminho de facilidades do computador, será:

$strComputer ="ComuterName"
$colItems = Get-WmiObject -Class "Win32_NetworkAdapterConfiguration" -ComputerName $strComputer -Filter "IpEnabled = TRUE"
ForEach ($objItem in $colItems)
{
    write-host "IP Address: " $objItem.IpAddress[0]  "Mac: " $objItem.MacAddress
}

Script mais avançado que pode pegar qualquer máquina por IP ou nome de host:

$device = "192.168.106.123"
if ( $device | ? { $_ -match "[0-9].[0-9].[0-9].[0-9]" } )
{
    echo "Searching MAC by IP"
    $ip = $device
} 
else 
{
    echo "Searching MAC by host"
    $ip = [System.Net.Dns]::GetHostByName($device).AddressList[0].IpAddressToString
}
    $ping = ( new-object System.Net.NetworkInformation.Ping ).Send($ip);


if($ping){
    $mac = arp -a $ip;

    ( $mac | ? { $_ -match $ip } ) -match "([0-9A-F]{2}([:-][0-9A-F]{2}){5})" | out-null;

    if ( $matches )
     {
        $matches[0];
    } else 
    {
      echo "MAC Not Found"
     }
}
    
por 17.02.2014 / 12:58
2

O MAC é o OSI Layer 2 - você não o obterá diretamente quando houver um salto de Camada 3 no meio - e por razões de segurança todos os protocolos para consultar tais dados não devem ser permitidos em nada além da própria LAN ...

    
por 21.02.2014 / 14:57
2

Embora o que está acima seja um pouco complicado, se você não tiver entradas encontradas depois de um ping, será necessário ativar o roteamento e o acesso remoto nos serviços, o que provavelmente está desativado. Em seguida, vá para um prompt de comando e emita um arp -a para ver seu cache, use arp -a <IP> para esse endereço MAC da máquina.

    
por 10.04.2015 / 14:19
0

Você pode tentar isso:

nbtstat -A 192.168.2.41

Você obterá o endereço MAC remoto na resposta gerada (bem detalhada).

    
por 17.02.2014 / 12:33
0

"nmap -v -A [nome do host / endereço IP]" pode ser sua melhor escolha; O SO UNIX para o cliente pode tê-lo disponível nativamente; mas o nmap também está disponível para clientes Windows ...

    
por 17.09.2015 / 23:17