Callboot is a collection of software packages that run on commodity hardware and developer boards. The prototypes use inexpensive dev-boards. The boards range in price from $20 to $60 dollars. The software requires a Caller ID capable modem. The modems cost $10 to $50 dollars. See the hardware list for more details.
Callboot monitors all incoming calls. Suspicious calls are detected using dynamic analysis and call histories. Suspicious calls are terminated by flashing the hook. After flashing a call trace is performed with the carrier. Callboot can optionally play a message requesting the caller to stop calling.
Suspicious calls are reported to Verizon or Comcast's Unlawful Call Center (UCC), the Federal Trade Commission (FTC) and the Federal Communications Commission (FCC). FTC and FCC reporting requires an internet connection. When a call trace is performed then the FTC and FCC are informed a trace is available.
Callboot is tested on a number of dev-board and desktop operating systems. Some operating systems receive more testing than others. The list includes Alpine, Armbian, Debian, DragonFly, Fedora, FreeBSD, kFreeBSD, NetBSD, OpenBSD, OS X, and Ubuntu.
Note: The software builds on DragonFly, but the DragonFly drivers are buggy. The drivers caused unexplained hangs during testing. You should probably avoid DragonFly.
Callboot consists of 11 programs written in C and several scripts. callboot.exe is the main program with the modem loop. It manages the modem, classifies calls, performs logging, initiates traces and files complaints. callboot.exe is started by Systemd at boot time.
The remaining C programs are helpers. There is a callboot-date.exe that adds and subtracts dates so scripts "just work" on various operating systems. There is a callboot-import.exe that imports a whitelist or blacklist. There is a callboot-trim.exe that prunes and compacts the database.
Two important programs are callboot-list.exe and callboot-report.exe. callboot-list.exe shows the last 25 calls in the database. callboot-report.exe reports a caller when the main program mis-classifies a call. Callboot's voice engine invokes callboot-report.exe when a user says "Callboot, report caller."
callboot.exe files FCC and FTC complaints by launching a thread that executes a Python script. The Python script uses Selenium to control the Chrome web browser. Together Python and Chrome complete the appropriate FCC or FTC web-based complaint form.
There are two Bash scripts triggered by a Systemd timer. The first script updates the blacklist definitions every 4 hours. Once a definition is updated for a particular day the script just exits. The second script performs database maintenance once a day at 4:00 AM.
The C programs are clean when compiled with -Wall. The C programs are also subject to static and runtime analysis using Valgrind, Asan and UBsan. All of the programs are clean under Valgrind, Asan and UBsan.
Callboot uses a SQLite3 database to manage call logs, the whitelist and two blacklists. The call log is a list of all incoming calls and actions taken. Actions taken include "no action", trace the call, file a complaint with the FCC and file a complaint with the FTC.
The whitelist is maintained by the user. Entries added to the whitelist are not removed automatically. The Android app automatically adds contacts to the whitelist.
There are two blacklists. The first is a local blacklist, and callers are added explicitly by the user. Callers added to the local blacklist are not removed automatically. The second is a distributed blacklist. The distributed blacklist is downloaded daily if an Internet connection is available. Entries in the distributed blacklist are automatically purged after 90 days.
A database that has been operational for several months is 70 to 100 MB in size. The database schema is available online.
Callboot supports voice commands in lieu of a traditional user interface. Usability studies show seniors uptake voice commands well. The studies also indicate seniors, when given a choice, prefer voice commands over traditional computer skills like logging in, moving a mouse and clicking links.
The program uses CMU's PocketSphinx for voice support. PocketSphinx is a mobile version CMU's Sphinx suite. Callboot has a vocabulary of 42 words. The grammar allows a user to manipulate the whitelist and local blacklist, initiate a call trace, and submit FCC and FTC complaints. Callboot does well when recognizing its commands.
Callboot may move to a different speech engine shortly to improve Type II errors. Type II errors are errors where an unrelated phrase is mapped to a Callboot command. We tried to test Mozilla's DeepSpeech but we were not able to get TensorFlow built and installed on ARM devices. Our next test will involve Kaldi ASR.
The Callboot server runs on a HP Proliant DL360 G5 Server and is powered by Fedora 34 Server. The server is configured with SELinux in enforcing mode. The server hosts the website, serves daily blacklist files, receives telemetry, and provides Git access to the sources over SSH. Eventually Git access will be moved to GitHub.
The server software consists of three Bash scripts and a collections of HTML pages. The Bash scripts are triggered by Systemd timers and perform maintenance, like downloading a blacklist file using cURL or compressing a file with XZ.
The server is patched daily using custom scripts and DNF. Every six months or so the server enjoys a refresh from DNF System Upgrade. Experience has taught us modern Fedora is a better choice than CentOS or Red Hat due to the antique software provided by Red Hat.
Important data is backed up daily to a separate machine.
Callboot sends telemetry data back to our servers for aggregation, analysis and trending and to coordinate activities. The aggregation and analysis allows us to provide "herd immunity", where we can identify and stop some callers based on past activity with other users. The telemetry applies to unknown callers and black-listed callers. Known or white-listed callers are not part of the analysis though this may change in a future update.
Each day new data files are created based on the collected data and distributed to all users. We typically process data for 80,000 to 100,000 calls per day, and the daily data files typically have 1 million to 2 million data points. Users may opt-out of telemetry but we encourage them to participate.
The service regularly coordinates with program managers at various government agencies. Timely event reporting is important so agencies with authority over telephone crimes have accurate information to act upon.