Skip to content
Back to skills

Dsp

ASecurity

Drive PWN::SDR::Decoder::DSP from pwn_eval.

  • 86 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 10, 2026
securitygorubyshelltestingbackend

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add 0dayInc/pwn --skill dsp --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dsp?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dsp
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/0dayinc-dsp/badge)](https://www.skillsdirectory.com/skills/0dayinc-dsp)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pwn-sdr-decoder-dsp
description: Drive PWN::SDR::Decoder::DSP from pwn_eval.
license: MIT
allowed-tools: [pwn, pwn_eval]
metadata:
  bundled: true
  generated: true
  module: PWN::SDR::Decoder::DSP
  source: pwn/sdr/decoder/dsp.rb
---

# PWN::SDR::Decoder::DSP

DSP primitives shared by every PWN::SDR::Decoder::* module. Default path is pure Ruby operating on Array<Float> samples normalised to -1.0..1.0 (48 kHz s16le mono from GQRX UDP — no `sox` / `multimon-ng` / `minimodem` dependency). When the matching system library is present the hot paths transparently accelerate via PWN::FFI::{Volk,Liquid,FFTW}: unpack_s16le → PWN::FFI::Volk (SIMD s16→f32 convert) unpack_cs16le → pure / Volk path (interleaved I/Q s16 → f32) unpack_cu8 → pure path (RTL-SDR u8 I/Q → f32) resample → PWN::FFI::Liquid (msresamp multi-stage) dc_block → PWN::FFI::Liquid (firfilt DC blocker) rms_dbfs → PWN::FFI::Volk (accumulate of squares) mag_sq / fm_demod_iq → true-air I/Q paths for Base.run_iq Packed IQ/FM/magnitude and radix-2 FFT use optional DSPNative first. Build explicitly with ruby ext/pwn_dsp/build.rb; no runtime compilation. process_iq exposes :ruby degradation and keeps caller-owned chunk state. Other accelerated methods fall back to pure Ruby when their backend is missing or raises, so decoders never require a native library at install time. Force pure Ruby for testing with PWN::SDR::Decoder::DSP.native = false

## When to use

Call `PWN::SDR::Decoder::DSP` from `pwn_eval` when the task needs this module.
Do not reimplement it in shell.

## Methodologies

Generated from `pwn/sdr/decoder/dsp.rb`. Prefer the public class methods below.
Class methods take `(opts = {})` and read `opts`.

## How to call

```ruby
PWN::SDR::Decoder::DSP.help
PWN::SDR::Decoder::DSP.unpack_s16le(opts)
```

## Public methods

- `unpack_s16le`
- `resample`
- `goertzel`
- `envelope`
- `dc_block`
- `nrz_slice`
- `envelope_signed`
- `fsk_slice`
- `find_sync`
- `bits_to_int`
- `even_parity_ok`
- `bch_31_21_syndrome`
- `baudot_decode`
- `rms_dbfs`
- `unpack_cs16le`
- `unpack_cu8`
- `mag_sq`
- `fm_demod_iq`
- `iq_rms_dbfs`
- `correlate`
- `resample_iq`
- `mix_iq`
- `gfsk_slice`
- `slice_4fsk`
- `manchester_decode`
- `diff_decode`
- `bytes_from_bits`
- `crc16`
- `whiten_lfsr`
- `ook_pulses`
- `cfft_mag`
- `dft_naive`
- `zadoff_chu`
- `ca_code`
- `cmul`
- `process_iq`
- `authors`
- `help`
- `even_parity_ok?`
- `native`
- `native=`

## Source

`pwn/sdr/decoder/dsp.rb`

## Verification

`PWN::SDR::Decoder::DSP.respond_to?(:unpack_s16le)` after the
module is loaded. Read the source for parameter names.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…