New formats (4 format families added)
KWM (Kuwo Music, 酷我) — pure JS
- 32-byte circular XOR cipher
- Algorithm re-derived from davidxuang/MusicDecrypto (LGPL, re-implemented from scratch)
- Round-trip test on real MP3 (ffprobe 2.06s) ✓
KGM / KGMA / VPR (KuGou) — pure JS
- Pure-JS cipher + 4 small lookup tables (833 bytes total)
- Re-implemented from huangbao/MyKgmWasm (MIT)
- Round-trip test on real MP3 (ffprobe 2.06s) ✓
- Audio format auto-detected from decrypted header (mp3/flac/ogg/wav/m4a)
QMCv2 (.mflac / .mgg / .bkc*) — pure JS, requires user ekey
- Same XOR cipher as QMCv1 but 128-byte working key derived from user-provided ekey
- key_compress formula cross-verified against ikun0014/pyqmc-rust test vector (128/128 bytes match)
- New UI: Settings panel → "QQ Music ekey" field, persisted via electron-store
- Clear error message if ekey is missing
BKC* (QQ Music desktop cache)
- Trivial routing extension — same QMCv2 cipher
- Supports: .bkc, .bkcmp3, .bkcflac, .bkcogg, .bkcm4a, .bkcwav, .bkcwma, .bkcape
Verified formats
| Format |
Status |
Verification |
.ncm |
✅ verified |
14/14 byte-diff against Python ncmdump |
.qmc0, .qmc3 |
✅ verified |
Round-trip on real MP3 |
.qmcflac |
✅ verified |
Round-trip on real MP3 |
.qmcogg |
✅ verified |
Round-trip on real MP3 |
.kwm |
✅ implemented |
Round-trip on real MP3 |
.kgm, .kgma, .vpr |
✅ implemented |
Round-trip on real MP3 |
.mflac, .mflac0 |
✅ implemented |
Requires QQ Music ekey |
.mgg, .mgg1 |
✅ implemented |
Requires QQ Music ekey |
.bkc* |
✅ implemented |
Requires QQ Music ekey |
Not yet supported
.qmcv2 / .qmc2 with header (QMCv2 marker) — requires per-file ekey from QQ Music client
- QMCv2 files WITHOUT ekey (server-fetched songs) — cannot decrypt without QQ Music login
Install
# Debian/Ubuntu
sudo dpkg -i openconverter_0.2.0_amd64.deb
sudo apt-get install -f
# AppImage
chmod +x OpenConverter-0.2.0.AppImage
./OpenConverter-0.2.0.AppImage
Assets
openconverter_0.2.0_amd64.deb (70 MB) — Debian/Ubuntu x64
openconverter_0.2.0_arm64.deb (65 MB) — Debian/Ubuntu arm64
OpenConverter-0.2.0.AppImage (100 MB) — x64 portable
OpenConverter-0.2.0-arm64.AppImage (100 MB) — arm64 portable