0.8: upgraded to libnet 1.1.1 API. Add -DOLD_LIBNET to use old code. 0.7.2: Cancel the ARP sending thread when we found an answer. This was noted by Tollef Fog Heen first as a cosmetic problem, but Alexander Zangerl sent me a patch, so I integrated it. Apparently, there was a race condition on some buggy pcmcia adapters/drivers. 0.7.1: new and improved edit-netscape-proxy.pl ;) It will now edit netscape and links config files, set the netscape proxy type to "user specified" and work if there are no netscape or links config files. 0.7: divine now works with and requires libnet-1.0 (lots of incompatible changes in libnet). Thanks to Chris Kakris for telling me! increased tries before divine gives up to 6 (from 3). 0.6: source IP is not set to 0.0.0.0 Matt Behrens pointed out that divines ARP probes might be enough to poison ARP tables if the IP is already taken. Also, they might set off arpwatch or similar intrusion detection systems. I adopted Matt's suggestion to use 0.0.0.0 as source IP instead. separated ARP probes for own IP from landmark IPs and added a slight delay before the landmark IPs. It is now more probable that the host using my IP answers before the landmark IPs. 0.5.3: updated BUGS section in man page removed warning about using system() from divine.1 0.5.2: several suggestions by Jürgen Vollmer divine now accepts newlines in /etc/divine.conf divine now looks if the IP you would get in that network is already in use. However, this only works if the machine that uses your IP address answers first. A real fix would take a greater change to divine, so I postpone this until someone submits a patch or I actually witness the problem (on my laptop). 0.5.1: use exit code 2 when no answers were found. Thanks to Stefan Luethje for pointing this out. 0.5: changed system() to fork()+execlp() to avoid /bin/sh Divine sets PATH=/sbin:/bin:/usr/sbin:/usr/bin to make sure that ifconfig and route are found. Divine no longer puts the interface in promiscuous mode as this is really not necessary and makes Linux put warning messages in the system log. Documented that divine needs at least Linux 2.1 because of the implicit network route. 0.4.2: the shell script now gets the description from /etc/divine.conf as command line argument. Suggested by Chris. Good idea! 0.4.1: fixed comment in divine.conf.dist Argh! I made extra-sure that I added the fields but forgot to update the comments in 0.3. Thanks again to Chris for pointing this out. 0.4: ported divine to glibc To me this looks like a bug in libnet. The headers define struct ether_addr for libc5 but don't include the file that defines the struct on glibc systems. Anyway, easy fix. Thanks to Chris Kakris for making me fix this ;-) 0.3: first public release changed to POSIX threads, the timeout is finally working now. added external script 0.2: test release changed to libnet and libpcap, so no more external processes (except to set the interface, of course) the timeout code did not seem to work, so divine always hung when no network is detected 0.1: proof of concept release used a slightly hacked arp exploit binary to send the arp requests used tcpdump to read the arp replies on timeout, tried to killall tcpdump and failed for some reason, thus leaving tcpdump processes behind all the time. :(