Releases: FSP-Labs/FSP.DMRCrack
Releases · FSP-Labs/FSP.DMRCrack
FSP.DMRCrack v0.3.3
Full Changelog: v0.3.2...v0.3.3
FSP.DMRCrack v0.3.2
Full Changelog: v0.3.1...v0.3.2
FSP.DMRCrack v0.3.1
Full Changelog: v0.3.0...v0.3.1
Full Changelog: v0.3.0...v0.3.1
FSP.DMRCrack v0.3.0
Fixed
- CUDA atomic race on
best_key/best_score(#1) — the two-step
atomicCAS(score)+atomicExch(key)update was replaced with a singleatomicMax
on a packedunsigned long longthat encodes both the score (top 24 sortable bits)
and the 40-bit key. Eliminates the race window where a polling read could observe a
new score paired with a stale key, which caused the blank best-candidate display
reported in #4. - CUDA error auto-fallback to CPU — if the GPU returns an error mid-run, the engine
now stops the CUDA path, restarts from the same offset on CPU threads, and shows a
banner in the status strip. Replaces the v0.2.1 behaviour of aborting with
"NVIDIA CUDA Error o no hay GPUs compatibles." - GPU/CPU keyspace split inverted — the engine was giving 20 % of the keyspace to
the GPU and 80 % to the CPU; now it's 80 / 20 as documented, configurable via the
new GPU % spin control. - Demodulation silent failure —
run_process_stderr_redirectonly redirected stderr;
stdout was set toGetStdHandle(STD_OUTPUT_HANDLE), which returnsNULLin a GUI
process. Cygwin apps (dsd-fme) received aNULLstdout handle and could exit 0
without producing DSP output. Both streams now go to the log file. - DSP output search too narrow — added two more candidate paths under the
dsd-fme.exe directory so captures from non-default installs are found. - Test/production parity —
test_strict_score.cused31.0f * kas the absolute
pruning floor while the GPU kernel uses33.0f * k; the test could pass keys the
kernel would have rejected. Aligned to33.0f. #undef BCNT_INCtypo —BCNT_ADDwas leaking out of the strict kernel
translation unit because the#undefreferenced a macro that never existed.- Documentation drift —
CONTRIBUTING.mdreferenced non-existent files
(build_test_bin.bat,test_bin_score.exe) and pointed contributors at the wrong
scoring file. README claimed a CPU fallback that, in practice, takes days; both
corrected.
Added
- Operator Dashboard GUI — full visual redesign:
- Header bar with GPU status dot (running / paused / stopped) and the GPU's
sm_XY · N SMssummary. - Metric tiles with hierarchy: THROUGHPUT dominant (Consolas 22 pt, 58 % wide),
BEST CANDIDATE beside it, PROGRESS as a full-width row with a large bar
and one-line metadata. - Side-by-side line charts (keys/s, best score) with area fill, grid lines, and a
Z = 400 threshold marker on the score chart. - Status strip anchored at the bottom of the window (Win32 convention).
- Header bar with GPU status dot (running / paused / stopped) and the GPU's
- KPA silence-frame detection — DMR voice frames whose first 24 bits are
consistent silence are flagged at load time (SILENCE=tag in.bin). The CUDA
kernel uses these as a pre-filter to reject wrong keys earlier in the search.
A badge in the GUI shows how many silence frames were detected. - Configurable GPU/CPU split — spin control (50–95 %, step 5) lets the user
adjust how the keyspace is divided between the GPU and CPU workers at scan start. - ILP-2 kernel enabled on sm_75+ — the dual-key kernel that was previously
restricted to sm_89+ now runs on Turing and Ampere too, improving throughput on
GTX 16xx / RTX 20xx and RTX 30xx cards. - Multi-arch build — single
dmrcrack.exeships with native SASS for sm_75 /
sm_86 / sm_89 plus acompute_75PTX fallback for RTX 50xx and future GPUs
(JIT-compiled by the driver on first run). .binvalidation on load — payload set is inspected on file open: KMI9
coverage stats (how many lines carry MI metadata), KID histogram, low-payload
warning whencount < 64, alignment warning if the first frame isn't at
burst_pos == 0.- Full EN/ES i18n with runtime toggle — every user-facing string routed through
theLangstruct, including engine startup errors emitted bybruteforce.cu.
The language toggle button in the header switchesg_lang_ptrand persists the
choice todmrcrack.ini. The help dialog is also fully localized. - Help dialog — quick-start guide accessible from the Help button: capture
with SDR# → demodulate → brute-force, with NFM / de-emphasis caveats. - Copy-key button — copies the current best-candidate key to the clipboard.
- Key-found notification — taskbar flash + system beep when the search completes
with a candidate above the Z threshold. - Resizable window with per-monitor DPI awareness — minimum 980 × 720; all
controls and graphs reposition viaWM_SIZE. - WinSparkle auto-updater — replaced the custom WinHTTP + GitHub-API updater
(no signature verification) with WinSparkle 0.9.2: built-in UI, EdDSA (Ed25519)
signature verification, Sparkle appcast support. Each release now publishes an
appcast.xmlalongside the installer. gpu_keys_testedcounter — engine snapshot now exposes GPU and CPU
contributions separately, used by the THROUGHPUT tile to display
"GPU 1.6 G/s · CPU 240 M/s".- ILP test bench —
build_bench.batbuildsbin/test_bench.exe, a standalone
micro-benchmark for the strict vs ILP-2 kernels.
Changed
- Capture module simplified — WAV input + Demodulate + Export kept;
RTL-SDR mode, slot selector (Both / 1 / 2), inverted-polarity checkbox and the
WAV/RTL mode toggle removed. DSD-FME is invoked with-V 3(both slots) by
default. Users who need slot-specific or polarity-inverted demodulation can run
dsd-fme manually and load the resulting.bin. - All English source code — Spanish comments and identifiers translated to
English acrossbruteforce.cu,bruteforce.c,bruteforce.h,
test_score_windows.cand the DSP-converter helper script. build.batrewrite — auto-detects Visual Studio viavswhere, sets
INCLUDE/PATHfor the CUDA toolkit, compiles with-O3 /arch:AVX2.
Internal
- 13 new GitHub issues filed for community contributors (
good first issue,
help wanted): magic-number cleanup,__restrict__annotations, CMake build,
POSIX HAL, headless CLI, KPA pre-filter optimisation, legacy-kernel test
coverage, and more.
⚠️ The releases v0.1.2, v0.2.0 and v0.2.1 were tagged without updating this
changelog. Their content is rolled forward into the 0.3.0 entry above; the
individual tags remain on GitHub for reference.
FSP.DMRCrack v0.2.1
Full Changelog: v0.2.0...v0.2.1
FSP.DMRCrack v0.2.0
Full Changelog: v0.1.2...v0.2.0
Appcast
WinSparkle auto-update feed — do not delete
v0.1.2
What's new
- Inline error diagnostics: demodulation errors now show a MessageBox with the dsd-fme log output, so users can see exactly what happened without opening log files manually
- Improved dsd-fme output search: searches both
DSP/subdirectory and flat locations for DSP output - Better error messages: all error states include actionable context
Download
Download FSP.DMRCrack-0.1.2-Setup.exe below and run the installer.
FSP.DMRCrack v0.1.0
FSP.DMRCrack v0.1.0
GPU-accelerated ARC4 key recovery for DMR Enhanced Privacy voice communications.
Download
FSP.DMRCrack-0.1.0-Setup.exe — Windows installer (includes DSD-FME and all required Cygwin runtime DLLs)
Requirements
- Windows 10/11 x64
- NVIDIA GPU (GTX 16xx / RTX 20xx or newer, sm_75+)
- No additional installation required — everything is bundled
What's included
dmrcrack.exe— main application (Win32 GUI, CUDA brute-force engine)tools/dsd-fme.exe— DMR demodulator backendtools/cyg*.dll— Cygwin runtime libraries required by dsd-fmetools/dsdfme_dsp_to_bin.py— DSP output convertertools/verify_decrypt.py— decryption validation tool