My company has two offices, connected trough a VPN:
Office1 10.0.192.X 255.255.254.0 --> VPN router 10.0.192.2 -> Office2 10.0.128.X 255.255.254.0
So when I launch Netscan from Office1 and check the 10.0.128.x range, I can see the computers, their IP, host name, but not 95% of MAC address.
If I launch Netscan from Office2 to Office2 network I can see all the MAC addresses.
Seems that going through the VPN router, somehow blocks the MAC address recognition in most cases...
We employ a few methods related to MAC address resolution as can be seen in the application:
The ARP query method sends an ARP packet to the target device to resolve its MAC address directly. This doesn't work across routers.
The NetBios query method sends a NetBios packet to the target device. If the target device responds to the request, the response will contain the MAC address of that device. This works across routers, but only with the PCs that support it - that the 5% MAC addresses you do see.
The WMI query method connects to the WMI subsystem on the target computer and analyses the Win32_NetworkAdapterConfiguration class to find out its MAC address. This may work across router, but you would need to have access to the remote PCs WMI.
The Router SNMP MIB query method. If your remote network's router supports SNMP, this can be configured to pull IP-to-MAC address mappings from that router.
Overall, I am afraid there isn't a simple way to discover MAC address in a non-local network. Method #1 doesn't work, method #2 works with few devices, and methods #3 and #4 may require some additional configuration.