CodeShell.kr - Reversal

Challenge

题面说歌手在歌中间喊了一句,但听起来不对。挑战图标 LSB 里藏着提示视频,机制可以确认到「倒放」与确切的时间区间,但短语内容尚未读出。

Listen closely. He shouts in the middle of the song, but something sounds strange. What is he saying?

仔细听。他在歌的中间喊了一声,但听起来有点怪。他在说什么?

1
https://codeshell.kr/challenges/reversal/

Solution

题面给出一条 YouTube 链接(JUSTHIS《Do Not Go Gentle Into That Good Night》)。 解法链的前两步已确认

Step 1:挑战图标 reversal-stego.png(340×340)的红通道 LSB 里藏着载荷:

1
2
$ zsteg -a reversal-stego.png
b1,r,lsb,xy .. text: "https://www.youtube.com/shorts/EqlGSpo7UD4"

Step 2:该 Short 的韩文标题是「저스디스 신곡을 역재생하면 들리는 숨겨진 소리」 (倒放 JUSTHIS 新歌时听到的隐藏声音),视频里先播 원본(原版)再切 역재생 (倒放),作者在倒放段明显被惊到(画面打出 시발~)。这确认了题目的机制是 backmasking:歌里嵌了一段倒录的话,把歌倒放才能听清。

Step 3:用互相关把 Short 的音频与歌曲(正放/倒放两份)对齐,得到 Short 的播放结构。 这一步给出的是确切的区间,不靠听:

1
2
Short t= 0.00-19.50s   正放,歌曲偏移 71.44s -> 90.44s   (Δt = Δoffset,1:1)
Short t=20.50-37.50s 倒放,映射回歌曲 90.44s -> 73.94s(镜像)

即 Short 先正放 song[71.4..90.4],再把同一段倒放回去,这正是 backmasking 的 演示。注意 71.4–90.4 s 并不是题面说的「中间」(304.15 s 的中点是 152 s),所以 Short 演示的是手法,不是那段喊声本身。

Step 4:不依赖 ASR 定位倒放段:写了一个包络不对称性检测器(正放语音是 「快起音、慢衰减」,倒放相反),逐秒窗口的 (上升能量 − 下降能量)/总和 在整首歌的 5 秒分桶里都落在 ±0.01 以内,没有检测到明显的倒放段,说明被倒放的内容在包络 层面被音乐完全掩盖。逐秒 RMS 的前十名是成对出现的:

1
[53, 54, 68, 69, 158, 159, 203, 204, 218, 219]

未完成部分:短语内容的读出。Whisper 对倒放音乐的失败模式已记录清楚:tiny 输出时间戳超出音频总长、整段退化成 ,, 重复;small 对倒放片段给出 하유사 하유사 하유사(韩)与 "Seriously, I don't even know what I'm talking about"(英),都是幻觉。而 71.4–90.4 s 正放的转写是正常歌词("…I studied the classics, J-This 2022, 대한민국, 남자, rapper, 서른 둘 I need to say this"), 说明该段本身没有明显的倒放喊声。已排除:Short 的自动字幕(kind=asr 轨道存在但 内容长度 0)、Short 倒放半段 2 秒切片逐个转写、148–168/152–162/154–160 s 三个窗口。

下次切入点:隔离 0.3–1.5 s 的孤立强瞬态只倒放那一小段(不要整段转写)、先做人声分离 再转写、换官方音源(本次用的是 알파 频道歌词视频,304.15 s)。