34

I know the IP address of a host on my own LAN. Using that, how can I find its MAC address (without having to physically access it)?

10 Answers 10

46

If you are on a Windows machine, open a command box (Start...Run...cmd), ping the target machine so you have made contact with it, and then issue the command arp -a to view your local ARP table, which will list IP addresses and their corresponding MAC addresses, e.g.,

C:\Users\L3K> arp -a

Interface: 192.168.200.128 --- 0xb
  Internet Address      Physical Address      Type
  192.168.200.1         00-50-7f-c3-5c-88     dynamic
  192.168.200.2         00-50-7f-d1-e1-40     dynamic
  192.168.200.6         00-80-77-dd-a8-6b     dynamic

If you are on a Linux-based system, install the arp-scan utility, and then from a command line you can ask for a scan of your network - in my case:

sudo arp-scan 192.168.200.0/24

If you are using an interface other than Ethernet, say, wireless, you will need to specify that, such as

sudo arp-scan -I wlan0 192.168.200.0/24

If you don't know what interface you're using, simply use the appropriate command below.

ifconfig  (For Debian based OS such as Ubuntu)
ip link   (For OS like Arch Linux)
  • 13
    Will work only if other host is on the same LAN segment. – AnonymousLurker Oct 1 '12 at 6:49
  • @Linker3000, What's the point of ping before arp -a? – Pacerier Nov 10 '15 at 16:23
  • 4
    @Pacerier - the arp command shows the contents of the Address Resolution Protocol cache, which maps IP addresses to the hardware (mac) addresses . If you haven't contacted the target ip address, then it won't be in the cache. Ping is a simple way to contact it to add it to the cache. You could use any network command, it's just ping is an easy one. – Kevin Jones Dec 9 '15 at 11:33
19

The command arping comes with the iputils package on linux. Specify an ip address to ping and it returns the MAC address, even across switches and subnets on the LAN (at least it does on our LAN).

# arping -c 1 -I eth0 10.100.10.11
ARPING 10.100.10.11 from 10.100.10.25 eth0
Unicast reply from 10.100.10.11 [00:22:68:88:F3:90]  0.594ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
  • 1
    In Debian, there are 2 packages: arping and iputils-arping. The arping package worked for me, though network interface is specified with a lower-case i: arping -c 1 -i eth0 10.100.10.11 – chronos Feb 25 '15 at 11:11
8

Try

getmac /s hostname

or:

getmac /s IP

You need admin access to the machine to do this.

  • Why not just use arp -a which doesn't need admin access? – Pacerier Nov 10 '15 at 16:22
2

If you have a managed switch or your router lets you view its ARP table you can get this from there.

If the computer you have the IP for is online you can ping it and get its MAC from you local ARP table.

A general note for the sake of others: it is not possible to obtain the MAC address for machines that are on a different LAN since Layer 3 protocols are used for addressing and delivery in this case and MAC is Layer 2.

  • Didn't really give him any instructions on "how" to do this. – GregD Feb 13 '11 at 14:03
  • 2
    In the case of viewing it on the router, you just go to the web interface and hunt around. Can't be much more specific than that since every router has a different layout and set of pages for its web admin. Seems like a harsh -1 to me, especially since I gave more info than MaQleod. – imoatama Jul 29 '11 at 14:23
2

just use something like:

nmap -n -sP 192.168.146.0/24

after adapting the params to your setup this will scan your whole subnet giving IP and MAC addrs

1

You can use utility like http://trogonsoftware.com/trogon-mac-scanner.html or another ip\mac address scanner to scan network for addresses of remote computers on LAN.

  • There are many free options as well... searching for "IP scanner" – JoshP Oct 1 '12 at 12:53
1

If both your machine and the target machine are on the same subnet, you can just ping it to cause its IP⟷MAC association to be registered via Address Resolution Protocol (ARP).

ping -c1 $IP
arp -n | grep $IP

for example if I want to find the IP of 10.1.135.150:

# ping -c1 10.1.135.150
PING 10.1.135.150 (10.1.135.150) 56(84) bytes of data.
64 bytes from 10.1.135.150: icmp_seq=1 ttl=64 time=1.88 ms

--- 10.1.135.150 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.883/1.883/1.883/0.000 ms

Then query the ARP table

# arp -n | grep 10.1.135.150
10.1.135.150             ether   8c:ae:4c:f4:4d:e1   C                     eth0

So the MAC of 10.1.135.150 is 8c:ae:4c:f4:4d:e1

0

As long as there is no gateway routing the traffic between the computers, any sniffer would give you this information.

  • Thanks for the answer Ofir. As a sub-question, is there a way of doing this if the host in question is down? Yes, I could query my own host's ARP cache, but it unfortunately doesn't currently contain the IP I'm interested in. So I was wondering if there's a way to somehow extract say an intermediary router's ARP cache and look up in that? – Frederick Sep 15 '10 at 8:20
0

You can always consult the arp table on your router (in some cases, the router combines the arp and dhcp lease tables together).

  • Exactly what I'm looking for, but what tools or commands will help me do that? – Frederick Sep 15 '10 at 8:22
  • But wait a minute, I am on the same LAN, so there won't be any router right? – Frederick Sep 15 '10 at 8:25
  • Typical LANs will have at least one router. Depending on the router, you have different options of how to get it. Most home routers you need to access it using the Web Interface in order to find that information, more complex routers will let you telnet in or query via the console port in order to get that information. – MaQleod Sep 15 '10 at 8:31
0

Another way is:

nbtstat -a 192.168.1.1

(replace 192.168.1.1 with desired address)


Also, if getmac is used on a non-Windows computer, you'd get:

ERROR: The RPC server is unavailable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.