Descarga y carga de archivos a través de sesión telnet


15

Tengo un dispositivo de asistencia funcionando Linux OS. Puedo conectar este dispositivo a través de la sesión de telnet. Hay algunos archivos en el dispositivo que me gustaría descargar y cargar con nuevos archivos. ¿Cómo puedo hacer eso? Tengo muy poco conocimiento sobre el sistema operativo Linux. ¿Podrías ayudarme?

ingrese la descripción de la imagen aquí


¿Cuántos archivos quieres transferir? Se puede pegar en algún lugar de salida de busybox --helpy ls -l /bin, y ls -l /usr/bin, por favor.
jofel

De hecho, quiero cambiar el fondo de escritorio de este dispositivo de asistencia y quiero cargar el logotipo de nuestra empresa allí en el dispositivo. Dichas opciones no están disponibles en el menú del dispositivo (ya solicité esta opción al proveedor). Entonces lo conecté a través de la sesión de telnet y encontré desktop.jpg y otros archivos de imagen en el dispositivo. Ahora quiero obtener estos archivos en mi sistema local. y después de verificar lo mismo, cargaré mis imágenes deseables en el dispositivo. Por lo tanto, actualizará la imagen del dispositivo de acuerdo con mis imágenes deseables. Quiero cambiar al menos la imagen de escritorio que está disponible en el dispositivo en / mnt / mtdblock / image
PRdeep Kumawat

Si desea agregar información la próxima vez, edite su pregunta en lugar de agregar comentarios.
jofel

Respuestas:


12

Esto depende de qué herramientas estén instaladas en el dispositivo cliente / admitidas por el núcleo.

Posibles métodos para la transferencia de archivos (sin ordenar):

  • ssh / sftp
  • codificar archivos binarios en formato visualizable con base64 / uuencode y luego copiar desde / en la ventana de su terminal telnet.
  • sobre una conexión tcp simple con netcato socato con bashy / dev / tcp
  • cargar / descargar con wgeto curldesde un servidor web
  • servidor ftp con un cliente ftp de línea de comando
  • montaje samba o nfs

Lea Transferencia de archivos simple y ¿Cómo llevar el archivo a un host cuando todo lo que tiene es una consola en serie? para más posibilidades


Copie desktop.jpgdesde el dispositivo a su PC con el método netcat / nc:

En su PC, desactive temporalmente (o reconfigure si es posible) cualquier firewall y ejecute

netcat -l -p 10000 > desktop.jpg

y en el dispositivo

busybox nc A.B.C.D -p 10000 < desktop.jpg

donde necesita reemplazar ABCD con la dirección IP de su PC. Tan pronto como la transferencia haya sido exitosa, el proceso de netcat en su PC debería detenerse automáticamente. Si no, algo está mal y puedes detenerlo conCtrl+C

Para la otra dirección, solo intercambie <y >en ambos lados. Primero haga una copia de seguridad del original desktop.jpg( cp desktop.jpg desktop_orig.jpg).


Probé la utilidad WinSCP e intenté conectar el dispositivo usando el protocolo ftp / sftp / scp. Pero no se está conectando. Puedo conectar el dispositivo mediante el comando telnet y puedo ver los archivos que quiero obtener y cargarlos nuevamente en el dispositivo.
PRdeep Kumawat

Probablemente su dispositivo no tenga un servidor ssh o ftp ejecutándose.
jofel

Bueno, no sé eso ... ¿Hay alguna otra forma de obtener / cargar archivos desde ese dispositivo?
PRdeep Kumawat

También puede usar szpara enviar los archivos a través del terminal. Lo necesitará en ambos lados.
slm

@PRdeepKumawat Extendí la respuesta con un ejemplo.
jofel

6

No tengo ssh o ftp (o etc.) en el dispositivo.

Entonces, hago lo siguiente:

  1. telnet a.b.c.d | tee telnet.log
  2. inicia sesión y ve al archivo
  3. cat file.txt
  4. cerrar sesión (cierro el panel tmux)
  5. claro telnet.logde la basura

Debería ser fácil escribir una utilidad para descargar / cargar archivos a través de telnet


1

Prueba con el rcpcomando.

Úselo man rcppara obtener más información en caso de que desee automatizar las transferencias.

Por cierto, sabes que esto es muy inseguro , ¿verdad?


1

Acabo de cargar un archivo de firmware de ~ 7 Kb en un sistema embebido Linux basado en BusyBox a través del puerto serie.

Sin redes, sin utilidades de transferencia de archivos; sin utilidades Base64 ni nada remotamente útil en el dispositivo.

En el host, codifiqué trivialmente un firmware en el siguiente formato; un tipo de volcado hexadecimal que consiste en literales de shell combinados con printfcomandos:

printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"

básicamente printfcomandos de shell con \xsecuencias de escape que printfinterpreta. En el dispositivo que hice:

device $ cat > firmware.sh

luego usó el minicomenvío de archivos ASCII de (Ctrl-AS ) para enviar este archivo al host. Podría haber usado copiar y pegar, ya que la cantidad de datos es pequeña.

Luego, marcó el ejecutable y ejecutó el printfscript:

device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin

Se comprobó mediante BusyBox md5sumque la firmware.binsuma de comprobación en el dispositivo coincide con la imagen de firmware original en el host.

PD La sintaxis de comillas dobles de shell pasa \xliteralmente porque no es una secuencia de escape reconocida; Por lo tanto, no tenemos que duplicar las barras invertidas.


0

@jofel y todos los demás, muchas gracias por su amable asistencia. Creo que el dispositivo tiene un sistema operativo personalizado instalado, ya que reconoce solo algunos comandos específicos de Linux. netcat no es reconocido por el dispositivo. Sin embargo, hoy tuve éxito al transferir el archivo usando el comando tftp. Reemplacé con éxito el archivo desktop.jpg con este comando. Lo que hice fue crear un servidor tftp en un sistema de ventanas. inicie sesión a través de telnet en el dispositivo y ejecute estos comandos:

descargar archivo tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

subir archivo tftp -l desktop.jpg -g 192.168.0.249 69


0

He hecho esto ahora por estos métodos:

Cree un servidor ftp (instalando solerwinds) en el sistema de ventanas. inicie sesión a través de telnet en el dispositivo y ejecute estos comandos:

Para descargar un archivo:

tftp -l <FileName> -p <TFTP Server IP> <Port No of TFTP>

Ejemplo:

tftp -l desktop.jpg -p 192.168.0.249 69

o para cargar el archivo:

tftp -l <FileName> -g <TFTP Server IP> <Port No of TFTP>

Ejemplo:

tftp -l desktop.jpg -g 192.168.0.249 69

la ubicación predeterminada del archivo tftp es C:\TFTP-Root


-1

Utilizo el siguiente método para descargar pequeños archivos binarios a través de telnet en mi ventana de Windows:

  1. ejecutar hexdump -v -e '16 / 1 "% 02x" 'myfile.bin
  2. copiar volcado hexadecimal de la pantalla
  3. pegue el volcado hexadecimal en esta herramienta en línea para crear un archivo binario: http://tomeko.net/online_tools/hex_to_file.php?lang=en

¡No estoy seguro de tu enlace en el n. ° 3!

3
@Goro El enlace en este caso no es una explicación que se pueda citar, es una herramienta en línea que es esencial para la respuesta. Sería mejor tener un programa local para esa tarea.
RalfFriedl

Gracias @RalfFriedl. Edité mi respuesta para aclarar.
Igor Zelaya
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.