출석 장치가 실행 중 Linux OS
입니다. 텔넷 세션을 통해이 장치를 연결할 수 있습니다. 장치에 새 파일로 다운로드하여 업로드하려는 파일이 있습니다. 어떻게해야합니까? Linux OS에 대한 지식이 매우 부족합니다. 도와 주시겠습니까?
답변
이것은 어떤 도구가 클라이언트 장치에 설치 / 커널에 의해 지원되는지에 달려 있습니다.
파일 전송을위한 가능한 방법 (순서가없는) :
- ssh / sftp
- base64 / uuencode를 사용하여 이진 파일을 표시 가능한 형식으로 인코딩 한 다음 Telnet 터미널 창에서 복사하거나 텔넷 터미널 창으로 복사합니다.
- 또는 / dev / tcp 와 함께
netcat
또는 간단한 TCP 연결을 통해socat
bash
- 웹 서버 와 함께
wget
또는curl
웹 서버에서 업로드 / 다운로드 - 명령 행 ftp 클라이언트가있는 ftp 서버
- 삼바 또는 nfs 마운트
직렬 콘솔 만 있으면 간단한 파일 전송 및 호스트로 파일을 가져 오는 방법을 읽으십시오 . 더 많은 가능성을 위해.
desktop.jpg
netcat / 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
)을 백업하십시오 .
답변
장치에 ssh 또는 ftp (또는 기타)가 없습니다.
그래서 다음에합니다 :
telnet a.b.c.d | tee telnet.log
- 로그인하고 파일로 이동
cat file.txt
- 세션 닫기 (tmux 창 닫기)
- 취소
telnet.log
휴지통에서
텔넷을 통해 파일을 다운로드 / 업로드하는 유틸리티를 작성하기 쉬워야합니다
답변
rcp
명령으로 시도하십시오 .
man rcp
전송을 자동화하려는 경우 자세한 정보를 보려면 사용하십시오 .
그건 그렇고, 이것이 매우 안전하지 않다는 것을 알고 있습니까?
답변
방금 시리얼 포트를 통해 ~ 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
그런 다음 minicom
ASCII 파일 전송 ( Ctrl-AS)을 사용하여이 파일을 호스트로 전송했습니다. 데이터 양이 적기 때문에 복사하여 붙여 넣기를 사용했을 수 있습니다.
그런 다음 실행 파일을 표시하고 printf
스크립트를 실행하십시오 .
device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin
BusyBox를 사용 하여 장치 md5sum
의 firmware.bin
체크섬이 호스트의 원래 펌웨어 이미지와 일치 하는지 확인했습니다 .
PS 셸 큰 따옴표 구문은 \x
인식 된 이스케이프 시퀀스가 아니기 때문에 그대로 사용됩니다. 따라서 백 슬래시를 두 배로 늘릴 필요가 없습니다.
답변
@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
답변
나는 다음과 같은 방법 으로이 작업을 수행했습니다.
윈도우 시스템에 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
답변
다음 방법을 사용하여 텔넷을 통해 작은 바이너리 파일을 Windows 상자에 다운로드합니다.
- hexdump -v -e ’16 / 1 “% 02x” ‘myfile.bin 실행
- 화면에서 16 진수 덤프 복사
- 이 온라인 도구에 16 진 덤프를 붙여 이진 파일을 만듭니다. http://tomeko.net/online_tools/hex_to_file.php?lang=en