cbcontrol(8)
β¨ cbcontrol(8) β¨
okay so bestie, welcome to the cbcontrol man page, section 8, and honestly? it's giving backstage-pass-to-the-Crypto-Bone energy π
π NAME π
cbcontrol β literally the super-user sidekick that makes the Crypto Bone do stuff π
πΈ SYNOPSIS πΈ
cbcontrol command [ args ]
π¦ DESCRIPTION π¦
so here's the tea, bestie π cbcontrol is a process that runs under the super-user UID, and it gets commands from a GUI program called cryptobone2. when it gets those commands it does one of two things: either it relays them to an external Crypto Bone over an encrypted SSH link to a certain, fixed IP address, or it just... processes them itself, implementing a virtual Crypto Bone as a separate super-user process. and here's the iconic part β the commands for the virtual Crypto Bone and the external Crypto Bone are identical. no cap.
the GUI (which is running under the ordinary user UID, not the scary one) sends commands to this script via the sudo mechanism, and then cbcontrol executes these special commands using either the cryptobone daemon on the same machine (ALL-IN-ONE mode) or sends the commands to an external device (the cryptoboneexternd daemon) via a dedicated ssh tunnel (EXTERNAL mode). two modes, one queen π
the Crypto Bone software separates the user's GUI from the working of the "engine" β and that engine is the one taking care of encrypted message transport (via safewebdrop scripts) and decryption of incoming webdrop messages and attachment files, using and updating AES keys that are provided by the cryptobone daemon and stored in the database by the daemon. teamwork fr fr π«Ά
and now the part that lowkey matters the most: all cleartext files (messages and attachments) live inside a ramdisk that can be accessed by the root user only. so the GUI has to send the appropriate commands via sudo to cbcontrol to have the task completed with access to the ramdisk that is inaccessible to everyone except the super-user root. that's the whole vibe check right there π₯
π COMMANDS π
a command is executed only if the authentication with a local secret has been successful. this local secret is stored in the Linux file system.
the authentication information is provided by the program /usr/lib/cryptobone/getlocalsecret and it must match a stored hash of the local secret. if it doesn't match? the Crypto Bone does nothing. literally nothing. it just sits there π
almost all commands make use of the encrypted data base of secrets, which is accessible only when the cryptobone daemon (/usr/lib/cryptobone/cryptoboned) has been started at boot time. the communication between the cryptobone daemon and cbcontrol is performed through a UNIX socket (as root).
these are the commands that can be sent to a Crypto Bone daemon through the UNIX socket:
USEALLINONEβ switches to use of the ALL-IN-ONE mode. commands are executed by the software on the client machine that runs the GUI.USECRYPTOBONEβ switches to use the EXTERNAL device. commands are executed on an external device using asshtunnel to the external device with a dedicated IP address.BONEIPβ stores the IP address of the external device in the client machine in/usr/lib/cryptobone/cbb.configGETALLINONEβ reads the status of the Crypto Bone system.DELETEβ removes the stored IP address for an external device.COPY_EXTERNAL_SECRETSβ reads the secrets that have been generated by an external device into the client's database to enable the use of the GUI in EXTERNAL mode.ATTACHMENT LISTβ reads the list of attachment files that are present in the ramdisk.ATTACHMENT COPY fileIDβ writes a copy of the attachment file into the user's home directory in$HOME/.safewebdrop
this is necessary to use the attachment file with the system's helper programs, because the user has no access to the ramdisk directly.
ATTACHMENT DELETE fileIDβ deletes the attachment file in the ramdisk.DEBUGβ shows the output of the command"systemd status cryptoboneexternd"on the external device for debugging purposes.EXTERNAL STATUSβ reads the status of the external device.FETCHβ starts the process of downloadingsafewebdropmessages and attachment files from thesafewebdropserver. this is done automatically every 30 seconds while the GUI is in active use.KEY USE safewebdropaddress initialsecretβ resets a formerly used or new contactsafewebdropaddress to an initial value. this destroys all message keys currently in use for the contactsafewebdropaddress. the only way to continue the conversation is for the contact person to do a reset with the same initial secret for your ownsafewebdropaddress, too. β οΈ no going back on this one bestie.KEY RECIPIENTLISTβ provides a list of all registeredsafewebdropaddresses of contactsMESSAGE COPY messageIDβ writes a copy of the message into the user's home directory in$HOME/.safewebdrop. the user is warned that copying reduces the protection on the message content, because the clear text message is no longer restricted to the ramdisk.NETWORK STATUS CONNECTβ shows the output ofifconfigfor the ethernet adapter. applies to the external Crypto Bone only.NETWORK STATUS FIREWALLβ shows the status of the internal packet filter firewall. applies to the external Crypto Bone only.NETWORK STATUS PINGβ checks the connection to a certain registered host on the internet to record connectivity information.POWEROFFβ performs a"shutdown -h now"on the external Crypto Bone. applies to the external Crypto Bone only. the virtual Crypto Bone usesSYSTEM POWEROFFto destroy all information in the local ramdisk.REBOOTβ performs a reboot on the external Crypto Bone. applies to the external Crypto Bone only.READ DESTROY messageIDβ deletes the message from the list and deletes it in the ramdisk.READ MESSAGELISTβ writes a list of message names to stdout.READ MESSAGE messageIDβ writes the specified base64-encoded message in plain text to stdout.READ WEBDROPLISTβ writes a list of original encrypted webdrop file names to stdout.READ WEBDROP webdropIDβ writes the specified original encrypted webdrop text to stdout.SETUP WIDβ writes the content of the user'ssafewebdropuser name to stdout.SETUP WEBDROPβ writes the currentsafewebdropsetup to stdout.SETUP WEBDROPUSER usernameβ sets the user name for asafewebdropaddress that can be used to exchange encrypted messages.SETUP WEBDROPSERVER servernameβ sets thesafewebdropserver name where the username is registered as a valid user.SETUP WEBDROPSECRET passwordβ sets the password used to protect the RSA private key, which thesafewebdroptransport needs to sign requests for thesafewebdropserver. this information is stored in the database and can only be read by the super-user. πSETUP REGISTERβ attempt a registration ofWEBDROPUSER%WEBDROPSERVERat thesafewebdropserver with the credentials stored in the database.SETUP REGISTRATIONβ writes the registration code which was returned by thesafewebdropserver to stdout.STATUSβ writes"active"to stdout if the masterkey is present or"waiting"if not.SYSTEM SUSPENDβ blocks the use of the encrypted secrets data base by renaming the masterkey. applies to the external Crypto Bone only.SYSTEM RESUMEβ enables the use of the encrypted secrets data base, if the masterkey was suspended. applies to the external Crypto Bone only.SYSTEM POWEROFFβ destroys all information stored in the RAM disk. not used by the external Crypto Bone. it usesPOWEROFForREBOOTinstead.SYSTEM RESTARTβ initialises the ramdisk similar to the boot process of an external Crypto Bone. this command is used only by the virtual Crypto Bone.WRITE safewebdrop_address base64stringβ starts the process of encrypting and sending the encrypted message (and attachment file) to the specified recipient'ssafewebdropaddress after processing the base64-encoded plain text string. a message will only be sent out if a message key for the recipient'ssafewebdropaddress is in the data base and if the message can be AES encrypted with this key successfully. two conditions, no shortcuts π«
π FILES π
/usr/lib/cryptobone/cbcontrol/usr/lib/cryptobone/cbcontrol.functions/usr/lib/cryptobone/getlocalsecret/usr/lib/cryptobone/secrets.sock/usr/lib/cryptobone/ssh.sock/usr/lib/cryptobone/database/usr/lib/cryptobone/getlocalsecret/usr/bin/cryptobone
(yes, /usr/lib/cryptobone/getlocalsecret really is listed twice β iconic behaviour, we don't gatekeep π
)
β SEE ALSO β
cryptoboned(8)
π AUTHORS π
cbcontrol has been written by Ralf Senderek <innovation@senderek.ie>. slay.
π BUGS π
of course there aren't bugs, but if you find any, please sent them to innovation@senderek.ie. (that's the manpage's words, not mine β but bestie, if you do find one, you know where to send it π)
and that's the whole page, babe π this cbcontrol(8) goodness comes to you from Ralf Senderek, page cbcontrol(8) β go forth and control your Crypto Bone, main character energy only β¨π¦πΈ
π¦ where this page comes from
- fedora 43: cryptobone 2.0-3.fc43 Β· BSD-3-Clause and Sleepycat and OpenSSL
- fedora 43: cryptobone 2.2-3.fc43 Β· BSD-3-Clause and Sleepycat and OpenSSL
- fedora 44: cryptobone 2.0-5.fc44 Β· BSD-3-Clause and Sleepycat and OpenSSL
- fedora 44: cryptobone 2.2-3.fc44 Β· BSD-3-Clause and Sleepycat and OpenSSL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms