Language
한국어

[binwalk] mount cramfs offset

2018.02.17 16:21

lispro06 조회 수:130

bin으로 된 firmware에 큰 작업을 하지 않고 마운트 시켜 파일을 확인하는 것은 다음과 같다.

(cramfs)


1. 원하는 펌웨어의 구조(offset 체크)를 확인하는 binwalk로 정보를 본다.


# binwalk -e 펌웨어파일.bin


DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
46692         0xB664          LZMA compressed data, properties: 0x5D, dictionary size: 16777216 bytes, uncompressed size: 208352 bytes
131072        0x20000         TRX firmware header, little endian, image size: 3559424 bytes, CRC32: 0x9FD9871D, flags: 0x0, version: 1, header size: 28 bytes, loader offset: 0x1C, linux kernel offset: 0x15E424, rootfs offset: 0x0
131100        0x2001C         LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, uncompressed size: 4378624 bytes
1565732       0x17E424        CramFS filesystem, little endian, size: 2121728 version 2 sorted_dirs CRC 0x9094E641, edition 0, 1646 blocks, 353 files


2. Make mount directory

# mkdir /tmp/t


3. mount with option below

mount -t cramfs -o loop,rw,offset=0x17E424 n604s_kr_8_96.bin /tmp/t


4. Do play


# cd /tmp/t
# ls
bin     default  etc   lib      ndbin   proc  sbin  usr
cramfs  dev      home  linuxrc  plugin  save  tmp   var


우분투에서 cramfs 를 자꾸 알수 없다고 해서 centos 6.5 에서 정말 난관 끝에 성공했다.


https://sourceforge.net/projects/cramfs/ 에서 cramfs 를 다운로드 받고 make 한 뒤 mkcramfs 를 /usr/bin 에 cp 했다.

 tar xzf cramfs-1.1.tar.gz

 ls

 cd cramfs-1.1

 cp mkcramfs /usr/bin/

아래는 binwalk를 사용하기 위한 설치 내용이다.


 1062  wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz

 1063  yum install xz

 1064  tar -xvf Python-3.5.1.tar

 1065  ls

 1066  tar -xvf Python-3.5.1.tar.xz

 1067  cd Python-3.5.1

 1068  ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

 1069  make && make altinstall


파이선3를 설치하고, binwalk 다운로드 한 곳에서 setup.py를 실행했다.

https://github.com/ReFirmLabs/binwalk

위 경로에서 binwalk를 zip으로 다운로드 하고 압축을 푼뒤 python3로 설치한다.(2.6은 잘 안된다. pip ..... error T.T)


Python-3.5.1/python setup.py install

기존 python 이 2.x로 되어 있어 binwalk 에서 2.6에 관련 라이브러리 폴더를 뒤져서, python의 심볼릭 링크를 컴파일된 python3로 하여 binwalk까지는 성공
ln -s 파이선설치경로(컴파일)/Python-3.5.1/python /usr/bin/python

binwalk 가 에러가 나면서 파일 위치를 말해주긴 했지만, 일단 패스
mount -t cramfs -o loop,rw,offset=0x17E424 n604s_kr_9_26.bin /tmp/t
로 마운트에 성공하였다.

oracle virtualbox 에 있는 이미지는 켜지지도 않고, ubuntu를 사용할 수 없어, centos 에 희망을 걸었는데, 집에 갈 수 있겠다.