|
proximmon
proximity monitor, fully functional and versed in multiple techniques
|
You will need a C++14 or better compiler; in 2020, these are ubiquitous: Clang 4[^1] or later, gcc 5[^2] or later.
[^1]: See C++ Support in Clang [^2]: See C++ Standards Support in GCC
These are all optional, to obtain the corresponding feature:
If you have all of the dependencies listed above, use:
./configure && make
If you'd like to use the unit test to verify it works:
make check
A sample configuration file is provided in src/proximmon-config.json. It's straightforward; see proximmon-config(5) for more details.
You can run the software directly from the source directory:
./src/proximmon -c "src/proximmon-config.json"
To install it:
sudo make install
Use proximmon's '-?' or '-h' help for a list of options; see proximmon(1) man page for details.
Configuring the build has some options:
--enable-debug (default is --disable-debug) : When enabled, turns on assertions (self-checks in the software), some additional logging and debug compile (-g). These enlarge and slow the code down slightly, but make debugging much, much easier.
--with-ping or --without-ping : Include presence detection of static IPv4 addresses via ICMP Echo (ping). Default is to include it if necessary headers are available.
--with-arp or --without-arp : Include presence detection by monitoring the ARP cache. This tracks dynamically-assigned IPv4 addresses, although it's noiser on the network. It also works as a fallback for ping, which requires root privileges.
--with-bluetooth=package : Chooses a bluetooth package. Options are 'no', 'check' (use one if available), 'yes' (require one or fail to configure), 'osx' (use built-in libraries on macOS Snow Leopard or later), or 'bluez' (a library mostly available on Linux).
Report bugs to perette@deviousfish.com. Include details of what causes the problem, how it exhibits. For crashes, if possible, include a stack dump using gdb, the GNU debugger::
For a hang, attach to an existing process:
ps x | grep pianod 50942 ?? S 8:50.40 /usr/local/bin/pianod gdb -p 50942
For crashes, start proximmon from gdb:
gdb /usr/local/bin/proximmon _insert your options here_ run
When it crashes, gdb will report this and give you a command prompt. (Capture a hang this way by pressing control-C.)
Now, in the gdb console, do the following: (For more on gdb, see the GDB Cheat sheet.)
info args info locals info variables info threads info signals thread apply all where full
Cut-and-paste from the gdb window to your bug report and mail it in.
THIS PROGRAM EXECUTES CODE FROM THE CONFIG FILE. On arrivals or departures, it executes commands you define; if not locked down, there is an avenue of exploitation. Wisely do not run proximmon near privileged information.
For best safety:
proximmon as root, wrap executed commands in 'su - otheruser -c "command"' so they aren't running as root.
1.8.13