Skip to content
Back to skills

Flex

ASecurity

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

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

Security analysis

A100/100

Scanned September 10, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Flex?

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

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

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-flex
description: Drive PWN::SDR::Decoder::Flex from pwn_eval.
license: MIT
allowed-tools: [pwn, pwn_eval]
metadata:
  bundled: true
  generated: true
  module: PWN::SDR::Decoder::Flex
  source: pwn/sdr/decoder/flex.rb
---

# PWN::SDR::Decoder::Flex

Pure-Ruby FLEX™ pager decoder. FLEX is Motorola's synchronous paging protocol running at 1600 or 3200 symbols/s in 2- or 4-level FSK. GQRX's NBFM discriminator audio (48 kHz UDP tap) is fed into a per-sample PLL symbol clock, 4-level quantised, and driven through the Sync-1 → FIW → Sync-2 → 11-block state machine. All four interleaved phases (A/B/C/D) are de-interleaved into 88 × 32-bit BCH(31,21)+parity codewords, error corrected, and walked (BIW → address → vector → message words) to recover short capcode + alphanumeric / numeric / binary payloads. Plain alpha fragments have fragment checksums and whole-message signatures, with bounded per-stream ordered reassembly. Long-address phases, secure payloads, and enhanced symbolic character modes remain unsupported. Numeric/binary message-level integrity is not implemented. The symbol/framing implementation follows multimon-ng demod_flex.c. Offline specs cover Sync-1/FIW and a protected short-address alpha frame. These fixtures do not establish all-mode live-air parity. No `multimon-ng`, no `sox` — 100 % Ruby.

## When to use

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

## Methodologies

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

## How to call

```ruby
PWN::SDR::Decoder::Flex.help
PWN::SDR::Decoder::Flex.sync_check(opts)
```

## Public methods

- `sync_check`
- `popcnt`
- `even_parity`
- `bch_syn`
- `bch_fix`
- `emit_phase`
- `alpha_decode`
- `numeric_decode`
- `hex_decode`
- `detect`
- `decode`
- `authors`
- `help`
- `even_parity?`

## Source

`pwn/sdr/decoder/flex.rb`

## Verification

`PWN::SDR::Decoder::Flex.respond_to?(:sync_check)` 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…