graf
CH341A 사용 테스트 본문


쿠팡에서 산 CH341 어댑터가 도착했다.
초기 불량 확인을 위해 통전테스트도 해봤는데 다행히 이상은 없었다.
이제 실사용 테스트로 직접 펌웨어 추출을 해보자.
1. 테스트 대상 선정

테스트 대상은 바로 이거다.
이제는 인터넷에서 자료를 찾다가 기판만 나와도 알아보는 지경이 됐다.

그렇다.
해커들의 장난감으로 알려진 그 모델.
디버그 인터페이스에 저항만 하나 떼서 출시한 그 모델.
바로 그 wr841n이다.
무엇 하나 감추는 법이 없는 그들에게
예상 못한 보안 정책같은게 존재할 리 없다.
첫 테스트로 가장 안전한 선택지라고 할 수 있겠다.

일단 플래시로 추정되는건 우측에 8핀 두가지다.
일단 왼쪽에 있는 것부터 해보자.

빨간색 케이블이 1번 핀에 오도록 연결해야한다.

이제 반대쪽을 연결해야하는데 칸이 총 16개로
끼울 수 있는 곳이 두 영역으로 되어있다.

SPI flash를 읽어올거라면 왼쪽에 끼우면 되겠다.

하단에 표시된 바와 같이
홈이 있는 쪽이 1번 핀이다.

연결을 마쳤다.

wsl은 USB를 연결하는게 번거로워서 윈도우 프로그램을 썼다.
드라이버는 따로 설치해줘야한다.
Flash Manuf Id 0xc8, DeviceId0 0x40, DeviceId1 0x16
flash size 4MB, sector count = 64
Flash: 4 MB
flash id 0xc84016 .
이건 지난번에 확인한 부팅메시지 일부다.
id가 `0xc8`인 제품은 `GigaDevice` 모델이다.

찾아보니까 `GD25Q32C`라고 나온다.

칩을 선택해보자.
2. USB 인식 오류
그런데 한가지 문제를 발견했다.

detect chip을 누르면 분명 `ch341`까지는 인식이 된 상태라는걸 알 수 있는데

SOIC 클립을 연결하면 USB 연결이 분리되는 소리가 나면서 인식이 안된다.
연결이 됐나 싶을 때는 프로그램 자체가 멈춰버린다.
아마도 전원과 관련된 문제가 있는 것 같다.
추측하기로는 vcc가 power plane에 연결되면서
다른 칩들이 전원을 다 빼가서 USB가 죽는게 아닌가 싶은데,,
정확한 원인은 모르겠다.

Problem Using CH341A Programmer with SOIC Clip on Motherboard BIOS
자료를 찾다보니 나랑 거의 동일한 문제를 겪고 있는 사람을 발견했다.
이 분은 디솔더링 후에 해결됐다고 하는데 나는 장비가 없다..
열풍기를 조만간 살 생각이었긴 하지만 최근에 비싼걸 하나 사서 남은 돈이 없다.
솔직히 생활비도 좀 빠듯하다.
전기가 충분히 들어오지 않는게 문제라면 전원을 내가 넣어주면 되지 않을까?
..라는 생각이 들어 적어보는건데
SOIC 8핀을 칩에 바로 연결하지 않고
vcc랑 gnd를 라즈베리파이를 통해 넣어주는건 어떨까?
CH341는 gnd만 연결하고.
근데 plane으로 충분한 전원이 들어오면
장치 자체가 부팅돼버리는게 아닌가 싶긴 하다.
그럼 mcu랑 충돌이 나려나?
리셋 핀을 찾아서 low로 떨어뜨려놓고 있으면 가능할지도 모르겠다.
아니면 로직분석기 같은걸 연결하고
mcu가 플래시를 읽어가는 신호를 캡쳐해놨다가 복원하는건 어떨까?
잘 찾아보면 방법이 있을 것 같기도 한데
대신 mcu가 읽어가는 위치만 복원할 수 있으니
완전한 dump라고 하긴 어려울 수도 있겠다.
아니면.. 그냥 전원 핀을 잘라버려?
어차피 비슷한 모델 하나 더 있는데 그냥 저질러버려?

답답해서 다른 자료들 찾아보고 있는데
해외 영상들 보면 파워고 뭐고 걍 대충 꼽아서 쓴다.
뭐가 문제지 진짜..
어차피 집에 공유기 많으니까 일단 다른 제품들도 하나씩 다 해보자.
해보고 안되면 핀을 자르던가 해야겠다.
3. 테스트 대상 변경

다음에 시도해볼 것도 이거다.
자세히 보면 적혀있는데 이것도 `wr-841n` 모델이다.
방금 시도한건 `v11`이고 이건 `v8`로 하드웨어 버전이 조금 낮다.


플래시로 추정되는건 좌측과 우측에 이렇게 두개다.

왼쪽부터 연결해보자.

???
인식이 됐네?
칩을 고르는 창이 뜬다.
아니 왜 되지?
당연히 안될 줄 알고 모델명 확인도 안했는데..

FL032.. P다.
P로 선택하고 진행해보자.

read IC 진행 중이다.
아니 이게 되네;;


성공했다..
뭐여 이게
$ binwalk -e wr841n_v8.1.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
12880 0x3250 U-Boot version string, "U-Boot 1.1.4 (Jul 24 2014 - 17:19:59)"
12928 0x3280 CRC32 polynomial table, big endian
14216 0x3788 uImage header, header size: 64 bytes, header CRC: 0x4BA4360E, created: 2014-07-24 09:20:00, image size: 35486 bytes, Data Address: 0x80010000, Entry Point: 0x80010000, data CRC: 0x73883014, OS: Linux, CPU: MIPS, image type: Firmware Image, compression type: lzma, image name: "u-boot image"
14280 0x37C8 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 101164 bytes
131072 0x20000 TP-Link firmware header, firmware version: 0.0.3, image version: "", product ID: 0x0, product version: 138477576, kernel load address: 0x0, kernel entry point: 0x80002000, kernel offset: 3932160, kernel length: 512, rootfs offset: 815186, rootfs length: 1048576, bootloader offset: 2883584, bootloader length: 0
131584 0x20200 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 2325620 bytes
WARNING: Symlink points outside of the extraction directory: /home/demgraf/embeded/wr841n/TL-WR841N_V8.1/_wr841n_v8.1.bin.extracted/squashfs-root/bin/iptables-xml -> /mnt/slave/workspace/soho5_qca_trunk_prep/rootfs.build.2.6.31/sbin/iptables-multi; changing link target to /dev/null for security purposes.
1179648 0x120000 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 2513544 bytes, 534 inodes, blocksize: 131072 bytes, created: 2014-07-24 09:35:46

추출 끝났다.

업데이트를 위해 배포되는 펌웨어에는 config 영역이 포함되지 않는데
추출한 펌웨어에서는 관리자 계정, SSID, 패스워드 등등 전부 나온다.


확인해보니 LED도 들어오고 와이파이도 생성됐다.
전원을 연결하고 하는게 정답이었나?
와이파이까지 만들어진걸 보면 mcu도 살아있다는 뜻이지 않나?
음.. 뭐...
끝났네.
잘 동작한다.
근데 궁금한게
제품에 secure boot가 있는지 아직 확인을 안 해보긴 했지만
만약 있더라도 config 영역은 검증 대상에 속하지 않으려나?
에초에 사용하면서 계속 수정되는 영역이기도 하고
업데이트 대상에도 속해있지 않으니까 가능성이 있어보인다.
그럼 config 영역만 수정해서 다시 업로드하면 패스워드를 임의로 변경 가능할지도 모르겠다.
일단 지금 목적은 CH341의 정상 동작을 확인하는거였으니 나중에 하나씩 시도해보자.
조만간 테스터 후크 사용해서도 추출해보고
펌웨어 업로드도 해보자.
v11도 전원 따로 넣어주고 추출 성공하는지 테스트 해보자.
리셋핀 쓰면 잘하면 될 것 같기도 하다.
천천히 하나씩 해보자.
'Embeded' 카테고리의 다른 글
| 공유기 펌웨어 추출 (2) | 2026.03.13 |
|---|