Add P25 voice decryption support (AES-256, DES-OFB, ADP/RC4)#1112
Draft
blantonl wants to merge 3 commits intoTrunkRecorder:masterfrom
Draft
Add P25 voice decryption support (AES-256, DES-OFB, ADP/RC4)#1112blantonl wants to merge 3 commits intoTrunkRecorder:masterfrom
blantonl wants to merge 3 commits intoTrunkRecorder:masterfrom
Conversation
Adds find_unit_tag_ota() through the UnitTags/System interface to resolve over-the-air aliases for unit IDs. The OTA alias is propagated via the tag_ota field in Call_Source, included in call JSON output, and sent as the srcId_alias field in Broadcastify uploads. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Provides a downloadable patch for users who want to test the feature before it is merged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Port complete decryption stack from OP25 into trunk-recorder's bundled op25_repeater library. Supports real-time decryption of encrypted P25 voice traffic for Phase 1 (FDMA) and Phase 2 (TDMA), provided the encryption key is known and configured. Encryption keys are specified per-system via a dedicated JSON file referenced in config.json as "encryptionKeysFile". Changes: - Add p25_crypt base types, abstract algorithm class, and factory - Add AES-256 OFB, DES-OFB, and ADP/RC4 algorithm implementations - Replace monolithic p25_crypt_algs with extensible factory pattern - Wire crypt_key/crypt_reset through p25_frame_assembler_impl to p25p1_fdma and p25p2_tdma (the critical missing link) - Add encryption key file loading to System config - Pass keys to frame assembler on call start - Include example encryption_keys.json
Contributor
|
I like this idea to add the functionality for decryption. Unsure how to best test this. I guess best way is to just make sure non-encrypted calls aren't affected and all other current functionality stays the same. |
Contributor
|
I have a system I can test this on. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
config.jsonas"encryptionKeysFile"Key changes
p25_crypt_aes,p25_crypt_des,p25_crypt_adp) with abstract base class and factory patterncrypt_key()/crypt_reset()throughp25_frame_assembler_impltop25p1_fdmaandp25p2_tdma— the critical missing link that was preventing decryption from workingConfiguration
Add
encryptionKeysFileto your system config:{ "systems": [{ "type": "p25", "encryptionKeysFile": "/path/to/keys.json", ... }] }Key file format (see
examples/encryption_keys.json):{ "keys": [ { "keyid": "0x0001", "algid": "0x84", "key": "0123456789ABCDEF..." }, { "keyid": "0x0002", "algid": "0x81", "key": "0123456789ABCDEF" }, { "keyid": "0x1b50", "algid": "0xaa", "key": "0123456789" } ] }Test plan
encryptionKeysFileis specified (should work as before)