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을 사용하나 보다.
... 여기서 마무리..
더이상 파고 들어가기엔 힘들다..ㅠㅠ
커널소스를 분석하던지 해야 할텐데... 거기까진..ㅠㅠ
'분석 > infomark' 카테고리의 다른 글
KWF-B2700 (콤펙트에그) 펌웨어 분석... 4차(USB RNDIS) (0) | 2015.07.31 |
---|---|
KWF-B2700 (콤펙트에그) 펌웨어 분석... 3차(password) (0) | 2015.07.31 |
KWF-B2700 (콤펙트에그) 펌웨어 분석... 2차(성공!) (8) | 2015.07.31 |
댓글