텔넷 세션을 통한 파일 다운로드 및 업로드


16

출석 장치가 실행 중 Linux OS입니다. 텔넷 세션을 통해이 장치를 연결할 수 있습니다. 장치에 새 파일로 다운로드하여 업로드하려는 파일이 있습니다. 어떻게해야합니까? Linux OS에 대한 지식이 매우 부족합니다. 도와 주시겠습니까?

여기에 이미지 설명을 입력하십시오


몇 개의 파일을 전송 하시겠습니까? 당신의 어딘가에 출력을 붙여 넣을 수 있습니다 busybox --helpls -l /binls -l /usr/bin주세요.
jofel

실제로이 출석 장치의 바탕 화면 배경을 변경하고 회사 로고를 장치에 업로드하고 싶습니다. 이러한 옵션은 장치 메뉴에서 사용할 수 없습니다 (이미 공급 업체에이 옵션을 요청했습니다). 그래서 텔넷 세션을 통해 연결하고 desktop.jpg 및 장치에서 다른 이미지 파일을 찾았습니다. 이제이 파일을 로컬 시스템에 가져오고 싶습니다. 동일한 것을 확인한 후 원하는 이미지를 장치에 업로드합니다. 그래서 원하는 이미지에 따라 장치 이미지를 업데이트합니다. / mnt / mtdblock / image에있는 장치에서 사용할 수있는 적어도 데스크탑 이미지를 변경하고 싶습니다
PRdeep Kumawat

다음에 정보를 추가 하려면 의견을 추가하는 대신 질문을 편집 하십시오.
jofel

답변:


13

이것은 어떤 도구가 클라이언트 장치에 설치 / 커널에 의해 지원되는지에 달려 있습니다.

파일 전송을위한 가능한 방법 (순서가없는) :

  • ssh / sftp
  • base64 / uuencode를 사용하여 이진 파일을 표시 가능한 형식으로 인코딩 한 다음 Telnet 터미널 창에서 복사하거나 텔넷 터미널 창으로 복사합니다.
  • 또는 / dev / tcp 와 함께 netcat또는 간단한 TCP 연결을 통해socatbash
  • 웹 서버 와 함께 wget또는 curl웹 서버에서 업로드 / 다운로드
  • 명령 행 ftp 클라이언트가있는 ftp 서버
  • 삼바 또는 nfs 마운트

직렬 콘솔 만 있으면 간단한 파일 전송호스트로 파일을 가져 오는 방법을 읽으십시오 . 더 많은 가능성을 위해.


desktop.jpgnetcat / nc 방법을 사용하여 장치에서 PC로 복사 하십시오.

PC에서 방화벽을 일시적으로 비활성화하거나 가능한 경우 재구성하십시오.

netcat -l -p 10000 > desktop.jpg

그리고 장치에서

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

ABCD를 PC의 IP 주소로 바꿔야합니다. 전송이 완료되면 PC의 netcat 프로세스가 자동으로 중지됩니다. 그렇지 않은 경우, 무언가 잘못되었으므로 중지 할 수 있습니다Ctrl+C

다른 방향으로는 교환 <하고 >양쪽에 두십시오. 먼저 원본 desktop.jpg( cp desktop.jpg desktop_orig.jpg)을 백업하십시오 .


WinSCP 유틸리티를 사용하고 ftp / sftp / scp 프로토콜을 사용하여 장치를 연결하려고했습니다. 그러나 연결되지 않습니다. telnet 명령을 통해 장치를 연결할 수 있으며 장치로 가져오고 다시 업로드하려는 파일을 볼 수 있습니다.
PRdeep 쿠마 와트

아마도 장치에 ssh 또는 ftp 서버가 실행되고 있지 않습니다.
jofel

잘 모르겠습니다 .. 해당 장치에서 파일을 가져 오거나 업로드하는 다른 방법이 있습니까?
PRdeep Kumawat

sz터미널을 통해 파일을 보내는 데 사용할 수도 있습니다 . 양쪽에 필요합니다.
slm

@PRdeepKumawat 나는 예를 들어 대답을 확장했습니다.
jofel

6

장치에 ssh 또는 ftp (또는 기타)가 없습니다.

그래서 다음에합니다 :

  1. telnet a.b.c.d | tee telnet.log
  2. 로그인하고 파일로 이동
  3. cat file.txt
  4. 세션 닫기 (tmux 창 닫기)
  5. 취소 telnet.log휴지통에서

텔넷을 통해 파일을 다운로드 / 업로드하는 유틸리티를 작성하기 쉬워야합니다


1

rcp명령으로 시도하십시오 .

man rcp전송을 자동화하려는 경우 자세한 정보를 보려면 사용하십시오 .

그건 그렇고, 이것이 매우 안전하지 않다는 것을 알고 있습니까?


1

방금 시리얼 포트를 통해 ~ 7Kb 펌웨어 파일을 BusyBox 기반 Linux 임베디드 시스템에 업로드했습니다.

네트워킹, 파일 전송 유틸리티가 없습니다. Base64 유틸리티 또는 장치에서 원격으로 유용한 것은 없습니다.

호스트에서 펌웨어를 다음 형식으로 간단하게 인코딩했습니다. printf명령 과 결합 된 쉘 리터럴로 구성된 일종의 16 진 덤프 :

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

기본적으로 해석 printf하는 \x이스케이프 시퀀스가있는 쉘 명령 printf. 장치에서 나는 :

device $ cat > firmware.sh

그런 다음 minicomASCII 파일 전송 ( Ctrl-AS)을 사용하여이 파일을 호스트로 전송했습니다. 데이터 양이 적기 때문에 복사하여 붙여 넣기를 사용했을 수 있습니다.

그런 다음 실행 파일을 표시하고 printf스크립트를 실행하십시오 .

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

BusyBox를 사용 하여 장치 md5sumfirmware.bin체크섬이 호스트의 원래 펌웨어 이미지와 일치 하는지 확인했습니다 .

PS 셸 큰 따옴표 구문은 \x인식 된 이스케이프 시퀀스가 ​​아니기 때문에 그대로 사용됩니다. 따라서 백 슬래시를 두 배로 늘릴 필요가 없습니다.


0

@jofel 및 다른 모든 사람들, 당신의 친절한 지원에 대단히 감사합니다. 특정 Linux 명령 만 인식하므로 장치에 맞춤형 OS가 설치되어 있다고 생각합니다. 장치가 netcat을 인식하지 못합니다. 그러나 오늘 나는 tftp 명령을 사용하여 파일을 성공적으로 전송했습니다. desktop.jpg 파일을이 명령으로 대체했습니다. 내가 한 것은 창 시스템에 tftp 서버를 만든 것입니다. 장치에서 텔넷을 통해 로그인하고 다음 명령을 실행하십시오.

파일 다운로드 tftp -l -p tftp -l desktop.jpg-192.168.0.249 69

파일 업로드 tftp -l desktop.jpg -g 192.168.0.249 69


0

나는 다음과 같은 방법 으로이 작업을 수행했습니다.

윈도우 시스템에 ftp 서버를 작성하십시오. 장치에서 텔넷을 통해 로그인하고 다음 명령을 실행하십시오.

파일을 다운로드하려면

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

예:

tftp -l desktop.jpg -p 192.168.0.249 69

또는 파일을 업로드하려면 :

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

예:

tftp -l desktop.jpg -g 192.168.0.249 69

tftp 파일의 기본 위치는 C:\TFTP-Root


-1

다음 방법을 사용하여 텔넷을 통해 작은 바이너리 파일을 Windows 상자에 다운로드합니다.

  1. hexdump -v -e '16 / 1 "% 02x" 'myfile.bin 실행
  2. 화면에서 16 진수 덤프 복사
  3. 이 온라인 도구에 16 진 덤프를 붙여 이진 파일을 만듭니다. http://tomeko.net/online_tools/hex_to_file.php?lang=en

# 3 링크가 확실하지 않습니다.

3
@Goro이 경우의 링크는 인용 할 수있는 설명이 아니라 답변에 필수적인 온라인 도구입니다. 해당 작업에 대한 로컬 프로그램을 보유하는 것이 좋습니다.
RalfFriedl

감사합니다 @RalfFriedl. 설명을 위해 답변을 편집했습니다.
Igor Zelaya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.