장치를 성공적으로 루팅했으며 장치를 분석하고 리버스 엔지니어링하기 위해 전체 파일 시스템을 덤프하고 싶습니다.
이 장치는 다음과 같이 주장합니다 Linux 2.6.31 mips GNU/Linux
. 네트워크를 통해 셸 인터페이스에 액세스할 수 있으며 포트에 텔넷을 연결하기만 하면 됩니다.
장치에서 전체 파일 시스템을 덤프하려면 어떻게 해야 합니까?
내가 시도한 것들
- DD: 거의 불가능합니다.
df -h
파일 시스템이 48% 사용되었고dd
미러는 이를 98%까지 사용한다고 가정해 보겠습니다. 공간이 부족하여 벽돌이 될 수 있습니까? - Rsync: 이것이 가장 좋은 옵션인 것 같지만, 내가 아는 한 rsync는 내부적으로 ssh를 사용하지만 장치에 ssh가 없으므로 포트를 열면 셸로 이동합니다. 이와 같은 인수는
[email protected]:23:/
포트(ssh: connect to host 192.168.3.10 port 22: Connection refused
)를 무시하는 것 같습니다.rsync
바이너리가 장치에 존재하지 않습니다.
고려해야 할 사항
- 파일 시스템은 정확히 동일하게 유지되어야 합니다. 이는 기호 링크도 현재 가리키는 위치를 가리켜야 함을 의미합니다.
답변1
네트워크를 통해 데이터를 얻는 가장 간단한 방법은 TCP 연결을 사용하여 데이터를 파이프하는 것입니다 nc
. 원하는 복제본의 정확성에 따라 여기서 "데이터"는 다음 중 하나를 의미할 수 있습니다.
- 전체 블록 장치(파일 시스템의 전체 블록 수준 이미지):
cat /dev/sda |
또는cat /dev/mtdblocksomething |
(예, 이것은 다른 옵션과의 일관성을 위해 여기에서 사용된 cat의 쓸모없는 사용입니다. 자유롭게 로 바꾸십시오< /dev/sda
.) - 파일/디렉토리/링크/등만:
tar -c / |
(아마도--one-file-system
)
파이프 뒤에 오는 내용은 장치에서 컴퓨터로 또는 그 반대로 TCP 연결을 설정할 수 있는지 여부에 따라 다릅니다. 예를 들어:
nc -l -p someport > deviceimage.tar
당신의 컴퓨터에서tar -c / | nc yourmachine someport
기기에서
장치에만 연결할 수 있고 장치에서 연결할 수 없는 경우 nc -l
및 을 바꾸십시오 nc
.
파일 시스템을 먼저 정지하지 않고 실행 중인 시스템을 복제하면 복제 프로세스 중에 쓰기가 발생할 경우 스냅샷이 일관되지 않을 수 있습니다. 전체 블록 장치를 복제할 때 상황은 더욱 악화될 수 있습니다(불일치로 인해 복제의 파일 시스템이 손상될 수 있음). 장치가 약간 사용량이 많은 경우 kill -STOP
가능하면 중지()를 고려하십시오.