RootMyTV / RootMyTV.github.io

RootMyTV is a user-friendly exploit for rooting/jailbreaking LG webOS smart TVs.
https://RootMy.TV
MIT License
2.24k stars 65 forks source link

Option to disable telemetry? #19

Open vordenken opened 2 years ago

vordenken commented 2 years ago

Would it be possible to add the option to disable all telemetry from the tv? For example as a checkbox in the home-brew app ?

Informatic commented 2 years ago

That's an interesting option.

The question is how deep shall it go? Do we just block all LG services altogether? That should be fairly doable by DNS injection and feeding in "our" custom LGTVSDP service (like this, or that) to fix time synchronization. (LG properly validates TLS certificates when communicating these, except for the first request, which is used for time synchronization - we could make that shim just do a proper NTP request and respond with a proper message)

The most invasive telemetry that @DavidBuchanan314 found during initial research (ie. rdxd) which seems to capture things like app opens, crashes and some prompts/notifications is already blocked by default.

Another thing I noticed (though this hasn't been rolled out on my firmware) is some newer versions of webOS are integrated with https://www.samba.tv/ and https://www.nielsentam.tv/ - we could probably poke around to kill off / disable services that are feeding data there. Keywords would be libsambasolution.so and libnielsensolution.so, if I recall correctly. (I was looking at it half a year ago already, but we can probably come back to that game)

vordenken commented 2 years ago

Thanks for your extensive reply! Maybe there could be two options: One for only disabling the telemetry stuff but leaving the LG Content Store mostly intact (for installing apps and app updates) and one for completely blocking lg (telemetry and Content Store) Unfortunately I don't know if those two things actually can be separated or would need to be disabled altogether.

Informatic commented 2 years ago

I don't think that's possible either :)

We block off rdxd (metrics/debugging, via immutable directory mount) and snu (updates, via dns poisoning) communication already, and seems like everything else is going through the same domains as Content Store.

Informatic commented 2 years ago

Regardless - if you are running your own DNS server and know how to block out multiple domains, these are the ones I saw: (mind - they are wildcards - prefixed with selected region code)

address=/.lgtvsdp.com/127.0.0.1
address=/.lgsmartad.com/127.0.0.1
address=/.lgappstv.com/127.0.0.1
address=/.lgtviot.com/127.0.0.1
address=/.lgtvcommon.com/127.0.0.1

# This one will also block out all actually useful LGs sites, so... watch out.
address=/.lge.com/127.0.0.1
Informatic commented 2 years ago

So... Content recognition stuff I mentioned before is handled by either /usr/sbin/acr or /usr/sbin/acr2 - they claim it should respect "Live Plus" option in Settings ("Live Plus offers an enhanced viewing experience by recognizing what's displayed on your TV. You can turn off Live Plus now or at any time in Settings. To learn more, please review the User Agreements in Settings.")

Of course, if anyone really wants to block it off a simple solution would be to create an executable script in /var/lib/webosbrew/init.d/block-acr with contents like these (just like we do in our install script):

#!/bin/sh
# Adjust acr to acr2 if that's the name on your platform...
mount --bind /bin/false /usr/sbin/acr
pkill -9 -f acr
tandy-1000 commented 2 years ago

Semi related, but today I got a notification in the top right when I turned on the TV saying something about 3 months free Apple TV...

Informatic commented 2 years ago

Yes, these are notifications that are delivered via LGTVSDP API I mentioned above. One of other funny features of that API is forced remote app install.

alinflory commented 1 year ago

Device -43UM7100PLB Firmware version:05.30.30 webOS version:4.9.0 Doesn't work Disables some telemetry