본문 바로가기
분석/infomark

KWF-B2700 (콤펙트에그) 펌웨어 분석... 1차

by Joseph.Lee 2015. 7. 31.

2014.02.28. 19:26


KWF-B2700펌웨어를 분석하는데... 일부러 분석하기 어렵게 그런건지 아닌건진 모르겠지만.. 

구조가 좀 웃기다;;

 

> binwalk KWF-B2700.bin

DECIMAL    HEX        DESCRIPTION

-------------------------------------------------------------------------------------------------------------------

14944      0x3A60     LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: -1 bytes

854644     0xD0A74    CramFS filesystem, little endian size 3964928 version #2 sorted_dirs CRC 0x8c5a3c00, edition 16777728, 268466059 blocks, 1358954816 files

 

여기서 CramFS라고 나오지만.. 이것은 뻥이다.

firmware-mod-kit 으로 분리된 rootfs.img 파일의 0x00번부터의 내용이다.

45 3D CD 28 00 80 3C 00 73 71 73 68 00 00 03 E9   E=I(.€<. sqsh...e

....

cramfs의 헤더구조는

 

struct cramfs_super {

        u32 magic;              /* 0x28cd3d45 - random number */

        u32 size;               /* Not used.  mkcramfs currently

                                   writes a constant 1<<16 here. */

        u32 flags;              /* 0 */

        u32 future;             /* 0 */

        u8 signature[16];       /* "Compressed ROMFS" */

        u8 fsid[16];            /* random number */

        u8 name[16];            /* user-defined name */

        struct cramfs_inode root;       /* Root inode data */

};

이렇다.

 

처음 45 3d cd 28 (0x28cd3d45) 는 CramFS의 magic와 일치하다.

하지만 uncramfs으로 unpack하려고 시도했더니 flags 을 체크하는 부분에서 오류를 뱉어버린다.

그래서 Hex을 보았더니... sqsh 란 저 네 글자가 떡! 하니 보이는게 아닌가!

...처음부터 Hex으로 봤으면 cramfs에 대해 삽질하지 않았을 텐데...ㅠㅠ

 

쨋든.. 앞의 8bytes을 버리고 binwalk으로 다시 확인해 보았다.

> binwalk rootfs_sqsh.img

DECIMAL    HEX        DESCRIPTION

-------------------------------------------------------------------------------------------------------------------

0          0x0        Squashfs filesystem, big endian, version 2.1, size: 3962795 bytes, 1001 inodes, blocksize: 65536 bytes, created: Wed Feb 13 17:33:35 2013

 

참고로 KWF-B2700의 SoC는 WiMAX가 내장된 GDM7205K 칩셋을 사용한다.

ARM926E RISC CPU에 160MHz 드리고 Big Endian

http://www.gctsemi.com/html/WiMax.html 에서 GDM7205 Product Brief 을 보면 좀더 자세히 나와있다.

 

버젼을 보니 2.1이라서 squashfs-2.1 unsquashfs으로 풀어볼려고 했더니

Reading a different endian SQUASHFS filesystem on rootfs_sqsh.img

zlib::uncompress failed, unknown error -3

세그멘테이션 오류 (core dumped)

 

오류가;;

http://infomark.co.kr/oss/lgpl.html 여기에서 커널 소스를 다운받아 보았더니 Squashfs 2.2을 사용한다.

그레서 2.2로 풀려고 했는데...

Reading a different endian SQUASHFS filesystem on rootfs2_sqsh.img

세그멘테이션 오류 (core dumped)

 

그넘의 세그멘테이션 오류...ㅠㅠ

아무래도 Non-Standard방식의 Squashfs을 사용하나 보다.

 

... 여기서 마무리..

더이상 파고 들어가기엔 힘들다..ㅠㅠ

커널소스를 분석하던지 해야 할텐데... 거기까진..ㅠㅠ

반응형

댓글