mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
* 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>
87 lines
2.2 KiB
Markdown
87 lines
2.2 KiB
Markdown
# 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
|
|
|
|
1. **Get the board file**:
|
|
In order to use these tools you need to create an `encrypted_logs` target in your target board directory. For example:
|
|
```bash
|
|
encrypted_logs.px4board
|
|
```
|
|
Using `make menuconfig` you should enable these settings: `Blake2s hash algorithm`, `entropy pool` and `strong random number generator` and select `use interrupts` to feed timing randomness to the entropy pool.
|
|
Once you have generated the keys make sure you add them to the boardconfig.
|
|
|
|
```bash
|
|
make <your_board_name>_encrypted_logs menuconfig
|
|
```
|
|
|
|
2. **Generate Keys**:
|
|
```bash
|
|
cd PX4-Autopilot/Tools/log_encryption
|
|
python3 generate_keys.py
|
|
```
|
|
|
|
Make sure you have the right key in your board file
|
|
```CONFIG_PUBLIC_KEY1="../../../keys/public/public_key.pub"```
|
|
|
|
3. **Build Firmware**:
|
|
```bash
|
|
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
|
|
```
|
|
|
|
4. **Download Logs**:
|
|
```bash
|
|
cd PX4-Autopilot/Tools/log_encryption
|
|
|
|
python3 download_logs.py /dev/ttyACM0 --baudrate 57600
|
|
|
|
OR
|
|
|
|
python3 download_logs.py udp:0.0.0.0:14550
|
|
```
|
|
|
|
Addresses might need to be adjusted
|
|
|
|
5. **Decrypt Logs**:
|
|
The easiest way to run this is to have your private key and encrypted logs in the following folders respectively:
|
|
```bash
|
|
PX4-Autopilot/keys/private
|
|
PX4-Autopilot/logs/encrypted
|
|
```
|
|
Then run:
|
|
```bash
|
|
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 --help
|
|
```
|
|
|
|
Your decrypted logs can be found in:
|
|
```bash
|
|
PX4-Autopilot/logs/decrypted
|
|
```
|
|
Otherwise
|
|
|
|
## Directory Structure
|
|
|
|
- **`keys/`**: Encryption keys.
|
|
- **`logs/encrypted/`**: Downloaded encrypted logs.
|
|
- **`logs/decrypted/`**: Decrypted logs.
|