* Added the board configs for encryption, I had to disable smbus and px4 io in the arkv6x * Added the key generator script * Added the decryptor, logs are needed for it though * Added the log download and modified the decryptor * Quick fixes & README * Additional modifications & cleanup * Tested upd connection Adjusted the log downloader to handle multiple entry responses from the FC Edited README * Reverted IP address change * Added pycryptodome to the requirements.txt * fixes for log download and decryption * Removed old log decryptors and updated README * Pointed the ark borads to the dummy key updated the README accordingly * Adjusted the folders in README, removed new lines * Extended command line arguments for all possibilities for description * Added MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES after heartbeat received to make sure log request is answered in all cases * Update Tools/log_encryption/README.md Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * Update Tools/log_encryption/README.md Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * Update Tools/log_encryption/README.md Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * Update Tools/log_encryption/README.md Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> * Edited README, changed the serial connection logic and updated logdownload, made decryption a bit easier to understand * Update Tools/log_encryption/README.md Co-authored-by: Hamish Willee <hamishwillee@gmail.com> * Removed new lines * arkv6x: add individual mags to default.px4board --------- Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com> Co-authored-by: Alex Klimaj <alex@arkelectron.com> Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
PX4 Log Encryption Tools
Tools for generating encryption keys, building PX4 firmware with encrypted logs, downloading logs, and decrypting them.
For more information see: https://docs.px4.io/main/en/dev_log/log_encryption.html
Usage
-
Get the board file: In order to use these tools you need to create an
encrypted_logstarget in your target board directory. For example:encrypted_logs.px4boardUsing
make menuconfigyou should enable these settings:Blake2s hash algorithm,entropy poolandstrong random number generatorand selectuse interruptsto feed timing randomness to the entropy pool. Once you have generated the keys make sure you add them to the boardconfig.make <your_board_name>_encrypted_logs menuconfig -
Generate Keys:
cd PX4-Autopilot/Tools/log_encryption python3 generate_keys.pyMake sure you have the right key in your board file
CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub" -
Build Firmware:
cd PX4-Autopilot AND make <your_board_name>_encrypted_logs FOR INSTANCE make_ark_fpv_encrypted_logs Upload the custom firmware on your flight controller and record some logs -
Download Logs:
cd PX4-Autopilot/Tools/log_encryption python3 download_logs.py /dev/ttyACM0 --baudrate 57600 OR python3 download_logs.py udp:0.0.0.0:14550Addresses might need to be adjusted
-
Decrypt Logs: The easiest way to run this is to have your private key and encrypted logs in the following folders respectively:
PX4-Autopilot/keys/private PX4-Autopilot/logs/encryptedThen run:
cd PX4-Autopilot/Tools/log_encryption AND # Uses default key + default folder python3 decrypt_logs.py OR # Use --help to get all the options python3 decrypt_logs.py --helpYour decrypted logs can be found in:
PX4-Autopilot/logs/decryptedOtherwise
Directory Structure
keys/: Encryption keys.logs/encrypted/: Downloaded encrypted logs.logs/decrypted/: Decrypted logs.