Avi Cohen 9590c54c33 fix(hls): decrypt AES-128 (ClearKey) media-playlist keys + per-segment sequence IV
The download path only wired up media-playlist keys when they were Widevine/PlayReady; an
AES-128 ClearKey was built but never assigned to session_drm, so segments were merged still
encrypted and the output was unplayable. Handle ClearKey from the media playlist (no license
needed), and when EXT-X-KEY has no explicit IV use each segment's media sequence number as
the IV (RFC 8216 5.2).
2026-06-04 07:09:25 +03:00
2025-07-18 00:46:05 +00:00
2025-07-18 00:46:05 +00:00
2025-07-18 00:46:05 +00:00
2025-07-18 00:46:05 +00:00
2025-07-18 00:46:05 +00:00
2026-05-26 10:54:14 -06:00

no_encryption unshackle
Movie, TV, and Music Archival Software
Discord

Install  ·  Wiki  ·  Docs  ·  Discord


A modular archival tool for movies, TV, and music. Fork of Devine with DASH/HLS/ISM parsing, Widevine & PlayReady DRM, and a REST API.

unshackle demo

Install

uv tool install git+https://github.com/unshackle-dl/unshackle.git
unshackle --help

Tip

Prefer uv run unshackle ... inside a clone to keep the virtual environment active.

Requirements

External tools on your PATH (recommended versions):

License

GPL-3.0. Do not use unshackle for content you lack the rights to. Keep the core free and open; keep service code private. Be kind.

Description
No description provided
Readme GPL-3.0 17 MiB
Languages
Python 99.9%