Translations of this page:

Взлом цифровых рамок

Фоторамки-брелоки построены на основе полуторадюймовых дисплеев 128х128 пикселов с контроллером ST7637.

В качестве процессора в части рамок используется MCU Appotech AX203 (CFP5102) с системой команд 8051. К сожалению он однократно программируемый, и интереса не представляет.

Сейчас стали появлятся рамки на базе MCU Appotech AX206 (приобретена на Ebay), который имеет 4кб масочной ROM программ, и 3кб SRAM программ/данных. Судя по всему части программы подгружаются из внешнего SPI Flash (1Mb ES25M80A маркированного как M80A80CG). Вероятно программное обеспечение рамки может быть модифицировано.

Фоторамка видна в системе как пишуший CD привод.

В linux она определяется как:

dmesg

[551412.809178] usb 1-2: New USB device found, idVendor=1908, idProduct=0102
[551412.809190] usb 1-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[551412.809198] usb 1-2: Product: Digital Photo Frame
[551412.809203] usb 1-2: Manufacturer: BUILDWIN
[551412.809208] usb 1-2: SerialNumber: 200807101900000000
[551418.439895] usb-storage: device scan complete                                                  
[551418.439895] scsi 5:0:0:0: CD-ROM            buildwin  Photo Frame     1.01 PQ: 0 ANSI: 2
[551418.454696] sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
[551418.454696] sr 5:0:0:0: Attached scsi CD-ROM sr0
[551418.454696] sr 5:0:0:0: Attached scsi generic sg2 type 5

  • Копия флеша фоторамки: ax206-based-dpf.bin.gz.
  • Копия флеша фоторамки снятая через USB: dpf-1.5-ax206-based.bin.gz. Копия была снята с помощью небольшой утилиты1) dpf-tools.tar.gz :!: Будьте внимательны, и перед использованием проверьте исходный код утилиты. Дабы не перезаписать чего линего в фоторамке ;-)
  • Образ USB диска фоторамки: disk-image.iso.gz.

См. так же:

0_25caf_d9bd8bb6_m.jpg

Выполнение кода

При сбросе процессора выполняется некий код из масочного ROM. После необходимых инициализаций, по SPI шине делается попытка прочитать флеш-память. Читается 32 байта начиная с нулевого адреса.

В байтах 6, 7 и вероятно 8, хранится адрес первого участка программного кода читаемого из флеш. В нашем случае это будет 0x0220. Где хранится длина участка, я к сожалению не выяснил. :?:

Далее считывается участок флеш начиная с адреса 0x0220 по адрес 0x02FF, итого 0xE0 байт. Исполненимый код находится начиная с адреса 0x022B. Вероятно загрузка и дальнейшее исполнение кода происходит в IRAM2)) расположеную в адресном пространстве процессора начиная с адреса 0x1330 (исполненимый код идёт соответственно с адреса 0x133B) :?: :?: :?:

Масочный ROM

Если в момент сброса процессора удерживать клавишу Menu код из флеша выполнятся не будет, а управление будет отдано обратно в прошивку ROM.

При этом процессор определяется по шине USB следующим образом:

dmesg

[533030.584390] hiddev96hidraw0: USB HID v2.01 Device [BUILDWIN BL206v1.0.0] on usb-0000:00:1d.7-6.3
[533030.584554] usb 1-6.3: New USB device found, idVendor=1908, idProduct=3318
[533030.584558] usb 1-6.3: New USB device strings: Mfr=2, Product=1, SerialNumber=3                                
[533030.584562] usb 1-6.3: Product: BL206v1.0.0                                                                    
[533030.584564] usb 1-6.3: Manufacturer: BUILDWIN
[533030.584567] usb 1-6.3: SerialNumber: 000001
[45057.225436] usb 3-1: configuration #1 chosen from 1 choice
[45067.233308] generic-usb 0003:1908:3318.0035: timeout initializing reports
[45067.233510] generic-usb 0003:1908:3318.0035: hiddev97,hidraw1: USB HID v2.01 Device [BUILDWIN BL206v1.0.0] on usb-0000:00:1
d.1-1/input0

Вероятно, при чистом или испорченном флеше этот механизм позволяет прошить его.

MCU Pinout

AX206 connection table

Pin Name Connect Pin Name Connect
1 P3.6/WR LCD D6 25 P1.5/A5/GRE LCD CS#
2 P3.5/T1 LCD D5 26 P1.4/A4/GRD LCD D/C#
3 P3.4/T0 LCD D4 27 VddIO Vdd
4 P3.3/DP2/INTP1 LCD D3 28 VssIO GND
5 P3.2/EA/INTP0 LCD D2/DB 29 MCLR Rst Btn
6 P3.1/TXD LCD D1/UB 30 P1.3/A3/GTD LCD RD#
7 P3.0/RXD/VRO R 5K1 to GND 31 P1.2/A2/AD7/GTE LCD WR#
8 VddIO Vdd 32 P1.1/A1/ALE/GTC LCD RST#
9 VssIO GND 33 P1.0/A0/PSEN LCD D0
10 LDOE Vdd 34 DVss
11 DVdd Vdd 35 DVdd
12 Vpp Vdd 36 P0.7/A7/D7/EXT2 VUSB det
13 P2.7/A15/PWMN 37 P0.6/A6/D6/AD6/EXT1 Menu Butt
14 P2.6/A14/PWMP Buzzer :?: 38 P0.5/A5/D5/AD5/EXT0
15 P2.5/A13/T2EX 39 P0.4/A4/D4/AD4 Bat Ctrl
16 P2.4/A12/T2 LCD BL(NC) 40 P0.3/A3/D3/AD3 Bat In
17 P2.3/A11/PWM2 LCD BL(2K) 41 P0.2/A2/D2/AD2
18 P2.2/A10/PWM1 42 P0.1/A1/D1/AD1 LCD BL2(2K)
19 P2.1/A9/SDO Flash DI 43 P0.0/A0/D0/AD0/ADV
20 P2.0/A8/SDI Flash DO 44 OSC1
21 USBDM 45 OSC2
22 USBDP 46 OSC32K1
23 P1.7/A7/SCK Flash CLK 47 OSC32K2
24 P1.6/A6/GRC Flash CS# 48 P3.7/DP1/RD LCD D7

LCD

DFM-075D-NL-WD

Pin Name Description
1 Vdd +3v
2 GND
3 D7
4 D6
5 D5
6 D4
7 D3
8 D2
9 D1
10 D0
11 RD#
12 WR#
13 D/C#
14 RST#
15 CS#
16
17
18 GND
19 LED- (2.6v)
20 LED+ 10 j (3v)

Дискуссия

Enter your comment (wiki syntax is allowed):
 
projects/dpf-hack.txt · Последние изменения: 2009/12/01 14:21 От adminko
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Driven by DokuWiki $ Баблабы