출석 장치가 실행 중입니다 Linux OS
. 텔넷 세션을 통해 이 장치에 연결할 수 있습니다. 장치에 새 파일과 함께 다운로드하고 업로드하고 싶은 파일이 있습니다. 어떻게 해야 하나요? 저는 Linux 운영 체제에 대한 지식이 거의 없습니다. 도와주세요!
답변1
클라이언트 장치의 커널이 어떤 도구를 설치/지원하는지에 따라 다릅니다.
가능한 파일 전송 방법(순서 없음):
- SSH/SFTP
- base64/uuencode를 사용하여 바이너리를 표시 가능한 형식으로 인코딩하고 텔넷 터미널 창에서 복사합니다.
netcat
간단한 tcp 또는 /dev/tcp를socat
통해 연결bash
wget
curl
웹 서버를 사용하여 업로드/다운로드- 명령줄 FTP 클라이언트를 사용하는 FTP 서버
- 삼바 또는 nfs 마운트
읽다간단한 파일 전송그리고직렬 콘솔만 있을 때 호스트로 파일을 어떻게 가져오나요?더 많은 가능성을 위해.
desktop.jpg
netcat/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(또는 등)가 없습니다.
그래서 제가 다음에 할 일은 다음과 같습니다.
telnet a.b.c.d | tee telnet.log
- 로그인 후 파일로 이동
cat file.txt
- 세션을 닫습니다(tmux 창을 닫습니다)
telnet.log
휴지통에서 삭제
텔넷을 통해 파일을 다운로드/업로드하는 유틸리티를 작성하는 것이 쉬워야 합니다.
답변3
방금 직렬 포트를 통해 BusyBox 기반 Linux 임베디드 시스템에 ~7Kb 펌웨어 파일을 업로드했습니다.
네트워킹도 없고 파일 전송 유틸리티도 없으며 Base64 유틸리티도 없고 장치에서 원격으로 유용한 것도 없습니다.
호스트에서는 펌웨어를 printf
쉘 리터럴과 명령으로 구성된 16진수 덤프 형식으로 인코딩했습니다.
printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"
기본적으로 이스케이프 시퀀스가 해석된 쉘 명령입니다 printf
. 내 장치에서:\x
printf
device $ cat > firmware.sh
그런 다음 이 파일은 minicom
ASCII 파일 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