Funkuhren manipulieren via Lautsprecher
Published 7 May, 2014Achtung: Durch das Abspielen von Audiodateien, die hier im Artikel erwähnt werden, können elektromagnetische Störungen auftreten. Diese zu verursachen ist möglicherweise nicht legal, weshalb es ratsam ist, vor dem Nachmachen Rat von erfahrenen Leuten einzuholen. Ich rate jedem ausdrücklich davon ab, den hier beschriebenen Effekt missbräuchlich zu verwenden. Der Artikel und das Programm sind lediglich für Forschungsarbeiten vorgesehen.
Vor einigen Monaten habe ich mein Projekt vorgestellt, bei dem ich mit nichts Anderem als einem Notebook und einem Stück alten Kopfhörerkabel die Funksignale von dem Zeitzeichensender DCF77 empfangen habe.
Dieser Sender, welcher bei Frankfurt steht, sendet das Zeitsignal für Funkuhren im Umkreis von mehreren 1000km.
Jetzt möchte ich einen ähnlichen Hack vorstellen: Ein Computer kann dieses Signal nicht nur empfangen, sondern auch senden. Das Signal wird hier über den Lautsprecherausgang "gesendet". Dafür ist diesmal nicht einmal ein Stück Kabel notwendig.
Es reicht ein Notebook (alternativ: einen Fluxkompensator ;-) ), um Funkuhren in der Nähe auf eine beliebige Zeit zu stellen. Der interne Lautsprecher (bzw. jeder beliebige Lautsprecher) kann das Empfangsmodul der Funkuhr derart beeinflussen, dass ein eigenes Zeitzeichensignal übermittelt werden kann. Der Lautsprecher von meinem Notebook schafft eine Distanz von etwa 60cm. Ich vermute, dass sich das mit einer größeren Soundanlage mit Verstärkern auf einige Meter ausdehnen lässt.
An den Computer gibt es keine besondere Anforderungen, außer dass es über eine Soundkarte verfügen muss, welche eine Samplerate von 192000 Hz schafft (was jedoch heute Standard ist). Das Betriebssystem ist dabei fast egal. Es muss natürlich auch kein Notebook sein, sondern kann auch eine normale Workstation sein.
Zum Technischen
DCF77 sendet das Signal mit einer relativ niedrigen Frequenz von 77,5kHz. Eine Soundkarte mit eine Samplerate von 192 kHz kann noch eine Frequenz von 96 kHz erzeugen. Diese Frequenz können wir Menschen natürlich nicht mehr hören (Lautsprecher dürften dort aber auch keine nennenswerten akustische Wellen mehr erzeugen). Der Verstärker und der Magnet vom Lautsprecher bekommen dennoch einen hochfrequenten Wechselstrom und wirken als kleine Antenne. Es bildet sich ein schwaches Magnetfeld. Die Empfangseinheit von der Funkuhr nimmt den von der Soundkarte generierten Träger als originales DCF77 Signal auf und versucht es zu decodieren.
Die Codierung von dem Signal ist ziemlich einfach aufgebaut und öffentlich dokumentiert. Ich habe ein kleines C-Programm geschrieben, welches mehrere Minuten des Signals generiert und als WAV-Datei abspeichert. Dieses kann mit einem beliebigen Media Player abgespielt werden (z.B. VLC).
Normalerweise synchronisieren sich Funkuhren nur alle paar Stunden mit DCF77. Zum triggern nimmt man einfach für ein paar Sekunden die Batterien raus (einige Uhren haben eine Sync Taste). Die Systemlautstärke sollte auf 100% stehen um einen bestmöglichen Effekt zu erzielen. Die Lautstärke in VLC darf nicht auf über 100% gestellt werden. Das Signal wird sonst softwareseitig übersteuert und breitbandiger, sodass das sogar eine schlechteres Ergebnis erzielen würde.
Das tolle an diesem Hack ist, dass quasi jedes Abspielgerät mit 192 kHz als Sender dienen kann. Das eigentliche Senden ist (fast) nicht zu hören. Der Hack kann sogar als Angriff aufgebaut werden: Dank diverser Möglichkeiten im Webbrowser Töne abzuspielen, kann ein Webseitenbesucher ungewollt zum Störsender werden. Ich habe versucht ein Proof-Of-Concept hierfür zu schreiben, jedoch ist die Webaudio API von Chrome zur Zeit noch etwas verbuggt und Firefox hat bei mir als Samplerate nur 44,1 kHz angenommen. Aber das sind sicher nur kleine Probleme (wenn jemand sowas für den Browser implementiert hat, bitte bescheid sagen :-) ).
Falls es jemand nachmachen möchte: Unbedingt darauf achten, dass das System auch auf 192 kHz eingestellt ist (findet man unter Windows in der Systemsteuerung) und die Funkuhr nah genug am Lautsprecher steht. Man muss jedoch etwas gedult haben, da eine Funkuhr meistens mehrere Minuten empfängt, bis die externe Uhrzeit nach dem Starten der Synchronisierung angenommen wird. Bei meiner Testuhr im Schnitt 3,5 Minuten. Deshalb am besten direkt eine 10 Minuten lange Datei generieren.
Download
Damit nicht jeder nur zum Testen den Audiodatei Generator braucht, habe ich mal ein Testfile hochgeladen. Einfach mit VLC abspielen:
Download (dcf77.wav)
Download vom Generator (getestet auf Windows und Linux):
Download (timegen-0.4-src.zip)
Download (timegen-0.4-bin-win.zip)
Beispiel:
timegen -o dcf77.wav -t 2015-10-21.16:29 -m 10
Wenn nun dcf77.wav abgespielt wird und eine Funkuhr in der Nähe des Lautsprechers synchronisiert, dann sollte nach wenigen Minuten die neue Zeit übernommen werden. Achtung: Ich kann mir sehr gut vorstellen, dass das nicht legal ist, bzw. von der Bundesnetzagentur nicht sehr gerne gesehen wird.
Danke an alle, die mir dabei geholfen haben! Wenn ihr noch Fragen zu dem Hack habt, schreibt mir einfach eine E-Mail. Und lasst euch nicht dabei erwischen, wie die Funkuhr vom Chef vorgestellt wird :-)