Download e upload de arquivos via sessão telnet

15

Eu tenho um dispositivo de atendimento em execução Linux OS. Eu posso conectar este dispositivo via sessão telnet. Existem alguns arquivos no dispositivo que eu gostaria de baixar e enviar com novos arquivos. Como eu posso fazer isso? Eu tenho muito pouco conhecimento sobre o Linux OS. Você poderia por favor ajudar!

insira a descrição da imagem aqui

PRdeep Kumawat
fonte
Quantos arquivos você deseja transferir? Você pode colar em algum lugar a saída de busybox --helpe ls -l /bine ls -l /usr/bin, por favor.
Jofel
na verdade, quero alterar o plano de fundo da área de trabalho desse dispositivo de presença e quero fazer o upload do logotipo da empresa lá no dispositivo. Essas opções não estão disponíveis no menu do dispositivo (eu já solicitei essa opção ao fornecedor). Então eu o conectei via sessão telnet e encontrei o desktop.jpg e outros arquivos de imagem no dispositivo. Agora eu quero obter esses arquivos no meu sistema local. e depois de verificar o mesmo, carregarei minhas imagens desejáveis ​​no dispositivo. Portanto, ele atualizará a imagem do dispositivo de acordo com minhas imagens desejáveis. Eu quero mudar imagem de desktop menos no que está disponível no dispositivo em / mnt / mtdblock / imagem
PRdeep Kumawat
Se você deseja adicionar informações da próxima vez, edite sua pergunta em vez de adicionar comentários.
Jofel

Respostas:

12

Isso depende de quais ferramentas estão instaladas no dispositivo cliente / suportadas pelo kernel.

Métodos possíveis para transferência de arquivos (não ordenados):

  • ssh / sftp
  • codifique arquivos binários em formato exibível com base64 / uuencode e copie de / para a janela do terminal telnet.
  • através de uma conexão tcp simples com netcatou socatou com bashe / dev / tcp
  • upload / download com wgetou curlde um servidor web
  • servidor ftp com um cliente ftp de linha de comando
  • montagem samba ou nfs

Leia Transferência simples de arquivos e Como obter arquivos para um host quando tudo o que você tem é um console serial? para mais possibilidades.


Copie desktop.jpgdo dispositivo para o seu PC com o método netcat / nc:

No seu PC, desative temporariamente (ou reconfigure, se possível) qualquer firewall e execute

netcat -l -p 10000 > desktop.jpg

e no dispositivo

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

onde você precisa substituir o ABCD pelo endereço IP do seu PC. Assim que a transferência for bem sucedida, o processo netcat no seu PC deve parar automaticamente. Caso contrário, algo está errado e você pode pará-lo comCtrl+C

Para a outra direção, basta trocar <e >nos dois lados. Faça primeiro um backup do original desktop.jpg( cp desktop.jpg desktop_orig.jpg).

jofel
fonte
Eu tentei o utilitário WinSCP e tentei conectar o dispositivo usando o protocolo ftp / sftp / scp. mas não está ficando conectado. Consigo conectar o dispositivo via comando telnet e ver os arquivos que desejo obter e carregar novamente no dispositivo.
você precisa saber é o seguinte
Provavelmente, seu dispositivo não possui um servidor ssh ou ftp em execução.
Jofel
Bem, eu não sei disso. Existe outra maneira de obter / fazer upload de arquivos desse dispositivo?
você precisa saber é o seguinte
Você também pode usar szpara enviar os arquivos pelo terminal. Você precisará dos dois lados.
slm
@PRdeepKumawat Estendi a resposta com um exemplo.
Jofel
6

Não tenho ssh ou ftp (ou etc) no dispositivo.

Então, eu faço a seguir:

  1. telnet a.b.c.d | tee telnet.log
  2. faça o login e vá para o arquivo
  3. cat file.txt
  4. fechar sessão (fecho o painel tmux)
  5. claro telnet.logdo lixo

Deve ser fácil escrever utilitário para fazer o download / upload de arquivos através de telnet

user104415
fonte
1

Tente com o rcpcomando

Use man rcppara obter mais informações, caso você queira automatizar transferências.

A propósito, você sabe que isso é muito inseguro , certo?

YoMismo
fonte
1

Acabei de enviar um arquivo de firmware de ~ 7 Kb para um sistema embarcado Linux baseado no BusyBox pela porta serial.

Sem rede, sem utilitários de transferência de arquivos; sem utilitários Base64 ou qualquer coisa remotamente útil no dispositivo.

No host, codifiquei trivialmente um firmware no seguinte formato; um tipo de hex-dump que consiste em literais de shell combinados com printfcomandos:

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

basicamente printfcomandos de shell com \xseqüências de escape que printfinterpretam. No dispositivo, eu fiz:

device $ cat > firmware.sh

em seguida, usou o minicomarquivo ASCII do send ( Ctrl-AS) para enviar esse arquivo para o host. Eu poderia ter usado copiar e colar, já que a quantidade de dados é pequena.

Em seguida, marque executável e execute o printfscript:

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

Verificado usando o BusyBox se md5suma firmware.binsoma de verificação no dispositivo corresponde à imagem original do firmware no host.

PS A sintaxe de aspas duplas do shell passa \xliteralmente porque não é uma sequência de escape reconhecida; portanto, não precisamos dobrar as barras invertidas.

Kaz
fonte
0

@jofel e todos os outros, muito obrigado pela sua ajuda. Acho que o dispositivo possui um sistema operacional personalizado instalado, pois reconhece apenas alguns comandos linux específicos. O netcat não é reconhecido pelo dispositivo. No entanto, hoje consegui transferir o arquivo usando o comando tftp. Substituí com êxito o arquivo desktop.jpg por este comando. O que eu fiz é criar servidor tftp no sistema de janelas. entre através do telnet no dispositivo e execute estes comandos:

baixar arquivo tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

upload de arquivo tftp -l desktop.jpg -g 192.168.0.249 69

PRdeep Kumawat
fonte
0

Eu fiz isso agora por estes métodos:

Crie um servidor ftp (instalando solerwinds) no sistema de janelas. entre através do telnet no dispositivo e execute estes comandos:

Para baixar um arquivo:

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

Exemplo:

tftp -l desktop.jpg -p 192.168.0.249 69

ou fazer upload do arquivo:

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

Exemplo:

tftp -l desktop.jpg -g 192.168.0.249 69

o local padrão do arquivo tftp é C:\TFTP-Root

prdeepkumawat
fonte
-1

Eu uso o seguinte método para baixar pequenos arquivos binários via telnet na caixa do meu windows:

  1. execute hexdump -v -e '16 / 1 "% 02x" 'myfile.bin
  2. copiar hex dump da tela
  3. cole o dump hexagonal nessa ferramenta online para criar um arquivo binário: http://tomeko.net/online_tools/hex_to_file.php?lang=pt
Igor Zelaya
fonte
Não tenho certeza sobre o seu link no # 3!
3
@Goro O link neste caso não é uma explicação que possa ser citada, é uma ferramenta on-line essencial para a resposta. Seria melhor ter um programa local para essa tarefa.
RalfFriedl
Obrigado @RalfFriedl. Eu editei minha resposta para esclarecimentos.
Igor Zelaya