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

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

출석 장치가 실행 중입니다 Linux OS. 텔넷 세션을 통해 이 장치에 연결할 수 있습니다. 장치에 새 파일과 함께 다운로드하고 업로드하고 싶은 파일이 있습니다. 어떻게 해야 하나요? 저는 Linux 운영 체제에 대한 지식이 거의 없습니다. 도와주세요!

여기에 이미지 설명을 입력하세요.

답변1

클라이언트 장치의 커널이 어떤 도구를 설치/지원하는지에 따라 다릅니다.

가능한 파일 전송 방법(순서 없음):

  • SSH/SFTP
  • base64/uuencode를 사용하여 바이너리를 표시 가능한 형식으로 인코딩하고 텔넷 터미널 창에서 복사합니다.
  • netcat간단한 tcp 또는 /dev/tcp를 socat통해 연결bash
  • wgetcurl웹 서버를 사용하여 업로드/다운로드
  • 명령줄 FTP 클라이언트를 사용하는 FTP 서버
  • 삼바 또는 nfs 마운트

읽다간단한 파일 전송그리고직렬 콘솔만 있을 때 호스트로 파일을 어떻게 가져오나요?더 많은 가능성을 위해.


desktop.jpgnetcat/nc 방법을 사용하여 장치에서 컴퓨터로 복사합니다.

컴퓨터에서 모든 방화벽을 일시적으로 비활성화(또는 가능한 경우 재구성)하고 다음을 실행합니다.

netcat -l -p 10000 > desktop.jpg

그리고 기기에서

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

ABCD를 컴퓨터의 IP 주소로 바꿔야 합니다. 전송이 성공하면 컴퓨터의 netcat 프로세스가 자동으로 중지됩니다. 그렇지 않은 경우 뭔가 잘못되었을 수 있으며 Ctrl+를 사용하여 이를 방지 할 수 있습니다 C(원본 및 대상 체크섬을 비교하여 확인).

다른 방향의 경우 <양쪽의 합을 바꾸면 됩니다. >원본 파일 desktop.jpg( cp desktop.jpg desktop_orig.jpg)을 백업하는 것부터 시작하세요.

답변2

내 장치에 ssh나 ftp(또는 등)가 없습니다.

그래서 제가 다음에 할 일은 다음과 같습니다.

  1. telnet a.b.c.d | tee telnet.log
  2. 로그인 후 파일로 이동
  3. cat file.txt
  4. 세션을 닫습니다(tmux 창을 닫습니다)
  5. telnet.log휴지통에서 삭제

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

답변3

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

네트워킹도 없고 파일 전송 유틸리티도 없으며 Base64 유틸리티도 없고 장치에서 원격으로 유용한 것도 없습니다.

호스트에서는 펌웨어를 printf쉘 리터럴과 명령으로 구성된 16진수 덤프 형식으로 인코딩했습니다.

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

기본적으로 이스케이프 시퀀스가 ​​해석된 쉘 명령입니다 printf. 내 장치에서:\xprintf

device $ cat > firmware.sh

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

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

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

BusyBox를 사용하여 장치의 체크섬이 md5sum호스트 firmware.bin의 원래 펌웨어 이미지와 일치하는지 확인하세요.

PS 쉘 큰따옴표 구문은 \x인식되는 이스케이프 시퀀스가 ​​아니므로 그대로 전달되므로 백슬래시를 두 배로 사용할 필요가 없습니다.

답변4

컴퓨터에서:

ncat -l -p 3000 > file.name

원격 장치에서:

busybox nc -w 3 <your PC IP> 3000 < file.name

관련 정보