Disclaimer: Im August 2026 fand die Qualifikation für das Finale von Deutschlands Bester Hacker statt, welches ich auf Platz 1 abschließen konnte. Nur zwei Teilnehmer waren in der Lage, alle Challenges zu lösen. Dieses Writeup wurde mit KI auf Basis meiner Notizen erstellt und kann Fehler enthalten, bei Fragen bitte direkt an mich wenden im DBH-Discord.
| Wettbewerb | Deutschlands Bester Hacker 2026 — Qualifikation |
| Kategorie | Forensics |
| Punkte | 50 |
| Angriffsklasse | Audio-SteganografieSteganografieVerbergen von Informationen in unauffälligen Trägerdaten, sodass ihre Existenz nicht erkennbar ist. im Ultraschallbereich |
| Flag | DBH{SP3KTROGRAMM_W4RUM_NUR_4LS_D3R_TON} |
Die Challenge
42 Sekunden Funkmitschnitt. Das Bandprotokoll meldet eine Übertragung — hörbar ist praktisch nichts. Das ist ein starker Hinweis darauf, dass die Information entweder außerhalb des normalen Hörbereichs liegt, nur in einer anderen Darstellung sichtbar wird oder als Steganografie in der Datei steckt.
Aufklärung
Zuerst die Datei einordnen:
file notruf.wav
afinfo notruf.wav
Ergebnis: WAV/PCM, 16 Bit, mono, 48 kHz, 42 Sekunden Laufzeit. Danach die Prüfung, ob im Container selbst etwas Offensichtliches steckt:
strings -a notruf.wav | head -100
xxd -l 256 notruf.wav
Fehlanzeige — eine ganz normale Audio-Datei. Der nächste sinnvolle Schritt ist also Signalanalyse.
Da ffprobe, ffmpeg und sox lokal nicht vorhanden waren, lief fast die gesamte Analyse
über kleine Python-Skripte direkt auf den WAV-Rohdaten: RMS/Peak grob pro Sekunde,
Verteilung der niederwertigen Bits, dominante Frequenzen in kurzen Fenstern.
Die Schwachstelle
Die Energie über die Zeit zeigte zwei Auffälligkeiten:
- um etwa
8-10 sein deutlicher Aktivitätsblock - von etwa
14-36 sein längerer Bereich mit starker Energie
Damit war klar: die Datei ist nicht leer. Das Problem ist nicht „zu leise“, sondern „falsch dargestellt“.
Die Dominantfrequenzen über Zeitfenster bestätigten das: der lange Block sitzt fast
vollständig im Bereich 17-19 kHz. Das passt perfekt zur Story — auf einem normalen
Mitschnitt hört man fast nichts, im Spektrum ist aber sehr wohl etwas los.
Die LSB-Verteilung war dagegen ziemlich gleichmäßig, einfache LSB-SteganografieLSB-SteganografieVerbergen von Daten in den niederwertigsten Bits von Bild- oder Audiowerten. schied also aus.
Der Angriff
Da keine fertigen Audiotools vorhanden waren, habe ich das SpektrogrammSpektrogrammanalyseDarstellung eines Signals über Frequenz und Zeit, um darin verborgene Strukturen sichtbar zu machen. mit Python selbst
gebaut und anschließend in ein ansehbares Bildformat umgewandelt — einmal über den vollen
Bereich, einmal auf 16-20 kHz und 14-36 s gezoomt.
Im Zoom war die Lösung direkt als Text lesbar: der PayloadPayloadTeil eines Angriffs oder Exploits, der die beabsichtigte schädliche Wirkung ausführt. ist im hochfrequenten Bereich nicht als Tonfolge oder Sprache versteckt, sondern schlicht als Schriftzug ins Spektrum gezeichnet.
Ein paar naheliegende Ideen waren Sackgassen: einfache LSB-Steganografie war es nicht; testweise habe ich den Ultraschallbereich nach unten demoduliert, was für die eigentliche Lösung gar nicht nötig war; ein lokaler Speech-to-Text-Versuch auf der demodulierten Spur scheiterte an fehlender Berechtigung. Gerade der letzte Punkt war ein guter Reality-Check — ich war schon dabei, aus dem Signal „Sprache“ machen zu wollen, obwohl die Challenge viel eleganter zu lösen war, indem man das Signal einfach sichtbar macht.
Die Flag
DBH{SP3KTROGRAMM_W4RUM_NUR_4LS_D3R_TON}
Was ich mitnehme
Der Durchbruch war die Erkenntnis: nicht hören, nicht dekodieren, sondern als Spektrogramm anschauen.
„Unsichtbar“ heißt in Audio oft nur: falsche Darstellung. Der entscheidende Hinweis lag schon im Text der Aufgabe — weil eine Übertragung protokolliert war, aber akustisch kaum etwas zu hören war, war der richtige nächste Schritt eine Frequenz- und Spektrumsanalyse statt stumpfem Abhören.