지돌이의 블로그 입니다!

음... 우선... muPAD w8 II 은 Z3735F CPU을 사용하고

MRD7 (?) 칩셋같은걸 사용합니다.


윈도보다 리눅스계열이 더 빠르고 좋을거 같아서 우분투를 설치하려고 몇일동안 노력해서 결국 성공하긴 했는데...

호기심에 해보시려는 분은 하지 마세요...

진짜 Hardware / Linux 잘 아시고 어떠한 정보도 구할 수 있는 분이라면 하세요...

시작부터 초치는거 같지만 현실입니다...ㅠㅠ


무엇보다 드라이버가 없습니다.

WiFi는 드라이버를 설치하면 지원하고

Bluetooth는 드라이버 설치하고 프로그램 실행하면 인식은 되는데

이상하게 다른 장치를 연결하면 갑자기 배터리가 없다면서 꺼져버립니다...

덕분에 Bluetooth Keyboard도 사용 못하구요.

그리고 배터리 사용량같은것도 알 수 없습니다.

드라이버가 없어서 그런듯 합니다.

터치는 캘리브레이션 하면 됩니다.

자이로센서도 작동하지 않습니다. (정확하진 않습니다. 아직 드라이버를 못찾아서...)


쨋든... 문제가 많습니다.


게다가... Windows 가 더 빠릅니다...ㄷㄷ


우분투를 설치하면서 제일 힘들었던게 부트로더 관련된거네요.


Ubuntu 14.04 는 32bit버전에서는 EFI을 지원하지 않습니다.

64bit는 EFI을 지원하는데 muPAD w8 II 에서는 64bit EFI을 지원하지 않습니다.

그래서 결국 ia32 용 부트로더를 찾아서 이걸로 부팅하고 설치하고 다시 grub 컴파일.... 등의 작업을 거쳐야 합니다.


참고로... /dev/mmcblk0 관련되서 여러가지가 있습니다.

/dev/mmcblk0 : 메인 SSD

/dev/mmcblk0boot0 : 사용안함 (아마 Duo 버전에서 사용하는 듯...)

/dev/mmcblk0boot1 : 사용안함 (아마 Duo 버전에서 사용하는 듯...)

/dev/mmcblk0rpmb : 뭔지 모르겠음...

이거 알아내는것도 몇시간이 걸렸네요... mmcblk0boot0 이 뭔지도 모르고... EFI는 처음이라서...





1. 우선 ubuntu-desktop-14.04 iso 파일을 다운받아서 USB에 압축을 풀어줍니다.


2. https://sturmflut.github.io/linux/ubuntu/2015/02/04/installing-ubuntu-on-baytrail-c-version-2/

을 참고하여 bootia32.efi 파일을 USB의 /EFI/BOOT/bootia32.efi 으로 다운로드 합니다.

(EFI/BOOT 는 생성하시면 됩니다.)


3. USB을 연결하고 부팅합니다.

그리고 ESC을 눌러 CMOS설정창으로 가서 Save/...쪽에 가서 USB으로 부팅하면 grub 가 뜨는데

(CMOS에서 안하면 부팅하다가 화면이 검정색으로 나와버립니다...)

이런식으로요.



> linux /capser/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity iso-scan/filename=${iso_path} quiet splash --

> initrd /casper/initrd.lz

> boot 


이렇게 입력하면 설치화면으로 부팅이 됩니다.

뭐 입맛에 맞게 다음 다음 하시고...

(위처럼 나오면 그냥 Ignore 을 누르시면 됩니다.)





파티션 설정에서


저는 파티션을 

/dev/mmcblk0p1 : EFI용 : /boot/efi

/dev/mmcblk0p2 : boot파일(커널파일) : /boot

/dev/mmcblk0p3 : root file system : /

이렇게 기본으로 잡았습니다.


그리고 작은 용량때문 & SSD의 수명 연장을 위해 microSD 카드를 설치하고

/dev/mmcblk1p1 : /var

/dev/mmcblk1p2 : /home

이렇게 추가로 파티션을 잡았습니다.



그리고 쭉 설치하다가 보면 grub을 설치 실패했다고 하는데 그냥 확인 누르고 Problem report... 나오면 취소하고 USB빼고 강제로 리부팅합니다.



2. 그리고 다시 grub으로 가서...


> linux (hd0,gpt2)/vmlinuz-3.19.0-25-generic root=/dev/mmcblk0p3 ro

> vmlinuz (hd0,gpt2)/initrd.img-3.19.0-25-generic

> boot

입력하면 우분투로 부팅이 됩니다.


그러면 일단 WiFi가 안되는데 Ubuntu에서 기본적으로 지원하는 USB WiFi나 USB Ethernet 을 이용해서 인터넷을 연결한 뒤


터미널을 열어서...

$ sudo apt-get update

$ apt-get install build-essential linux-headers-generic git autoconf bison flex autogen efibootmgr

$ wget http://git.savannah.gnu.org/cgit/grub.git/snapshot/grub-2.00.tar.gz

$ tar xf grub-2.00.tar.gz

$ cd grub

$ ./autogen.sh

$ ./configure --with-platform=efi --target=i386 --program-prefix=""


그리고 이대로 컴파일 하면 오류가 나니...

$ gedit grub-core/gnulib/stdio.h

여기서


#undef gets

GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead")


이 두 라인을 주석처리 해주세요.


그리고

$ make -j4

(시간이 좀 걸림...)

$ sudo make install

$ cd grub-code

$ sudo ../grub-install -d . --efi-directory /boot/efi/ --target=i386

$ cd /boot/efi/EFI/

$ sudo mkdir ubuntu

$ sudo cp grub/grubia32.efi ubuntu/grubx64.efi

$ sudo gedit ubuntu/grub.conf


default=0

timeout=5

title Ubuntu

recordfail

load_video

gfxmode $linux_gfx_mode

set root='hd0,gpt2'

kernel /vmlinuz-3.19.0-25-generic root=/dev/mmcblk0p3 ro security=selinux selinux=1

initrd /initrd.img-3.19.0-25-generic


입력 후 저장


$ sudo update-grub


이제 리부팅해서 CMOS에서 부팅순서를 ubuntu 으로 바꿔주시면 됩니다




3. Touch 캘리브레이션


$ sudo xinput-calibrator

$ xinput_calibrator

https://www.thefanclub.co.za/how-to/how-ubuntu-1204-touchscreen-calibration

여기를 보고 10-evdev.conf 을 수정하시면 됩니다.


4. WiFi


$ git clone https://github.com/hadess/rtl8723as.git

$ cd rtl8723as

$ make

$ sudo make install

$ sudo depmod -a

$ sudo modprobe r8723bs


5. Bluetooth


$ git clone https://github.com/lwfinger/rtl8723bs_bt.git

$ cd rtl8723bs_bt

$ make

$ sudo make install

$ sudo ./start_bt.sh

$ sudo cp start_bt.sh rtk_hciattach /usr/sbin/

$ sudo gedit /usr/sbin/start_bt.sh


./rtk_hciattach -n -s 115200 $TTY rtk_h5 > hciattach.txt 2>&1 &

./rtk_hciattach -n -s 115200 $TTY rtk_h5 > /var/log/hciattach.txt 2>&1 &

으로 바꿉니다.


$ sudo gedit /etc/rc.local

(exit 0 윗줄에 /usr/sbin/start_bt.sh 입력후 저장)



'분석 > muPAD' 카테고리의 다른 글

muPAD w8 II (Baytrail Tablet) 에 Ubuntu 설치하기  (1) 2015.09.12
mupad w8 II 태블릿PC 분해기 & USB추가  (22) 2015.09.12

Comment +1

iMUZ의 mupad w8 II 을 분해해 보았습니다.



메인보드와 Li-ion 3.7V/4400mAh 배터리가 보입니다.

오른쪽에 네모난 검정색 칩 두개가 있는데

위에거는 Audio 칩셋 (ALC5640 - I2C & I2S) 이고

아래거는 WiFi 칩셋 (RTL8723BS / WiFi-SDIO / Bluetooth-HS-UART) 입니다.


또 왼쪽에 20*2, 17*2 개의 Pin은 3G지원 모델의 3G Module 자리인거 같습니다.

저부분에 분명히 USB포트가 있을거라 생각되어서... USB을 추가했습니다.


이것은 뒷면...

(GND RX TX 가 보입니다. Windows 에서 COM1 (Serial) 포트가 인식되던데 이건거 같습니다.)

(1.8V Level 을 사용합니다.)

(이걸 이용해서 GPS 같은것도 추가할 수 있겠네요.)


USB와 HDMI커넥터 중간쯤에 다이오드 2개가 달려있습니다.

다이오드 오른쪽이 5V출력입니다. 이걸 USB전원으로 사용할겁니다.


USB의 특성상 D+,D- 두개의 라인이 필요한데 이렇게

두개의 라인이 있는 부분이 2부분이 있습니다.

두 부분 모두 직렬로 저항 자리로 보이는 부분이 빠져있었습니다.

그부분을 일단 전선으로 연결하고 테스트해 보았습니다.

직렬로 저항 22ohm을 연결해서 D+,D- 에 연결해보며 테스트 해 보았는데..

위에 있는 부분이 USB입니다.

왼쪽에 2개는 뭔지 모르겠네요...

전압을 측정해보니 0V가 나오는걸 봐서는 I2C나 Uart도 아닌듯 합니다. USB도 아니구요.

참고로 옆에 2핀이 있는데 위에가 3.3V, 아래가 GND입니다.


내부에 저항 2개와 테이프 덕지덕지...


완성!

(이 사진에서 왼쪽부터 GND, D+, D-, VCC[5V] 입니다.)


이제 충전하면서도 USB을 사용할 수 있게 되었네요~



(다음에는 여기에 Ubuntu 을 설치해 보겠습니다...)

추가 정보로...


Z3735F CPU 정보를 보면 64bit을 Supported한다는데...

64bit EFI 부팅은 지원하지 않네요...

IA32 EFI 부팅만 지원하는데 Ubuntu에서는 IA32 EFI 설치를 지원하지 않구...ㅠㅠ

그래서 수작업을 해야 하는데 아직 성공하지 못했습니다..ㅠㅠ

'분석 > muPAD' 카테고리의 다른 글

muPAD w8 II (Baytrail Tablet) 에 Ubuntu 설치하기  (1) 2015.09.12
mupad w8 II 태블릿PC 분해기 & USB추가  (22) 2015.09.12

Comment +22

  • 2016.08.29 11:06

    비밀댓글입니다

    • 이 태블릿은 예전에 고장나서 백업은 불가합니다..
      메모리 오버라이딩하는 소프트웨어는 있는지 잘 모르겠네요. USB로 라이브 리눅스 부팅해서 dd명령어를 이용하는 방법은 있습니다.

  • 추가로 usb장착하려고 이곳저곳 찾아보다가 여기까지 왔습니다. 존경스럽네요 ㅠㅠ 혹시 HDMI 포트를 가지고 데이터 케이블로 쓰는 방법은 없을까요?

    • HDMI는 USB와 인터페이스 자체가 달라서 통신은 불가합니다..
      오직 디스플레이 출력만 가능합니다.

    • 박용희 2016.11.17 16:00

      그럼 다이오드쪽에서 5v 뽑고, D- D+에 저항 달아서 연결하면 USB완성인가보군요. 혹시 다른 팁같은건 없나요ㅎ 내부 뜯어서 뭘 해보긴 첨이라 ㅋ 땜질은 좀 해봤지만ㅎ

    • 뭐 기판뜯는것도 쉽게 뜯어져서 크게 어려울건 없을겁니다~

    • 박용희 2016.11.17 16:09

      아 한가지 더 궁금한게 있는데 ^^;; 저항은 왜 연결하는 거죠? 그리고 정확히 20옴짜리면 되는건가요?

    • USB 신호 라인에는 직렬로 댐핑저항을 넣어줘야 합니다.
      댐핑저항에 대해서는
      http://www.micombox.com/index.php?document_srl=357307&mid=kin
      맨 아래 글을 참고하세요~
      20옴짜리정도도 괜찮을겁니다.

    • 박용희 2016.11.18 16:28

      덕분에 잘 연결하였습니다!!

  • 댐핑저항이.... 2017.03.31 10:51

    댐핑 저항은 어디서 파는건가요? 찾아도 보이질안네요 0-0;;

    • 그냥 22옴쯤 되는 저항 사용하시면 됩니다. 용산전자상가나 온라인에서는 디바이스마트 엘레파츠 등이 있습니다.

    • 그렇군요~ 2017.03.31 10:55

      감사드립니다. ^^

    • 이게 맞나요? 2017.03.31 11:12

      http://www.devicemart.co.kr/38578

      아 그리고 혹시
      위 댓글중 테블릿 고장나셨다고했는데
      제가 안드로이드랑 윈도우 복구 이미지 가지고있는데 혹시 필요하시면 드릴께용~

    • 늦게 보았네요.. 이거 사용하셔도 되는데 좀 큽니다. 1/8W나 1/4W짜리 사용하셔도 됩니다. 와트수는 크기와 비례합니다.

  • 답변부탁드려용~ 2017.03.31 13:16

    위에 글남긴사람인데요 ~
    추가 질문인데
    선연결중에 GND, D+, D-, VCC[5V]
    에서 VCC 에 5V 부분에 3.3v 선도 같이 물려있는데 두개 연결한건가요?

  • (빠른답변 부탁합니다.)
    D+ 와 D-를 찾을때 어떻게 하셨나요?
    Teclast T Pad 7.9(x89)분해해서 USB 자작하려는데 빈 3G모듈자리 근처에 4개 핀이 있긴 한데 뭐가 뭔지 모르겠네요...
    답변 부탁합니다~

    • VCC와 GND는 쉽게 찾을 수 있기 때문에 나머지 D+/D-을 USB Device장치(마우스 등)에 연결해서 작동하는걸 찾으시면 됩니다.

  • 빠른답변 정말 감사합니다 ㅠ.ㅠ ♡
    혹시 저항을 연결하는 이유도 알수 있을까요?
    몇몇 포스팅 보면 그냥 바로 usb 포트로 연결하는사람도 많은데 저항을 연결한 이유가 뭘까요?
    아! D+ D-부분 전압 체크하면 0V 맞나요?

    맨 마지막 사진에 USB(암)포트에 라인이 왜 5가닥인가요?

    부탁드립니다~
    (자작에 앞서 태블릿 나갈까봐 두렵습니다 ㅠㅠ. 진심어린 조언 부탁드립니다.)

    • 댐핑저항에 대해서는
      http://www.micombox.com/index.php?document_srl=357307&mid=kin
      맨 아래 글을 참고하세요~
      전압측정하면 얼마가 나올지는 잘 모르겠네요~

  • 정말 빠른답변 진심으로 감사드립니다.
    맨 마지막 사진에 USB(암)포트에 라인이 왜 5가닥인가요?

  • 정말 빠르고 친절한 답변 감사드립니다.
    초보자들에겐 정말 좋은 포스팅 같습니다.
    끝까지 친절한 답변 감사드립니다.~☆★☆★
    좋은하루 되세요 ^^

2014.03.09. 22:13



 infomark 홈페이지에 보면 콤펙트 에그가 USB RNDIS을 지원한다고 써져있습니다.

하지만 USB을 컴퓨터에 연결하면 아무것도 나타나지 않죠...

문의해보니 해외용 제품만 지원한다고 합니다.

하지만 알아냈습니다!

 

시리얼 콘솔 접속한 뒤

root로그인 한 후

 

/etc/init.d/script/rndis.sh start

을 하면 rndis서비스가 시작되어서 USB로도 인터넷 접속을 할 수 있습니다.

저는 /system/etc/sysconfig/wimax/wimax.sh에 스크립트를 추가해서

자동으로 시작되게 해놨습니다.

 

그리고 /etc/RNDISInst.exe 에 RNDIS 드라이버 설치파일이 있습니다.

펌웨어 푼 파일에서 RNDISInst.exe을 추출해서 얻었습니다.

이 파일은 첨부파일에서도 다운받을 수 있습니다.

rndis.iso 파일도 있는데 CD파일이네요.

대충 시스템을 보니 USB을 CD-ROM으로 인식하게 할수도 있는거 같습니다.

그럼 rndis.iso가 나타나구요. 

Comment +0

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

확인

2014.03.01. 21:51



 오늘 하루종일간의 우여곡절끝에!!! 성공했습니다! 

 

우선 OpenSource으로 배포되는 소스를 i386으로 컴파일에서 VMWare에서 사용해볼려고 했는데

실패했었습니다. 커널 패닉이 나더군요.

아무래도 Embedded용으로 축소된 커널이라 그랬나 봅니다.

(여기서 잠깐! 커널 menuconfig으로 보니 이런게 있네요~)

File system -> Miscellaneous filesystem -> SquashFS 2.2 의 서브메뉴를 보면 

 Image has a dummy cramfs header (8bytes) 요로코롬 어제 cramfs로 오인하게한 주범이 있었네요~ㅋ

 

 

그래서 비슷한 버젼의 커널을 다운받아서 squashfs파일을 을 복사하고 좀 수정하고 컴파일 한 뒤 

VMWare에서 실행해보니 잘~ 됩니다.

그런데.. 문제가 생겼습니다. 

마운트를 하려는데... 

squashfs version이 0x0002, 0x0001 이어야 하는데 60(0x003c), 17717(0x4535)라고 하면서 마운트가 

되지 않는겁니다!... 

그래서 HexEditor으로 확인해봤더니 원래 있어야 할 버젼 위치에 00 02 00 01이 있었습니다.

맞는데... 이상하다.... 했는데 보니깐 8Bytes앞의 내용이 00 03 45 35이더군요. 8bytes라.. 어디서 많이 본거같지 않나요??

바로 dummy cramfs header입니다!

그런데 왜 오류가 나지?? 생각했습니다. 분명히 이건 잘 작동하는 커널일텐데...

커널 소스를 보기 시작했죠.

구조체도 문제 없었습니다. 커널설정에서 Image has a dummy cramfs header을 체크하면

구조체 앞에 8bytes만큼 cramfs 헤더가 생겼습니다.

 

inode.c 에

s_magic을 SQUASHFS_MAGIC랑 비교해서 안되면 SQUASHFS_MAGIC_SWAP와 비교하는 루틴이 있습니다.

SQUASHFS_MAGIC랑 같으면 System 이랑 같은 Endian이고,

SQUASHFS_MAGIC_SWAP랑 맞으면 System이랑 다른 Endian이란거죠.

 

저는 당연히 Little Endian 플랫폼에서 컴파일을 했으니 마운트하려고 하면 SQUASHFS_MAGIC_SWAP랑 맞아서

다른 Endian이라고 인식했겠죠.  분명히 다른 Endian에서 문제가 생길것이다.. 생각하고..

(1차에서 보시면 아시겠지만 GDM7205K는 Big endian이라서 문제가 생기지 않았던 겁니다.)

봤더니 바로 아래 SQUASHFS_SWAP_SUPER_BLOCK(&sblk, sBlk); 란게 있더군요.

Endian에 맞게 구조체에 반영하는 함수(사실은 Define입니다)입니다.

 

또 이걸 찾아보니...

#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\

 SQUASHFS_MEMSET(s, d, sizeof(squashfs_super_block));\

 SQUASHFS_SWAP((s)->smagic, d, 0, 32); \

 SQUASHFS_SWAP((s)->inodes, d, 32, 32); \

.....

딱 보면 아시겠지만 SQUASHFS_SWAP(대상, 원본, 원본offset(bits수), 크기(bits수)) 입니다.

좀 이상하지 않나요?? Dummy cramfs header환경 에서는 8bytes(64bit)가 앞에 있어서 더해줘야 하는데...

하고 CONFIG_SQUASHFS_CRAMFS_MAGIC 가 설정되어 있으면 오프셋에 64을 더하게 수정하려다가...

그냥 inode.c에서

SQUASHFS_SWAP_SUPER_BLOCK(&sblk, sBlk); 이걸

SQUASHFS_SWAP_SUPER_BLOCK(&sblk, (void*)(((uint8_t*)sBlk)+8));

으로 바꿔줬습니다.

다시 컴파일한뒤 입혀보니...

 

mount -o loop -t squashfs rootfs.img ./mnt

을 하니.... 됩니다~~~~~~!!!!!!!!!!!!!!!~~~~~~~~~~!!!!!!!!!! 이렇게 기쁠수가!!ㅋㅋㅎㅎ

mnt을 보니.... 있습니다~~!!!!!! 파일들이!!!!

커널패닉도 안나여~!!

 

 bin   etc     init   lib       mnt    rom  sbin  system  usr

 dev  home  jffs2  linuxrc  proc  root  sys   tmp       var

 

 

이렇게 rootfs보는게 기쁠수가!!!

 

콤펙트에그 내부를 보면 RXD ,TXD UART핀이 있습니다.

그걸 터미널로 보면 부팅이 된 뒤 엔터를 누르면 login화면이 나타납니다.

그런데 root비밀번호를 몰라서 접속을 못했었죠..ㅠㅠ

 

바로 /etc/passwd부터 확인했습니다.

root:$1$P4IGnq8m$mgWoT4ccaDsJQdCPSAdyc1:0:0:root:/root:/bin/sh
nobody:$1$SUEXw8JF$hVyihRpBCrZDRiyTYLiQo/:503:1:Linux User,,,:/home/nobody:/bin/sh
guest:$1$ZnJXP0iT$4q5wTYt4tp4FOhg0LBVQL1:504:1:Linux User,,,:/home/guest:/bin/sh
httpd:$1$Go9d2VDh$hdugAVl/aSXpKyhN95LPZ1:505:0:Linux User,,,:/home/httpd:/bin/sh

오호~ 비번이!

물론 암호화되서 원래 비번을 알진 못하지만... 알아낸다면 shell에 접속할 수 있을겁니다!!

 

펌웨어 분석 COMPLETED!!!  

 

 

KWF-B2700 (콤펙트에그) 펌웨어 분석... 1차 보기 : http://ablog.jichanng.pe.kr/90191276386 

 

 

혹시 i386으로 컴파일된 커널모듈과 이미지가 필요하심 요청하시면 보내드리겠습니다.

2.6.34.15 squashfs수정한 커널소스 / 컴파일된 Image, 모듈 / VMWare이미지

Comment +4

  • 질문자 2018.07.19 12:43

    안녕하세요
    펌웨어 분석하다가 문의드립니다.
    Infomark최신 에그장비 펌웨어를보면 Squashfs 4.0버전, xz압축 포맷을 사용하고 있어 해당 버전과 압축 포맷에 맞게 squashfs-tools를 재컴파일해서 풀어보려고하는데 잘안되네요... 혹시해보셨거나 참고할 부분이 있을가요?

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을 사용하나 보다.

 

... 여기서 마무리..

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

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

Comment +0

2014.01.23. 00:13



 우선 좀 보니 N604와 N104을 비교했는데 둘의 구조는 서로 다르다. 

 

펌웨어 분석 완료.. 간단하다. 하지만 수정은..ㅠ

 

> binwalk n604m_kr_8_80.bin

DECIMAL    HEX        DESCRIPTION
-------------------------------------------------------------------------------------------
0          0x0        uImage header, header size: 64 bytes, header CRC: 0x97FE2D7C, created: Tue Oct  1 10:42:09 2013, image size: 1896384 bytes, Data Address: 0x80000000, Entry Point: 0x802CB000, data CRC: 0x3EEB6BF0, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "n604m"
64         0x40       LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 3038108 bytes
864256     0xD3000    Squashfs filesystem, little endian, non-standard signature,  version 3.0, size: 1030242 bytes,  435 inodes, blocksize: 65536 bytes, created: Tue Oct  1 10:42:05 2013

 

간단하게 uImage Header, Kernel Image, Squashfs 로 구성되어 있다.

 

firmware-mod-kit 을 이용해 쉽게 분리, rootfs을 볼 수 있는데 새로 build도 가능하다.

그레서 나만의 펌웨어를 만들기 위해 빌드 후 의도적으로 공유기의 flash memory 의 펌웨어를

망가뜨린 뒤(웹관리 펌웨어 업글창에서 펌웨어를 업글하는 도중에 전원을 차단하면 된다

하지만 펌웨어를 올바르게 수정한 뒤 업글하면 웹관리창에서도 새 펌웨어를 쓸 수 있을걸로 보인다)

tftp으로 전송!

하지만 우선 실패... UART로 확인해보니 Checksum Error가 뜬다.

 


 

쨋든 firmware mod kit가 uImage까지 수정해 주진 않는다.

 

빌드해서 만들어진 new-firmware.bin

 

0x00000000-0x0000003F 부분

0x00  27 05 19 56 97 FE 2D 7C 52 4A 28 71 00 1C EF C0

0x10  80 00 00 00 80 2C B0 00 3E EB 6B F0 05 05 02 03  

0x20  6E 36 30 34 6D 00 00 00 00 00 00 00 00 00 00 00 

0x30  00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 

 

저 세 부분을 바꿔줘야 한다.

우선 빨간색 부분 : 전체파일크기 - 0x40한 값.

파랑색 부분 : 0x40이후 데이터의 CRC32값

녹색부분 : 우선 녹색부분은 00 00 00 00 으로 바꿔준 뒤 저 0x40Bytes 의 CRC32값

 

펌웨어 업글시 Checksum 오류가 뜨지 않는다.

 

 

그런데.... 오류가 있다.

업글을 할땐 오류는 안뜨는데...

 
 
 TFTP server start
IP address: 192.168.0.1
Load address: 0x80100000
Reading: -#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##################################################
done
Bytes transferred = 1919436 (1d49cc hex)
Check Firmware:80100000 =>[ Check Alias ... [n604m],[n604m] ] ->[ RUN : OK ]
Run Firmware Found!!
Update Run Firmware...(1919436 bytes)
***********
 addr = 0xBFC83868 ,cnt=1577316
 addr = 0xBFCD70D0 ,cnt=1235196
 addr = 0xBFD2A938 ,cnt=893076
 addr = 0xBFD7E1A0 ,cnt=550956
 addr = 0xBFDD1A08 ,cnt=208836
 dest[0xBFE00000]=00FF
 dest[0xBFE00000]=00FF
 dest[0xBFE00000]=00FF
 
이렇게..
 dest[0xBFE00000]=00FF
이것만 무한반복;;;;;
 
안그래도 펌웨어를 풀고 다시 빌드하면 파일크기가 커지는데 그것때문인지;;;
아.. 모르겠네;;

누구 아시는분 없나여~?


'분석 > iptime' 카테고리의 다른 글

N604M 펌웨어 분석/수정  (16) 2015.07.31

Comment +16

  • 유아트 2015.08.06 00:42

    안녕하세요 ㅠㅠ 같은 모델로 유아트 통신할려고 하는데 푸티로 하는데 안되서 질문드려요 ㅠㅠ 부팅화면 이런게 하나도 안뜨는데 무엇이 문제일까요 연결은 경우의 수를 다 해봤는데 ㅠㅠ 답변해주시면 감사하겠습니다 ㅎㅎ

    • RXD TXD GND만 USB to Uart같은것에 연결하시면 일단 부팅시 부팅메세지라도 나와야 합니다.
      RXD와 TXD을 크로스로 연결하시는거 잊지 마시구요~

    • 유아트 2015.08.06 01:01

      늦은시간에 감사합니다 ㅠㅠ
      그렇게 연결했는데 아무것도 안떠서요 드라이버 같은거 설치해야하나요 ?? 혹시 해야된다면 사이트라도 ㅠㅠ 정말 아무것도 안뜨네요 며칠째인지ㅠㅠ

    • 컴퓨터에서 COM포트가 Open된다면 드라이버는 이미 설치된 상황일겁니다.

    • 유아트 2015.08.06 01:04

      감사합니다 !!
      혹시 putty 뭐뭐 설정해야하는지 알수있을까요 ??

    • 별거는 없고
      baudrate는 115200bps 으로 하시구
      흐름제어같은거 다 끄시면 됩니다.

    • 유아트 2015.08.06 01:09

      감사합니다 !
      ㅠ 하지만 다 했는데 안되네요 ㅠ 늦은시간에 정말 감사했습니다 ㅠㅠㅠ

    • 유아트 2015.08.06 01:09

      감사합니다 !
      ㅠ 하지만 다 했는데 안되네요 ㅠ 늦은시간에 정말 감사했습니다 ㅠㅠㅠ

    • 유아트 2015.08.06 02:54

      정말 죄송하지만 혹시 usb to uart 어떤 모듈 썼는 지 알수있을까요 ?
      http://store.extremeelectronics.co.in/USB-to-UART-Bridge-CP2102-Based.html
      저는 이걸 쓰고 있는데 아예 되지가 않네요 ㅠㅠㅠ

    • 저두 CP2102 이것과 유사한 제품을 사용합니다.
      한번 이것만 RXD TXD쇼트시켜놓고 터미널에 아무 글자나 쳐서 보이는지 확인해보세요.
      보이지 않는다면 Usb-Uart가 고장났거나 흐름제어를 잘못 설정하신것일수도 있습니다.
      아님 RXD와 TXD도 바꿔 연결해보시구요.
      그리고 꼭 공유기도 껏다 켜야 글자가 보입니다.

    • 유아트 2015.08.06 17:07

      죄송하지만 usb 유아트 어떤모델인지 알수 있을까요??

    • 저는 중국사이트에서 이름없는거 그냥 산거라서.. 뭐라 제품명이 적혀있지 않네요.
      그런데 저두 저렇게 빨간색에 좀더 기다란 모델입니다.
      RXD TXD쇼트해서 테스트 먼저 해보시길 바랍니다.
      그게 된다면 그건 문제 없는 거니까요.

    • 유아트 2015.08.06 23:10

      안되더라고요 말씀하신대로는 바로 해봤습니다 ㅠ
      감사합니다 친절하게 답해주셔서 아무것도 안눌리더라고요 ㅠㅠ 공유기가 같은 모델은데 제꺼는 안되고 ㅜㅜ 슬프네요 감사합니다 많은 거 배우고갑니다!

  • 2015.09.18 06:41

    저도 수정해서 업그레이드하고잏는데 펌웨어손상 이됬다고... 유아트로 보니 버전 체크에서걸리는 것 같은데 해결하셨나요??? ㅠㅜ

  • 2015.09.18 16:58

    하.. 재빌드를 하고싶은데 ㅋㅋㅋㅋ 무결성 검사를 어디서 어떻게 하는지를 모르겠네요...