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 peret. Include details of what causes the problem, how it exhibits. For crashes, if possible, include a stack dump using te@d eviou sfis h.comgdb
, 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.