Page 1 of 26

Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Sun Mar 09, 2014 12:58 pm
by sectroyer
THIS PART IS ONLY FOR C!!!!!!
FOR OTHER MODELS CHECK OTHER POSTS :)!!!!!!
I wanted to make as little changes to original SamyGO files as possible. Therefore (whenever it was possible) I have put most of my code in seperate files (rcEXT, rc.fix_telnetd, etc.). However probably it could be simplified and integrated directly with existing files (/dtv/.ashrc or /dtv/SGO.env). In order to make telnet working correctly (full bash history across reconnects and restarts, no more need to type . /dtv/SGO.env to have everything set up). You have to create following files:

$SYSROOT/rcEXT:

Code: Select all

#!/bin/sh

source /dtv/SGO.env

#echo "alias sgopwd='cd $1'" >> /dtv/SGO.env

echo "#!/dtv/network_opt/sh" > /dtv/sgoshfix
echo ". /dtv/SGO.env" >> /dtv/sgoshfix
echo "export HOME=\"$1\"" >> /dtv/sgoshfix
echo "export TERMINFO='$1/etc/terminfo'" >> /dtv/sgoshfix
echo "export TERM='xterm-color'" >> /dtv/sgoshfix
echo "export FRAMEBUFFER='/dev/sam/fb0'" >> /dtv/sgoshfix
echo "export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH\"" >> /dtv/sgoshfix
echo "export PATH=\"$PATH\"" >> /dtv/sgoshfix
echo "export SYSROOT=\"$SYSROOT\"" >> /dtv/sgoshfix
echo "export PS1='\u@tv:\w \\$ '" >> /dtv/sgoshfix

chmod +x /dtv/sgoshfix

ln -s "$SYSROOT/opt/privateer/usr/bin/" /dtv/bin

$1/etc/rc.fix_telnetd&
$SYSROOT/etc/rc.fix_telnetd:

Code: Select all

#!/bin/sh
killall telnetd
. /dtv/sgoshfix
cd
telnetd -l /dtv/network_opt/sh
In some cases you may have to run:

Code: Select all

chmod +x $SYSROOT/rcEXT
chmod +x $SYSROOT/etc/rc.fix_telnetd
Finally add to the end of $SYSROOT/rcSGO this single line:

Code: Select all

$1/rcEXT "$1"
After this you will have "fixed" telnet working. In order to "fix" SSH you just have to change the file $SYSROOT/etc/rc.sysinit. Locate the line:

Code: Select all

echo "export PS1='# '" >> /mtd_rwarea/profile
Comment it out and put bellow these lines:

Code: Select all

echo "PS1='\u@tv:\w \# '" >> /mtd_rwarea/profile
echo -e "ENV=/dtv/.ashrc\nexport ENV\n" >> /mtd_rwarea/profile
echo ". /dtv/sgoshfix" >> /mtd_rwarea/profile
 
mount -o bind /dtv/network_opt/sh /bin/sh 
Now both telnet and SSH have colors, full bash history across reconnects/reboots and always start a shell in $SYSROOT directory.

To get SCP working we just need to copy patched dropbear binary (attached in archive) to:

Code: Select all

$SYSROOT/opt/privateer/usr/sbin/dropbear
and scp static binary to:

Code: Select all

/opt/privateer/usr/bin/scp

Re: Fixing SamyGO telnet/SSH/SCP/bash on C series

Posted: Mon Mar 10, 2014 4:01 pm
by juusso
will check on D series (but need to adapt pathes first). Would be great to get reports from some other C series testers too.

Re: Fixing SamyGO telnet/SSH/SCP/bash on C series

Posted: Tue Mar 11, 2014 10:08 am
by sectroyer
FOR E SERIES YOU HAVE TO DO THIS!!!!!!

You have to use dropbearmulti from archive attached in this post to get scp working for telnet and SSH it is enough to locate in /mnt/etc/rc.sysinit these lines:

Code: Select all

echo "export PS1='# '" >> /mtd_rwarea/profile
echo -e "ENV=/dtv/.ashrc\nexport ENV\n" >> /mtd_rwarea/profile
And change it to:

Code: Select all

echo "PS1='root@tv:\w \$ '" >> /mtd_rwarea/profile
echo -e "ENV=/dtv/.ashrc\nexport ENV\n" >> /mtd_rwarea/profile

ln -s /mnt/bin/ /dtv/bin
Than I have modified ./etc/init.d/01_01_catch_crap.init. I fixed the line with wrong path to mount.ko and added three more. Now it looks like this:

Code: Select all

    [ -e $MOD_DIR/kernel/drivers/pty/mount.ko ] && insmod $MOD_DIR/kernel/drivers/pty/mount.ko || echo "mount.ko not found."

    /bin/mount -o bind /mtd_rwarea/passwd /etc/passwd
    /bin/mount -o bind /mtd_rwarea/profile /etc/profile
    /bin/mount -o bind /mnt/bin/sh /bin/sh
Finally fix for telnetd (the same file) :

Code: Select all

    export HOME=/mnt/
    export PS1='root@tv:\w \$ '
    $SYSROOT/bin/busybox2 telnetd  -l /mnt/bin/sh
We need to change /bin/sh to /mnt/bin/sh (although at this moment it doesn't matter since we already mount-binded it ;)) and set up HOME and PS1 variables.

For scp we also needto change dropbearmulti to the one from the archive. Then we just make a symbolic link to dbclient:

Code: Select all

ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/bin/dbclient
ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/bin/scp
ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/opt/privateer/usr/sbin/dropbear
After this I have working bash history, telnet, ssh and scp :)

EDIT: Attached my /mnt/bin/busybox and dropbearmulti binaries.
bobiturboto wrote:FOR F SERIES YOU HAVE TO DO THIS!!!!!!

You have to use dropbearmulti from archive attached in this post to get scp working for telnet and SSH.

Upload and replace /mnt/opt/privateer/usr/sbin/dropbearmulti with the attached file.

Locate these lines in /mnt/etc/init.d/01_02_telnet.init :

Code: Select all

$SYSROOT/bin/busybox2 telnetd -p 23 -l $SYSROOT/bin/ash &  >> $LOGFILE 2>&1
Replace the line with this:

Code: Select all

	echo "export PS1='root@tv:\w \$ '" >> /mtd_rwarea/profile
	echo -e "ENV=/dtv/.ashrc\nexport ENV\n" >> /mtd_rwarea/profile
	echo "PS1='root@tv:\w \$ '" >> /mtd_rwarea/profile
	echo -e "ENV=/dtv/.ashrc\nexport ENV\n" >> /mtd_rwarea/profile
	/bin/mount -o bind "$SYSROOT/bin/sh" /bin/sh
	export HOME=/mnt/
	export PS1='root@tv:\w \$ '
	$SYSROOT/bin/busybox2 telnetd -p 23 -l $SYSROOT/bin/sh &  >> $LOGFILE 2>&1
In the same file find this part:

Code: Select all

        if [ ! -e /mtd_rwarea/passwd ]; then
                echo "root:saJvQKUdIxRW2:0:0:SamyGO secured Root:$NEW_HOME:$SYSROOT/bin/ash" > /mtd_rwarea/passwd
        fi
Replace it with this:

Code: Select all

	ln -s /mnt/bin/ /dtv/bin
		if [ ! -e /mtd_rwarea/passwd ]; then
                echo "root:saJvQKUdIxRW2:0:0:SamyGO secured Root:$HOME:/bin/sh" > /mtd_rwarea/passwd
        fi
Then run this commands:

Code: Select all

umount /mtd_rwarea/passwd
rm /mtd_rwarea/passwd
Execute the listed commands through telnet connection.

Code: Select all

chmod +x /mnt/opt/privateer/usr/sbin/dropbearmulti
rm /mnt/opt/privateer/usr/sbin/dropbear
ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/bin/dbclient
ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/bin/scp
ln -s /mnt/opt/privateer/usr/sbin/dropbearmulti /mnt/opt/privateer/usr/sbin/dropbear
Reboot your TV and after that you will have fixed telnet and working ssh access with scp and ssh history.
Default ssh user is root and the password is SamyGO

Credits to sectroyer.

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Tue Mar 11, 2014 10:08 am
by juusso
after that fixes i could access tv via WinSCP :)
just keep in mind, SYSROOT on D series is ...

Code: Select all

echo $SYSROOT
/mtd_rwcommon/widgets/user/SamyGO/SamyGO
yeah, i know, better don`t mix testing different series in one topic, but i`m sure your fix will work on C/D/E/F (D/E/F are based on B/C Extensions scripts and changes were made just in matter of specific of each series).

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Tue Mar 11, 2014 10:58 am
by sectroyer
juuso wrote:after that fixes i could access tv via WinSCP :)
just keep in mind, SYSROOT on D series is ...

Code: Select all

echo $SYSROOT
/mtd_rwcommon/widgets/user/SamyGO/SamyGO
yeah, i know, better don`t mix testing different series in one topic, but i`m sure your fix will work on C/D/E/F (D/E/F are based on B/C Extensions scripts and changes were made just in matter of specific of each series).
If you got it working on D then we have all (besides F which probably is the same as E) series working :) Denny already uploaded my patch to C http://download.samygo.tv/C%20Series/Fo ... sh_mod.tgz. ATM I think it's better to prepare fixes (with defails of all changes) to every series separety. The patch are different ETC. Also do you have bash history (across reconnects/restarts) and color in both telnet and SSH ?:)

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Tue Mar 11, 2014 5:22 pm
by juusso
yes, i saw these files on server, they slightly differ from files you`ve attached here ;)

I haven`t succeed to merge your full patch with my Extensions, somewhere i still make mistakes. As result - still no benefits you mentioned. Yet.

We could merge all for each series, so no need to distribute separate fixes. Just re-install whole widget.

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Tue Mar 11, 2014 5:37 pm
by sectroyer
juuso wrote:yes, i saw these files on server, they slightly differ from files you`ve attached here ;)

I haven`t succeed to merge your full patch with my Extensions, somewhere i still make mistakes. As result - still no benefits you mentioned. Yet.

We could merge all for each series, so no need to distribute separate fixes. Just re-install whole widget.
I don't like reinstalling everything ;) Anyway I don't know much about D series Extension but it shouldn't be much different. Since you already have SCP working than now it should just be a matter of launching telnet with different "sh". I have unpacked the D Extensions from the website so they probably differ a little but it looks that you have busybox in /SamyGO/bin/busybox so just make a smiling to it in /SamyGO/bin/sh, then relaunch telnetd with this shell :)

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Sat Mar 15, 2014 3:09 pm
by sectroyer
How is the progress ? :) When D becomes stable I think it's good point to release full C/D/E support. C/E is very stable ATM :)

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Mon Mar 17, 2014 5:44 pm
by zoelechat
I've done every step and everything works as expected (colors, SCP...)
Just had a strange problem: rcEXT couldn't be executed, neither by rcSGO nor manually (of course it was present and chmodded +x :) )

Code: Select all

root@tv:/mnt # ./rcEXT
/mnt/bin/sh: ./rcEXT: not found
So /dtv/sgoshfix was never created and ssh gave an error on open because it was unable to find the file.
I've just included rcEXT code at the end of rcSGO and the problem is gone...

I also need to launch dropbear manually to have ssh/SCP/port 22 opened, where should I include it to be safely executed? Somewhere in catch_crap.init I presume?

Re: Fixing SamyGO telnet/SSH/SCP/bash on C/D/E/F series

Posted: Mon Mar 17, 2014 5:46 pm
by sectroyer
zoelechat wrote:I've done every step and everything works as expected (colors, SCP...)
Just had a strange problem: rcEXT couldn't be executed, neither by rcSGO nor manually (of course it was present and chmodded +x :) )

Code: Select all

root@tv:/mnt # ./rcEXT
/mnt/bin/sh: ./rcEXT: not found
So /dtv/sgoshfix was never created and ssh gave an error on open because it was unable to find the file.
I've just included rcEXT code at the end of rcSGO and the problem is gone...

I also need to launch dropbear manually to have ssh/SCP/port 22 opened, where should I include it to be safely executed? Somewhere in catch_crap.init I presume?
On which TV model were you testing it?