DSD FME

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,271
Location
Lafayette County, FL
Here at Florida Man Labs, we have been working hard lately on all the things that don't matter to you, including swearing to never drink a Four Loko's Watermelon flavored beverage again and fixing up odd and end features in everybody's fourth or fifth favorite voice decoder (or optimally, RR's Most Hated): DSD-FME

dsd-fme-ncurses-menu-crop.png

SPACE FORCE: ALIENS VS CHINESE DRAGONS EDITION

2022.08.12 Update Notes:

Code:
1. NCurses Menu (no more tedious CLI options...unless you really want to)

2. Save/Read Capture Bin (WIP!)

3. Read OP25 Capture Bin (WIP!)

4. Per Call WAV saving on DMR Stereo

5. Revamped Data Headers, and 1/2 and 3/4 Data LRRP

6. Dump LRRP Data to text file, import into QGIS

7. Included QGIS Map File with layers set up

8. DMR CACH and Burst FEC

9. No more Port Audio or OSS...ever.

   --Switch to 8Khz/1Ch for most decode types due to crisper sound

   ---DMR Stereo remains at 24/2, will look into revamp upsample for cleaner sound

   ---Fix Bug in DMR Stereo handling that pushed audio errors to both left and right buffers, cleaned up muddy sound

   --Mute P25, NXDN, and DMR Encryption by default, but still allow frame dump while muted, unmuting can be toggled in ncurses terminal if desired.

   ---will not playback audio or write decoded wav files or mbe files when muted

Maybe an option to suppress the Build Info ?

This is now included with a quick toggle! NCurses Compact Mode! When you don't need to be reminded every second that you are using DSD-FME with big gaudy letters eating up 1/4 of the terminal :ROFLMAO:

And as usual, here is a rather shoddy video run down of a few of the features :sleep:

 

noamlivne

Member
Joined
Sep 7, 2012
Messages
179
The "pulseaudio" version after compilation in "cygwin" works very well. I haven't noticed any problems when running the program on Windows 11.
Could you please share the instructions you followed, just in case?
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,271
Location
Lafayette County, FL
Could you please share the instructions you followed, just in case?

I'm not sure I would call them instructions, as there are a myriad of little issues that always seem to crop up, but before I deleted the cygwin branch, I copied all the 'instructions' I had put together and I posted them as an issue on the github page. The biggest hurdle for most I've found is making sure all the dependencies are installed when using the cygwin installer. The bad thing is is that if you miss a dependency, then you have to run the installer again and find them. Its a pain.

 

noamlivne

Member
Joined
Sep 7, 2012
Messages
179
I'm not sure I would call them instructions, as there are a myriad of little issues that always seem to crop up, but before I deleted the cygwin branch, I copied all the 'instructions' I had put together and I posted them as an issue on the github page. The biggest hurdle for most I've found is making sure all the dependencies are installed when using the cygwin installer. The bad thing is is that if you miss a dependency, then you have to run the installer again and find them. Its a pain.

Thank you very much!
 

ehsansis0

Member
Joined
Sep 27, 2022
Messages
12
Hi lwvmobile,
Thanks for sharing your tool. I have some questions,

1) Do you have any information about decryption of Hytera DMR basic privacy with key length between (40-256bits)? As you know MotoTorbo DMR uses simply XOR each Ambe frame with each key bits method but I can't find any information about Hytera decryption Basic privacy method. Do you have any information on this?

2) Is there any way to check CRC of decryption Ambe data is ok or not. I mean, after decryption Ambe data with any key id or key binary data, get feedback of decrypted data CRC is ok or not, if you answer is yes, we can write Brute force operation for finding DMR Basic privacy key. I already saw that some tool can automatically find DMR key id for MotoTorbo. How do these tools do this?

3) In this topic Moto BP not working, testing possible · Issue #43 · f4exb/dsdcc of DSDCC library someone discuss about can brute force key with find silence frame of AMBE voice data, this method work good on DMR MotoTorbo but I don't know does it work properly on Hytera DMR Basic privacy?

Ehsan
 
Last edited:

slicerwizard

Member
Joined
Sep 19, 2002
Messages
7,643
Location
Toronto, Ontario
Do you have any information about decryption of Hytera DMR basic privacy with key length between (40-256bits)? As you know MotoTorbo DMR uses simply XOR each Ambe frame with each key bits method but I can't find any information about Hytera decryption Basic privacy method. Do you have any information on this?
Hytera Basic Privacy simply XORs the AMBE data bits with the key bits. So a key with all bits set (FFFFFF...) will invert all AMBE bits.

2) Is there any way to check CRC of decryption Ambe data is ok or not. I mean, after decryption Ambe data with any key id or key binary data, get feedback of decrypted data CRC is ok or not, if you answer is yes, we can write Brute force operation for finding DMR Basic privacy key.
You can use AMBE's Golay FEC as a sanity check. It won't let you brute force anything though.

I already saw that some tool can automatically find DMR key id for MotoTorbo. How do these tools do this?
They try all 255 MotoTRBO (not MotoTorbo, at least not in English) keys and look for silence frames.

3) In this topic Moto BP not working, testing possible · Issue #43 · f4exb/dsdcc of DSDCC library someone discuss about can brute force key with find silence frame of AMBE voice data, this method work good on DMR MotoTorbo but I don't know does it work properly on Hytera DMR Basic privacy?
It would work if voice calls start with enough standard silence frames. EP key = AMBE voice frames XOR AMBE silence frames.
 

ehsansis0

Member
Joined
Sep 27, 2022
Messages
12
Hytera Basic Privacy simply XORs the AMBE data bits with the key bits. So a key with all bits set (FFFFFF...) will invert all AMBE bits.
thanks for your reply. I sent some sample via private message. these sample encrypted with Basic privacy method (A friend provided me these files). so, for example my key is "ABCDEF1234", Should I just XOR AMBE voice frame with key for each bits?

You can use AMBE's Golay FEC as a sanity check. It won't let you brute force anything though.
would you please more describe about how does this part work?

Regards
Ehsan
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,271
Location
Lafayette County, FL
1) Do you have any information about decryption of Hytera DMR basic privacy with key length between (40-256bits)? As you know MotoTorbo DMR uses simply XOR each Ambe frame with each key bits method but I can't find any information about Hytera decryption Basic privacy method. Do you have any information on this?

DSD-FME has functionality for decrypting Moto and Hytera BP with a known key value. Might as well let the cat out of the bag on that one. Its not exactly a secret to anybody who uses DSD-FME, its pretty much in plain sight right in the help file and in the ncurses menu.

Is there any way to check CRC of decryption Ambe data is ok or not. I mean, after decryption Ambe data with any key id or key binary data, get feedback of decrypted data CRC is ok or not,

I'm honestly not entirely sure on this after a keystream has been applied, if you can go back and check it again. Again, I am not an expert on all the tricks in MBElib, so it may be possible. My only suggestion for that is to look at the source code of mbelib and dsd-fme and see what you can work out, experiment, and try stuff. You never learn if you don't dig in.


3) In this topic Moto BP not working, testing possible · Issue #43 · f4exb/dsdcc of DSDCC library someone discuss about can brute force key with find silence frame of AMBE voice data, this method work good on DMR MotoTorbo but I don't know does it work properly on Hytera DMR Basic privacy?

I've stated this before on Github in the issues, and I'll state it here for clarity. I will not assist or describe any method to use in order to brute force or reverse any sort of key. The use of privacy keys in FME is meant solely for people who have legitimate access to a system or is from their own personal equipment. If you don't know the key, then don't ask me how to figure it out. I know that sounds harsh, but I'm trying to stay out of trouble here. The general gist is exactly what slicerwizard said, and I won't elaborate on that any further.
 

ArloG

Member
Joined
Feb 14, 2020
Messages
299
Wow. You's be my idol if you could implement ci-v control for real radio's out there.
 

ehsansis0

Member
Joined
Sep 27, 2022
Messages
12
DSD-FME has functionality for decrypting Moto and Hytera BP with a known key value. Might as well let the cat out of the bag on that one. Its not exactly a secret to anybody who uses DSD-FME, its pretty much in plain sight right in the help file and in the ncurses menu.

thanks very much for reply, I sent two sample recorded by DSDPlus, these file encrypted with Hytera Basic privacy (40bits), I tested with your ported DSDPlus but can't correctly decrypted and played sound. so, please check it.
 

ehsansis0

Member
Joined
Sep 27, 2022
Messages
12
:cautious: I'll let that one slide since your a novice and aren't familiar with the history.
I am very sorry, it was my mistake. I had not seen the source. Now that I saw the source, I realized that the source was completely designed and written by you. :love::love::love:

What command/setup did you use to attempt to play it back, also which OS and version are you running?

used key for this sample is: "1234567890"
I converted this key to binary.

Code:
>dsd.exe -i /dev/dsp -o /dev/dsp -fr -K b0001001000110100010101100111100010010000
                                 CTRL + C twice to exit
██████╗  ██████╗██████╗     ███████╗███╗   ███╗███████╗
██╔══██╗██╔════╝██╔══██╗    ██╔════╝████╗ ████║██╔════╝
██║  ██║╚█████╗ ██║  ██║    █████╗  ██╔████╔██║█████╗
██║  ██║ ╚═══██╗██║  ██║    ██╔══╝  ██║╚██╔╝██║██╔══╝
██████╔╝██████╔╝██████╔╝    ██║     ██║ ╚═╝ ██║███████╗
╚═════╝ ╚═════╝ ╚═════╝     ╚═╝     ╚═╝     ╚═╝╚══════╝
https://github.com/lwvmobile/dsd-fme/tree/cygwin
Digital Speech Decoder: Florida Man Edition
Github Build Version: v1.6.0-285-g8019044
mbelib version 1.3.1
Notice: DMR cannot autodetect polarity.
Use -xr option if Inverted Signal expected.
Decoding only DMR/MOTOTRBO frames.
Audio Out Device: /dev/dsp
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,271
Location
Lafayette County, FL
I realized that the source was completely designed and written by you.
This is also not true. I simply forked the repository from Szechy, so DSD-FME has code from that source, also some from LouisErigHerve, also some from OP25, SDRTrunk, MMDVM Host, LSFR, list goes on and on. I've written new things into the code, but lots come from a lot of different people as well.

v1.6.0-285-g8019044

That's the last pre-compiled Windows version I released. Its not very good, and its too old to support Hytera. You would need to compile the latest version in order to get Hytera support. Check the Github page readme or wiki for more information.
 

ehsansis0

Member
Joined
Sep 27, 2022
Messages
12
This is also not true. I simply forked the repository from Szechy, so DSD-FME has code from that source, also some from LouisErigHerve, also some from OP25, SDRTrunk, MMDVM Host, LSFR, list goes on and on. I've written new things into the code, but lots come from a lot of different people as well.



That's the last pre-compiled Windows version I released. Its not very good, and its too old to support Hytera. You would need to compile the latest version in order to get Hytera support. Check the Github page readme or wiki for more information.
my command and parameter is correct?
dsd.exe -i /dev/dsp -o /dev/dsp -fr -K b0001001000110100010101100111100010010000
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,271
Location
Lafayette County, FL
Wow. You's be my idol if you could implement ci-v control for real radio's out there.

I gave that a quick google search, is that the same thing as what some projects call rigctrl? Sounds like it would be a good feature, but right now I don't have any trunking support for DMR, I've been shying away from that one due to the myriad of different system types all with their little quirks. P25 might would be possible, I already have all the iden_up and voice grant stuff in there (mostly) just no control for allow and deny lists, and groups or whatnot. It would literally just tune anything and everything.

Not to mention, I can't test or implement features on hardware I don't own.
 
Top