장치 펌웨어에서 추출한 img 파일을 어떻게 다시 패키지합니까?

장치 펌웨어에서 추출한 img 파일을 어떻게 다시 패키지합니까?

DVR이 있는데 비밀번호를 잊어버렸습니다. 원격으로 로그인을 시도하고 인터넷에서 자격 증명을 얻으십시오(제조업체가 동일할 수 있으므로 많은 딜러에게 동일한 것 같습니다), JTR 비밀번호. 그런데 이것이 호기심을 불러일으켰고 이제는 재미삼아 펌웨어를 만지작거리고 싶습니다. 나는 꽤 어리석기 때문에 맞춤형 로고를 추가해 보았고, 아마도 우리 집에 있는 다른 사람들이 그것을 작동할 수 있도록 메뉴 언어를 변경해 보았습니다.

펌웨어는 바이너리 파일로 제공됩니다. 4개의 .img 파일로 추출합니다.

  • 맞춤-x.cramfs.img
  • 플래그-x.cramfs.img
  • romfs-x.cramfs.img
  • 사용자-x.cramfs.img

이 이미지에 일부 헤더 바이트가 추가되었기 때문에 설치할 수 없습니다.MK 이미지, 일부 블로그 게시물에서 알 수 있듯이.

문서다음 이미지(로고) 중 하나에 대한 명령 출력:

logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 40960 bytes, Fri Jul  4 06:04:30 2014, Load Address: 0x00770000, Entry Point: 0x00780000, Header CRC: 0xBC5511F0, Data CRC: 0xC6BFF7D1

64바이트의 데이터를 제거한 후DD설치하고 파일에 액세스할 수 있습니다. 다른 이미지 파일을 생성하기 위해 일부 정크 파일을 추가해 보았습니다. 파일을 변경/추가한 후 설치된 img를 어떻게 다시 패키지합니까? 삭제한 64바이트 데이터를 다시 추가하려면 어떻게 해야 하나요?

유용한 아이디어를 주시면 감사하겠습니다.

답변1

SPI 플래시를 이미지화 하고 싶다고 가정합니다 squashfs. 먼저 squashfs원하는 디렉터리에서 이미지를 만듭니다.

mksquashfs yourdir romfs.squashfs -b 64K -comp xz

그런 다음 올바른 시작점과 진입점을 사용하여 헤더를 추가합니다.

mkimage -A arm -O linux -C gzip -T kernel -a 0x50000 -e 0x430000 -n 'linux' -d romfs.squashfs romfs.squashfs.img 

관련 정보