Not that I'm willing to risk bricking my new OLED to do this, but would root access allow me to change the screen saver images? Just curious. It really pisses me off that LG doesn't allow this out of the box.
Not that I'm willing to risk bricking my new OLED to do this, but would root access allow me to change the screen saver images? Just curious. It really pisses me off that LG doesn't allow this out of the box.
I also got at least the tar error, not sure about the rest. You shouldn't have received the "try install any app from market" message unless the exploit worked, but maybe it's bugged somehow.When I execute the exploit and it asks to install any app from the appstore, it stays stuck in the message loop "try install any app from market". I installed several different application but no success.
Also, when I run the exploit it showes a couple of errors (see below) Am I out of luck or is this fixable?
/media/developer $ /media/developer $ ./root
tar: .: Cannot utime: Operation not permitted
tar: Error exit delayed from previous errors
chmod: jail_app.conf: Operation not permitted
chmod: jail_app.conf.sig: Operation not permitted
chmod: log: Operation not permitted
first stage
second stage
third stage -
try install any app from market
wait...
try install any app from market
try install any app from market
try install any app from market
try install any app from market
try install any app from market
For those of you here stuck on 05.30.25 and wanting to downgrade:
I was able to install http://su.lge.com/GlobalSWDownloadC....k2l-4301-05.40.01-prodkey_nsu_V3_SECURED.epk onto my USA
B6 using this method and then downgrade back to 04.31.20 using the same method.
Let me know if that link dies and I can try to provide a mirror.
/dev/mmcblk0p27 on /old_root type squashfs (ro,relatime)
mount -o remount,rw /old_root
mount -o rw,remount /old_root /old_root
mount -o rw,remount /dev/mmcblk0p27 /old_root
Linux LGwebOSTV 4.4.84-150.glacier.1 #1 SMP PREEMPT Mon Sep 17 02:32:39 UTC 2018 armv7l GNU/Linux
Hello,
What about adding a new universal root tool for all modelslet me know if you're interested.
Well, there was really lot of exploits that i discovered on my 52LB670V Model, directory traversal, replace existing system binaries, wrong permissions and that was even not needing special skills. some got patched and some not and i believe will never get patched because of the system requirement. but i think LG will act to limit the damage with some workarounds.
i will not burn all the exploits but i think i will use one that i believe exists on all models/versions (not tested on all webOS versions) i will need some logs from different webOS versions specially 3 and above to release the tool.
i may post some pictures later if there is good support from users.
LOL seems LG Got me back to XDA Devs after a very long time.
I can provide logs and I'm sure many users would love to root their TV as well
mkdir logs
cat /var/run/nyx/device_info.json > logs/device_info.json
cat /var/run/nyx/os_info.json > logs/os_info.json
cat /proc/cpuinfo > logs/cpu.log
ls -arls /var/log/ > logs/logdir.log
ls -arls /usr/lib/ > logs/libsdir.log
ls -arls /proc/ > logs/procdir.log
ls -arls /dev/ > logs/devices.log
That's great need TV model and webOS version and some commands from the tv.
okay first of all create a dir named logs :
Code:mkdir logs
TV Infos :
(delete your nduid serial number and mac addresses)Code:cat /var/run/nyx/device_info.json > logs/device_info.json
webOS Infos :
Code:cat /var/run/nyx/os_info.json > logs/os_info.json
Code:cat /proc/cpuinfo > logs/cpu.log
Code:ls -arls /var/log/ > logs/logdir.log
Code:ls -arls /usr/lib/ > logs/libsdir.log
Code:ls -arls /proc/ > logs/procdir.log
Code:ls -arls /dev/ > logs/devices.log
i think that's everything i need, upload the logs dir somewhere and put a link here.
@Maroc-OS
I installed the dev app and set up everything
but i think your commands are wrong
i can't run any of them \
i think i need to run them as ares and idk how to
if you can show me how to get the logs that would be great
That's great need TV model and webOS version and some commands from the tv.
i think that's everything i need, upload the logs dir somewhere and put a link here.
I've already root TV, but anyway - here it's mine logs:
https://dropmefiles.com/1gROq
Hello that's really helpful thank you, but i need new versions if ppl can help this will be really great.
The root is already done but those infos will help me to make a cross-compatible package manager for all LG TV's (Modified and fixed version of Preware 2), so you can add repo's and install packages from everyone else.
I could use your help rooting my lg 65uf6450-ua if you would. Thank you
ssh -i <your private ssh-key> [email protected]<ip-tv> -p 9922 "/bin/sh -i"
chmod +x root
./root
busybox chroot /proc/1/root
[email protected]:/# id
uid=0(root) gid=0(root)........
ApplicationInstallerUtility -c install -p /tmp/<any-name>.ipk -u 0 -l /media/developer -d
luna-send -n 1 -f luna://com.palm.systemservice/osInfo/query '{ "subscribe": false }'
luna-send -n 1 -f luna://com.webos.applicationManager/launch '{"id": "netflix"}'
luna-send -n 1 "palm://com.palm.applicationManager/listLaunchPoints" "{}"
[email protected]:/# mkdir -p /media/cryptofs/root/etc
[email protected]:/# cp -r /etc/* /media/cryptofs/root/etc
[email protected]:/# mount -o bind /media/cryptofs/root/etc /etc
[email protected]:/# passwd root
cp /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh /tmp/start-devmode.sh
mount -o bind /media/cryptofs/root/etc /etc
telnetd -l /sbin/sulogin &
luna-send -n 1 -f luna://com.webos.applicationManager/launch '{"id": "netflix", "params":{}}'
#!/bin/sh
mount -o bind /media/cryptofs/root/etc /etc
telnetd -l /sbin/sulogin &
#luna-send -n 1 -f luna://com.webos.applicationManager/launch '{"id": "netflix", "params":{}}'
# FIXME: disable this to turn off script echo
set -x
# FIXME: disable this to stop script from bailing on error
# set -e
# TODO: Check upstart daemon/process tracking (do we need to change /etc/init/devmode.conf? start sshd as daemon?)
# set devmode ssh port here
SSH_PORT="9922"
# set arch:
ARCH="armv71"
grep -qs "qemux86" /etc/hostname && ARCH="i686"
# set directories
OPT_DEVMODE="/opt/devmode"
OPT_SSH="/opt/openssh"
DEVELOPER_HOME="/media/developer"
DEVMODE_SERVICE_DIR="/media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service"
CRYPTO_SSH="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt/openssh"
CRYPTO_OPT="$DEVMODE_SERVICE_DIR/binaries-${ARCH}/opt"
if [ -s ${DEVMODE_SERVICE_DIR}/jail_app.conf ] ; then
mv ${DEVMODE_SERVICE_DIR}/jail_app.conf ${DEVELOPER_HOME}
mv ${DEVMODE_SERVICE_DIR}/jail_app.conf.sig ${DEVELOPER_HOME}
fi
if [ -r ${DEVMODE_SERVICE_DIR}/sessionToken ] ; then
mv -f ${DEVMODE_SERVICE_DIR}/sessionToken /var/luna/preferences/devmode_enabled
fi
# Make sure the ssh binaries are executable (in service directory)
if [ ! -x "${CRYPTO_SSH}/sbin/sshd" ] ; then
chmod ugo+x ${CRYPTO_SSH}/sbin/sshd ${CRYPTO_SSH}/bin/ssh* ${CRYPTO_SSH}/bin/scp* || true
chmod ugo+x ${CRYPTO_SSH}/bin/sftp ${CRYPTO_SSH}/lib/openssh/* || true
chmod ugo+x ${CRYPTO_OPT}/devmode/usr/bin/* || true
fi
# TODO: (later) Look for "re-init" flag to re-generate ssh key if requested by app (via devkey service)
# com.palm.service.devmode could have "resetKey" method to erase /var/lib/devmode/ssh/webos_rsa
# Kind of dangerous though, since new key will need to be fetched on the desktop (after reboot)...
# We could just require a hard-reset of the TV which should blow away /var/lib/devmode/ssh/...
# Initialize the developer (client) SSH key pair, if it doesn't already exist
if [ ! -e /var/lib/devmode/ssh/webos_rsa ] ; then
mkdir -p /var/lib/devmode/ssh
chmod 0700 /var/lib/devmode/ssh
# get FIRST six (UPPER-CASE, hex) characters of 40-char nduid from nyx-cmd
# NOTE: This MUST match passphrase as displayed in devmode app (main.js)!
# PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | head -c 6 | tr 'a-z' 'A-Z'`"
# PASSPHRASE="`/usr/bin/nyx-cmd DeviceInfo query nduid | tail -n1 | head -c 6 | tr 'a-z' 'A-Z'`"
PASSPHRASE="`tail /var/lib/secretagent/nduid -c 40 | head -c 6 | tr 'a-z' 'A-Z'`"
${CRYPTO_SSH}/bin/ssh-keygen -t rsa -C "[email protected]" -N "${PASSPHRASE}" -f /var/lib/devmode/ssh/webos_rsa
# copy ssh key to /var/luna/preferences so the devmode service's KeyServer can read it and serve to ares-webos-cli tools
cp -f /var/lib/devmode/ssh/webos_rsa /var/luna/preferences/webos_rsa
chmod 0644 /var/luna/preferences/webos_rsa
# if we generated a new ssh key, make sure we re-create the authorized_keys file
rm -f ${DEVELOPER_HOME}/.ssh/authorized_keys
fi
# Make sure the /media/developer (and log) directories exists (as sam.conf erases it when devmode is off):
mkdir -p ${DEVELOPER_HOME}/log
chmod 777 ${DEVELOPER_HOME} ${DEVELOPER_HOME}/log
# Install the SSH key into the authorized_keys file (if it doesn't already exist)
if [ ! -e ${DEVELOPER_HOME}/.ssh/authorized_keys ] ; then
mkdir -p ${DEVELOPER_HOME}/.ssh
cp -f /var/lib/devmode/ssh/webos_rsa.pub ${DEVELOPER_HOME}/.ssh/authorized_keys || true
# NOTE: authorized_keys MUST be world-readable else sshd can't read it inside the devmode jail
# To keep sshd from complaining about that, we launch sshd with -o "StrictModes no" (below).
chmod 755 ${DEVELOPER_HOME}/.ssh
chmod 644 ${DEVELOPER_HOME}/.ssh/authorized_keys
chown -R developer:developer ${DEVELOPER_HOME}/.ssh
fi
# FIXME: Can we move this to /var/run/devmode/sshd ?
# Create PrivSep dir
mkdir -p /var/run/sshd
chmod 0755 /var/run/sshd
# Create directory for host keys (rather than /opt/openssh/etc/ssh/)
HOST_KEY_DIR="/var/lib/devmode/sshd"
if [ ! -d "${HOST_KEY_DIR}" ] ; then
mkdir -p ${HOST_KEY_DIR}
chmod 0700 ${HOST_KEY_DIR}
fi
# Create initial keys if necessary
if [ ! -f ${HOST_KEY_DIR}/ssh_host_rsa_key ]; then
echo " generating ssh RSA key..."
${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_rsa_key -N '' -t rsa
fi
if [ ! -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key ]; then
echo " generating ssh ECDSA key..."
${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_ecdsa_key -N '' -t ecdsa
fi
if [ ! -f ${HOST_KEY_DIR}/ssh_host_dsa_key ]; then
echo " generating ssh DSA key..."
${CRYPTO_SSH}/bin/ssh-keygen -q -f ${HOST_KEY_DIR}/ssh_host_dsa_key -N '' -t dsa
fi
# Check config
# NOTE: This should only be enabled for testing
#${CRYPTO_SSH}/sbin/sshd -f ${CRYPTO_SSH}/etc/ssh/sshd_config -h ${HOST_KEY_DIR}/ssh_host_rsa_key -t
# Set jailer command
DEVMODE_JAIL="/usr/bin/jailer -t native_devmode -i com.palm.devmode.openssh -p ${DEVELOPER_HOME}/ -s /bin/sh"
#DEVMODE_JAIL="echo"
# Add for debugging, but this will cause sshd to exit after the first ssh login:
# -ddd -e
# Make environment file for openssh
DEVMODE_JAIL_CONF="/etc/jail_native_devmode.conf"
DEVMODE_OPENSSH_ENV="${DEVELOPER_HOME}/.ssh/environment"
if [ -f ${DEVMODE_JAIL_CONF} ]; then
echo " generating environment file from jail_native_devmode.conf..."
find ${DEVMODE_JAIL_CONF} | xargs awk '/setenv/{printf "%s=%sn", $2,$3}' > ${DEVMODE_OPENSSH_ENV}
${DEVMODE_JAIL} /usr/bin/env >> ${DEVMODE_OPENSSH_ENV}
fi
# Set path for devmode
if [ -f ${DEVMODE_OPENSSH_ENV} ]; then
echo "PATH=${PATH}:${OPT_DEVMODE}/usr/bin" >> ${DEVMODE_OPENSSH_ENV}
fi
sleep 5;
for interface in $(ls /sys/class/net/ | grep -v -e lo -e sit);
do
if [ -r /sys/class/net/$interface/carrier ] ; then
if [[ $(cat /sys/class/net/$interface/carrier) == 1 ]]; then OnLine=1; fi
fi
done
#if [ $OnLine ]; then
# sessionToken=$(cat /var/luna/preferences/devmode_enabled);
# checkSession=$(curl --max-time 3 -s https://developer.lge.com/secure/CheckDevModeSession.dev?sessionToken=$sessionToken);
# if [ "$checkSession" != "" ] ; then
# result=$(node -pe 'JSON.parse(process.argv[1]).result' "$checkSession");
# if [ "$result" == "success" ] ; then
rm -rf /var/luna/preferences/dc*;
# # create devSessionTime file to remain session time in devmode app
# remainTime=$(node -pe 'JSON.parse(process.argv[1]).errorMsg' "$checkSession");
# resultValidTimeCheck=$(echo "${remainTime}" | egrep "^([0-9]{1,4}(:[0-5][0-9]){2})$");
# if [ "$resultValidTimeCheck" != "" ] ; then
echo '900:00:00' > ${DEVMODE_SERVICE_DIR}/devSessionTime;
chgrp 5000 ${DEVMODE_SERVICE_DIR}/devSessionTime;
chmod 664 ${DEVMODE_SERVICE_DIR}/devSessionTime;
# fi
# elif [ "$result" == "fail" ] ; then
# rm -rf /var/luna/preferences/devmode_enabled;
# rm -rf /var/luna/preferences/dc*;
# if [ -e ${DEVMODE_SERVICE_DIR}/devSessionTime ] ; then
# rm ${DEVMODE_SERVICE_DIR}/devSessionTime;
# fi
# fi
# fi
#fi
# Cache clear function added (except Local storage)
if [ -e ${DEVMODE_SERVICE_DIR}/devCacheClear ] ; then
rm -rf `ls | find /var/lib/webappmanager*/* -name "Local Storage" -o -name "localstorage" -prune -o -print`;
rm ${DEVMODE_SERVICE_DIR}/devCacheClear;
fi
# Launch sshd
${DEVMODE_JAIL} ${OPT_SSH}/sbin/sshd
-o StrictModes=no
-f ${OPT_SSH}/etc/ssh/sshd_config
-h ${HOST_KEY_DIR}/ssh_host_rsa_key
-o PasswordAuthentication=no -o PermitRootLogin=no -o PermitUserEnvironment=yes
-D -p ${SSH_PORT}
cp /tmp/start-devmode.sh /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
telnet <ip-tv>
Trying <ip-tv>...
Connected to <ip-tv>].
Escape character is '^]'.
webOS TV 1.4.0 LGSmartTV
Give root password for system maintenance
(or type Control-D for normal startup):
Entering System Maintenance Mode
[email protected]:/#