Dominik Meyer

Personal Page

Unsmart

Als ich mir den Samsung UE40F5400 "Smart" TV kaufte, habe ich diesen für einige Zeit normal mit dem Internet verbunden verwendet. Ich stellte aber fest, dass ich die meisten Apps und Funktionen gar nicht verwendet habe, sondern nur Fernsehsendungen aufgezeichnet und lokale Dateien von Festplatte angesehen habe. Also habe ich im Sinne der Datensparsamkeit den Fernseher vom Internet getrennt. Daraufhin waren die meisten Funktionen nicht mehr verfügbar, selbst wenn diese keine Internetverbindung vorausgesetzt haben. Die große Frage ist nun, wieso der Fernseher mit dem Internet verbunden sein muss um lokale Dateien abzuspielen? Was macht Samsung mit meinen Daten, und welche Daten werden überhaupt rausgesendet?

Dieses Verhalten ist unakzeptabel und hat mich dazu bewogen mir die ganze Sache einmal etwas genauer unter die Lupe zu nehmen.

Da ich sowieso noch einen ungenutzten Raspberry Pi in meinem lokalen Netzwerk am laufen hatte, habe ich diesen verwendet um den Netzwerkverkehr von und zum Ferneseher über diesen umzuleiten und mittels Wireshark zu inspizieren. Dazu muss man nicht einmal einen externen Monitor mit dem Raspberry verbinden.

Als allererstes muss die Paketweiterleitung auf dem Raspberry mittels

$ sudo sysctl -w net.ipv4.ip_forward=1

aktiviert werden. Dies funktioniert nur für IP4, aber IP6 ist für dieses Produkt sowieso irrelevant ...

Anschließend leitet man den Verkehr mittels NAT vom Fernseher durch den Raspberry. Am Fernseher wir dann die IP des Raspberry als Gateway Adresse eingestellt.

$ sudo iptables -t nat -F
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT

Um den Verkehr dann remote via wireshark auf einem Rechner inspizieren zu können leitet man die Ausgabe von tcpdump mittels

$ ssh <raspberry pi> "sudo tcpdump -U -s0 -w - 'not port 22'" | wireshark -k -i -

um.

Schaut man nun in den Datenverkehr, so passiert schon eine Menge an Verker alleine beim Einschalten. Manche Verbindungen verschlüsselt, viele aber auch unverschlüsselt. Um festzustellen, ob der Fernseher mit dem Internet verbunden ist, so scheint es wird eine Anfrage an samsung.com gestellt und eine XML-Datei heruntergeladen (die Frage ist ja auch, was passiert wenn samsung.com offline ist ...). Diese Datei scheint einige US Börsendaten zu beinhalten, hat aber auch 3 sehr seltsame Bytes am Anfang der Datei. Wird die Datei simuliert ohne diese 3 Bytes, so funktioniert der Fernseher nicht. Darin scheint also etwas spezielles zu passieren.

Um diese exakte Datei zu bekommen, kann man nun in Wireshark "Follow TCP Stream" anwählen und den Inhalt der Verbindung abspeichern. Anschließend kann mittels einem dnsmasq server auf dem Raspberry und einem sehr simplen Python TCP Server, der nur die abgespeicherte Datei ausliefert, die Internetverbindung simuliert werden. Ist es gewünscht, dass doch noch einzelen Apps (z.B. YouTube) funktionieren sollen, so müssen die entsprechenden Domains in der dnsmasq Konfiguration freigeschaltet werden.

Alle Informationen und Konfigurationsdateien und wie sie zu verwenden sind können im Github Repoitory Unsmart eingesehen werden.