wakearp.exe is a small console utility that very quickly sends UDP packets to all the hosts within a specified /24 network. This causes the arp table on your machine to fill with data about these hosts, which can then be seen via 'arp -a'.
I had originally had this working with a few command flags... (/A /B /C for network sizes, for instance), but quickly discovered that sending 2^16 udp packets in a few seconds, each to a different invalid host IP, is a very good way to make Windows XP very, very angry.
C:\>arp -a Interface: 192.168.2.100 --- 0x4 Internet Address Physical Address Type 192.168.2.1 00-13-10-26-d1-39 dynamic C:\>wakearp 192.168.2 Trying 192.168.2.0 through 192.168.2.254. Done! Responses from 192.168.2.0 to 192.168.2.254 should now be in 'arp -a' C:\>arp -a Interface: 192.168.2.100 --- 0x4 Internet Address Physical Address Type 192.168.2.1 00-13-10-26-d1-39 dynamic 192.168.2.2 00-02-b3-bf-2e-3e dynamic 192.168.2.10 00-02-b3-bf-2e-3e dynamic 192.168.2.50 00-02-b3-bf-2e-3e dynamic C:\>
wakearp-with-src.zip - source + executable
wakearp.exe - just the exe
wakearp.zip - just the exe
wakearp-linux - binary and source for linux. Compiled under (gcc version 3.3.5 (Debian 1:3.3.5-2))