This story started on January 18th 2022.

I was bored and decided to tear some cheap hardware apart to see if I could learn a new trick or two.

It turned out that some good friends were working on that exact same hardware for over a year and before I knew it, I was sharing my previously dumped firmware with them and in return they invited me to join their project.

These are the signal messages that started our collaborative journey.

In order to contribute to this project from the hardware side, I started shopping for a few hundred euro’s on Smart Devices.

On February 7th, 2022 on exactly 22:14 both Khaled and Tom tweeted this announcement simultaniously.

While Khaled and Tom were working hard on the software side I was collaborating with Joseph on the hardware side. We spend quite some time breaking the devices open. While most of them were plastic, some of them were glass ;-)

After tearing them (violently) apart, soldering wires to pinheaders and make a breadboard setup:

Look for the different “SMART” circuit boards inside the different devices.

CB3S

E303692

SKYLC5

WB2S

WB3S

WBLC3

WBLC5

On March 29th, 2022 the writeup of the Exploit was published.

It allows patching without having to damage/open the devices (for the once that we already done) You can help others by dumping the firmware of your own device.

I handed the remaining devices over to Tom, to clear some space in this crowded house for the next projects ;-)


I will perform a ’live’ demonstration to show the actual process of dumping the firmware with a random smart bulb that was given to me recently.


In order to motivate their residents to become more sustainable, most municipalities offer free products from WoonWijzerWinkel as an incentive.

One of the available products was a WOOX E14 SMART BULB (Full Colour+White)

On their Website it shows that they use Tuya.

Let’s see what is inside (the box):

Now gently take of the cap (after testing it is not glass):

Now for more destructive work:

When taking pictures with my Microscope I use a high power flashlight to make the identification on the chip more readable.

When you follow the traces using the continuity check of a multimeter, this will be the pinout:

Next up wire the tiny circuit board on a breadboard:

We need to look at the FT2232HL Datasheet in order to wire it to the FTDI.

First check UART2 for console data:

****SystemReset****
[01-01 18:12:16 TUYA Notice]
:BK7231S_1.0.5
CPSR:000000D3
R0:00000028
R1:00001700
R2:00800130
R3:0000003B
R4:00000001
R13:00402DB0
R14(LR):0004F896
ST:00000001
J 0x10000
prvHeapInit-start addr:0x41f1d8, size:134696
[01-01 18:12:15 TUYA Debug][uni_thread.c:215] Thread:sys_timer Exec Start. Set to Running Status
[01-01 18:12:15 TUYA Err][online_log_serv.c:280] log stats ufread fail.
[01-01 18:12:15 TUYA Debug][online_log_serv.c:540] log serv init success
[01-01 18:12:15 TUYA Notice][light_system.c:1425] go to pre device!
bk_rst:1 tuya_rst:4[01-01 18:12:15 TUYA Notice][light_system.c:1436] goto first bright up!
bk_rst:1 tuya_rst:40xcb 0x4e 0x3e 0xa4 0x0 0x30 0x9d 0xab 0x65 0x6d 0x8d 0xbf 0xe4 0xb9 0x3f 0x35
[01-01 18:12:15 TUYA Notice][tuya_main.c:203] **********[oem_bk7231s_light_ty] [1.1.2] compiled at May 30 2020 16:23:50**********
[rx_iq]rx_amp_err_rd: 0xfffffffd
[rx_iq]rx_phase_err_rd: 0xfffffffd
[rx_iq]rx_ty2_rd: 0x000
*********** finally result **********
gbias_after_cal: 0x15
gav_tssi: 0x1f
gtx_q_dc_comp:0x1fc
gtx_i_dc_comp:0x200
gtx_i_gain_comp:1023
gtx_q_gain_comp:1023
gtx_phase_comp:501
gtx_phase_ty2:512
gtx_ifilter_corner over: 0xa
gtx_qfilter_corner over: 0xa
gtx_dcorMod:0x8, gtx_dcorPA:0xa
gtx_pre_gain:0x0
g_rx_dc_gain_tab 0 over: 0x80808080
g_rx_dc_gain_tab 1 over: 0x88788880
g_rx_dc_gain_tab 2 over: 0x92789078
g_rx_dc_gain_tab 3 over: 0xbc60ac68
g_rx_dc_gain_tab 4 over: 0xbe60bc60
g_rx_dc_gain_tab 5 over: 0xbc5fbe60
g_rx_dc_gain_tab 6 over: 0xbc5ebc5e
g_rx_dc_gain_tab 7 over: 0xbc5dbc5f
grx_amp_err_wr:0x201
grx_phase_err_wr:0x3ff
**************************************
temp in flash is:276
lpf_i & q in flash is:9, 9
xtal in flash is:32
-----pwr_gain:12, g_idx:12, shift_b:0, shift_g:0
                                                -----[pwr_gain]12
                                                                 Initializing TCP/IP stack
[01-01 18:12:17 TUYA Notice][tuya_main.c:229] mf_init succ
[01-01 18:12:17 TUYA Notice][tuya_ble_api.c:292] ble sdk inited
device id key : 16
d4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
!!!!!!!!!!tuya_bt_port_init
[01-01 18:12:17 TUYA Notice][tuya_ble_api.c:328] ble sdk re_inited
[01-01 18:12:17 TUYA Notice][tuya_bt_sdk.c:319] ty bt sdk init success finish
[01-01 18:12:17 TUYA Notice][light_system.c:1484] < TUYA IOT SDK V:2.0.0 BS:30.06_PT:2.2_LAN:3.3_CAD:1.0.2_CD:1.0.0 >
< tuya_iot_lib BUILD AT:2018_12_05_17_03_30 BY tuya_iot_team AT 8710_2M >
IOT DEFS < WIFI_GW:1 DEBUG:1 KV_FILE:0 SHUTDOWN_MODE:0 LITTL[01-01 18:12:17 TUYA Notice][light_system.c:1485] oem_bk7231s_light_ty:1.1.2
[01-01 18:12:17 TUYA Notice][device_config_load.c:310] device config data already load! Don't load again!!
[01-01 18:12:17 TUYA Notice][light_set_color.c:94] Drive init already init ok
[01-01 18:12:17 TUYA Notice][tuya_main.c:128] current product ssid name:tuya_mdev_test2
ht in scan
scan_start_req_handler
gapm_cmp_evt_handler operation = 0x1, status = 0x0
gapm_cmp_evt_handler operation = 0x3, status = 0x0
STACK INIT OK
ble_env->start_hdl = 0x7gapm_cmp_evt_handler operation = 0x1b, status = 0x0
CREATE DB SUCCESS
[01-01 18:12:17 TUYA Notice][tuya_ble_api.c:256] rev ble event 3
device id key : 16
d4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
!!!!!!!!!!tuya_bt_reset_adv
[01-01 18:12:17 TUYA Notice][tuya_ble_api.c:120] ble adv && resp changed
do td cur_t:303--last:idx:13,t:276 -- new:idx:15,t:300
--0xc:08, shift_b:0, shift_g:0, X:1
                                   [01-01 18:12:19 TUYA Notice][gw_intf.c:3166] serial_no:10d56174f567
[01-01 18:12:19 TUYA Notice][gw_intf.c:3197] gw_cntl.gw_wsm.stat:0
[01-01 18:12:19 TUYA Notice][gw_intf.c:3200] gw_cntl.gw_wsm.nc_tp:1
[01-01 18:12:19 TUYA Notice][gw_intf.c:3201] gw_cntl.gw_wsm.md:0
[01-01 18:12:19 TUYA Notice][gw_intf.c:3238] gw_cntl.gw_if.abi:0 input:0
[01-01 18:12:19 TUYA Notice][gw_intf.c:3239] gw_cntl.gw_if.product_key:keytg5kq8gvkv9dh, input:keytg5kq8gvkv9dh
[01-01 18:12:19 TUYA Notice][gw_intf.c:3240] gw_cntl.gw_if.tp:0, input:0
[01-01 18:12:19 TUYA Notice][gw_intf.c:3242] gw_cntl.gw_if.firmware_key:keytg5kq8gvkv9dh, input:keytg5kq8gvkv9dh
[01-01 18:12:19 TUYA Notice][tuya_bt_sdk.c:337] ty bt update product:keytg5kq8gvkv9dh 1
[01-01 18:12:19 TUYA Notice][tuya_ble_api.c:137] update product_id type:1 keytg5kq8gvkv9dh b765eb2d66ef4129 qW8PHxYi99JagWUI3c5dnRsovLgi4q5M
[01-01 18:12:19 TUYA Notice][gw_intf.c:2981] start tmm long timer,cfg_lp_timeout:180000ms
[01-01 18:12:19 TUYA Notice][light_system.c:1395] frame init ok!
ht in scan
scan_start_req_handler
[01-01 18:12:20 TUYA Err][uf_flash_file_app.c:339] uf_get_size err,filepath:3,ret:13
[01-01 18:12:20 TUYA Err][uf_flash_file_app.c:339] uf_get_size err,filepath:5,ret:13
[01-01 18:12:20 TUYA Err][uf_flash_file_app.c:339] uf_get_size err,filepath:4,ret:13
[01-01 18:12:20 TUYA Notice][light_system.c:594] start ez config auto blink
[01-01 18:12:20 TUYA Notice][bp1658cj.c:191] low power mode
[01-01 18:12:21 TUYA Notice][bp1658cj.c:191] low power mode
[01-01 18:12:21 TUYA Notice][bp1658cj.c:191] low power mode
me_set_ps_disable:840 0 0 0 462557 952021
------beacon_int_set:100 TU
set_active param 0
                  [msg]APM_STOP_CFM
                                   update_ongoing_1_bcn_update
mm-next-timer_null
hal_machw_enter_monitor_mode
[01-01 18:12:21 TUYA Notice][tuya_bt_sdk.c:345] ty bt start network cfg..
[01-01 18:12:21 TUYA Notice][tuya_ble_api.c:161] update bound state 0
device id key : 16
6b 51 d4 fd 36 e5 b3 aa 4b 3a 9a b5 df 6e 0b cc
!!!!!!!!!!tuya_bt_reset_adv
[01-01 18:12:21 TUYA Notice][tuya_ble_api.c:120] ble adv && resp changed
!!!!!!!!!!tuya_before_netcfg_cb
appm start advertising
[01-01 18:12:22 TUYA Notice][bp1658cj.c:191] low power mode
do td cur_t:309--last:idx:15,t:300 -- new:idx:16,t:312
--0xc:08, shift_b:0, shift_g:0, X:0
                                   [01-01 18:12:22 TUYA Notice][bp1658cj.c:191] low power mode
[01-01 18:12:23 TUYA Notice][bp1658cj.c:191] low power mode
[01-01 18:12:23 TUYA Notice][bp1658cj.c:191] low power mode

Now dump the firmware:

jilles@arch ~/tools/tuya_dumps$ ./dump.sh WOOX

Connected! Chip info: BK7231S_1.0.5
Reading 4k page at 0X2000000 (0.00%)
Reading 4k page at 0X2001000 (0.20%)
Reading 4k page at 0X2002000 (0.39%)
Reading 4k page at 0X2003000 (0.59%)
           |          |
           |          |
           |          |
           |          |
Reading 4k page at 0X21FC000 (99.22%)
Reading 4k page at 0X21FD000 (99.41%)
Reading 4k page at 0X21FE000 (99.61%)
Reading 4k page at 0X21FF000 (99.80%)

RBL containers:
        0x10f9a: bootloader - [encoding_algorithm=NONE, size=0xdd20] - extracted to WOOX/WOOX_bootloader_1.00.bin
        0x129f0a: app - [encoding_algorithm=NONE, size=0xed5e0] - extracted to WOOX/WOOX_app_1.00.bin
total 3056
-rw-r--r-- 1 jilles jilles  972256 Apr  5 23:47 WOOX_app_1.00.bin
-rw-r--r-- 1 jilles jilles   56608 Apr  5 23:47 WOOX_bootloader_1.00.bin
-rw-r--r-- 1 jilles jilles 2097152 Apr  5 23:47 WOOX.dump
/**< @author <jiewu@bekencorp.com> */
/**< @version v0.3.1 */
 encrypt without crc successfully!
 -file size: 0xed5f0
/**< @author <jiewu@bekencorp.com> */
/**< @version v0.3.1 */
 encrypt without crc successfully!
 -file size: 0xdd30
total 4068
drwxr-xr-x  2 jilles jilles     157 Apr  5 23:47 .
drwxr-xr-x 12 jilles jilles    4096 Apr  5 23:46 ..
-rw-r--r--  1 jilles jilles  972256 Apr  5 23:47 WOOX_app_1.00.bin
-rw-r--r--  1 jilles jilles  972272 Apr  5 23:47 WOOX_app_1.00_decrypted.bin
-rw-r--r--  1 jilles jilles   56608 Apr  5 23:47 WOOX_bootloader_1.00.bin
-rw-r--r--  1 jilles jilles   56624 Apr  5 23:47 WOOX_bootloader_1.00_decrypted.bin
-rw-r--r--  1 jilles jilles 2097152 Apr  5 23:47 WOOX.dump

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
52420         0xCCC4          CRC32 polynomial table, little endian
55687         0xD987          Copyright string: "Copyright 1995-2005 Mark Adler "


DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
650644        0x9ED94         SHA256 hash constants, little endian
833328        0xCB730         AES Inverse S-Box
846811        0xCEBDB         Copyright string: "Copyright (c) 2003-2015, Jouni Malinen <j@w1.fi> and contributors"
889100        0xD910C         CRC32 polynomial table, little endian
895777        0xDAB21         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/wifi_sdk/tuya_iot_wifi_api.c
900573        0xDBDDD         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/tuya_cloud/gw_intf.c
907326        0xDD83E         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/tuya_cloud/smart_frame.c
917611        0xE006B         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_base/kv_storge/flash/simple_flash_app.c
920463        0xE0B8F         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_base/sys_serv/uni_time_queue.c
923506        0xE1772         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_adapter/adapter_platform.c
924457        0xE1B29         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_adapter/system/uni_semaphore.c
924977        0xE1D31         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_adapter/utilities/uni_time.c
925485        0xE1F2D         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_adapter/utilities/mem_pool.c
925898        0xE20CA         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_adapter/wifi_intf/wf_basic_intf.c
926044        0xE215C         CRC32 polynomial table, little endian
927068        0xE255C         CRC32 polynomial table, little endian
928156        0xE299C         Base64 standard index table
928486        0xE2AE6         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/bt_conn/tuya_ble_api.c
931060        0xE34F4         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/bt_conn/tuya_ble_mutli_tsf_protocol.c
933576        0xE3EC8         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/wifi_cfg_serv/ez_mc.c
938044        0xE503C         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/tuya_cloud/iot_httpc.c
943947        0xE674B         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/tuya_cloud/com_protocol.c
955024        0xE9290         SHA256 hash constants, little endian
955549        0xE949D         Unix path: /home/share/samba/tuya/wifi_sdk/wifisdk_for_bk7231/project/tuya_iot/src/tuya_iot_sdk/wifi_cfg_serv/wf_sniffer_intf.c

I created a small programm to make my life easier:

#!/bin/bash

BKTOOLS=~/Git/bk7231tools/bk7231tools.py

if [ "$1" == "" ];then
   echo
   echo Syntax:
   echo \ \ dump.sh \<foldername\>
   echo
   exit
fi

if [ ! -d $1 ];then
  mkdir $1
fi

#  Dump Flash
if [ ! -f  $1/$1.dump];then
  python ${BKTOOLS} read_flash $1/$1.dump-d /dev/ttyUSB0 --no-verify-checksum -s 02000000 -c 512 -b 921600
fi
if [ ! -f $1/$1.dump];then
  echo Nothing dumped - exiting
  exit
fi

# Remove previous extracted files
for f in $1/*bin$1/*cpr $1/*out ;do
  rm $f
done

# Extract items from Flash
python ${BKTOOLS} dissect_dump$1/$1.dump-e -O $1/
ls -l $1/

# Decrypt encrypted parts
if [ ! -f encrypt ];then
   wget "https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231t/blob/master/platforms/bk7231t/bk7231t_os/tools/generate/package_tool/linux/encrypt?raw=true" -O encrypt
   chmod +x encrypt
fi

hash=$(sha1sum encrypt | cut -d\  -f1)
if [ ! "$hash" == "3631612a9e7158b3043385745729324d53c6a5c2" ];then
  echo encrypt file has different hash, be careful
  exit
fi

# Decrypt items
./encrypt  $1/$1_app_1.00.bin510fb093 a3cbeadc 5993a17e c7adeb03 10000
mv $1/$1_app_1.00_enc.bin$1/$1_app_1.00_decrypted.bin

./encrypt  $1/$1_bootloader_1.00.bin510fb093 a3cbeadc 5993a17e c7adeb03 0
mv $1/$1_bootloader_1.00_enc.bin$1/$1_bootloader_1.00_decrypted.bin

rm $1/*cpr
rm $1/*out
ls -la $1/
binwalk $1/$1_bootloader_1.00_decrypted.bin
binwalk $1/$1_app_1.00_decrypted.bin

Add thats how another dump is added to the list of devices:

$ tree .

+-- 2578539-970719-White-And-Color-Ambiance-E27-806Lumen
|   +-- 2578539-970719_app_1.00.bin
|   +-- 2578539-970719_app_1.00_decrypted.bin
|   +-- 2578539-970719_bootloader_1.00.bin
|   +-- 2578539-970719_bootloader_1.00_decrypted.bin
|   +-- 2578539-970719.dump
|
+-- 2578539-970724-White-And-Color-Ambiance-E27-806Lumen
|   +-- 2578539-970724_app_1.00.bin
|   +-- 2578539-970724_app_1.00_decrypted.bin
|   +-- 2578539-970724_bootloader_1.00.bin
|   +-- 2578539-970724_bootloader_1.00_decrypted.bin
|   +-- 2578539-970724.dump
|
+-- 3000267-Tunable-White-GU10-345Lumen
|   +-- 3000267_app_1.00.bin
|   +-- 3000267_app_1.00_decrypted.bin
|   +-- 3000267_bootloader_1.00.bin
|   +-- 3000267_bootloader_1.00_decrypted.bin
|   +-- 3000267.dump
|
+-- 3000272-Tunable-White-E27-806Lumen
|   +-- 3000272_app_1.00.bin
|   +-- 3000272_app_1.00_decrypted.bin
|   +-- 3000272_bootloader_1.00.bin
|   +-- 3000272_bootloader_1.00_decrypted.bin
|   +-- 3000272.dump
|
+-- 3000273-Tunable-White-E27-1400Lumen
|   +-- 3000273_app_1.00.bin
|   +-- 3000273_app_1.00_decrypted.bin
|   +-- 3000273_bootloader_1.00.bin
|   +-- 3000273_bootloader_1.00_decrypted.bin
|   +-- 3000273.dump
|
+-- 3001686-970709-Warm-White-Smart-Filament-E27-806Lumen
|   +-- 3001686_app_1.00.bin
|   +-- 3001686_app_1.00_decrypted.bin
|   +-- 3001686_bootloader_1.00.bin
|   +-- 3001686_bootloader_1.00_decrypted.bin
|   +-- 3001686.dump
|
+-- 3001700-970739-Warm-White-Smart-Filament-E27-806Lumen
|   +-- 3001700_app_1.00.bin
|   +-- 3001700_app_1.00_decrypted.bin
|   +-- 3001700_bootloader_1.00.bin
|   +-- 3001700_bootloader_1.00_decrypted.bin
|   +-- 3001700.dump
|
+-- 3001702-970727-Warm-White-Ambiance-Smart-Filament-E14-470Lumen
|   +-- 3001702_app_1.00.bin
|   +-- 3001702_app_1.00_decrypted.bin
|   +-- 3001702_bootloader_1.00.bin
|   +-- 3001702_bootloader_1.00_decrypted.bin
|   +-- 3001702.dump
|
+-- 3004154-LED-Mood-Light
|   +-- 3004154_app_1.00.bin
|   +-- 3004154_app_1.00_decrypted.bin
|   +-- 3004154_bootloader_1.00.bin
|   +-- 3004154_bootloader_1.00_decrypted.bin
|   +-- 3004154.dump
|
+-- 3004200-WiFi-Outdoor-Dual-Socket
|   +-- 3004200_app_1.00.bin
|   +-- 3004200_app_1.00_decrypted.bin
|   +-- 3004200_bootloader_1.00.bin
|   +-- 3004200_bootloader_1.00_decrypted.bin
|   +-- 3004200.dump
|
+-- 3004919-970710-Smart-LED-RGB-Tunable-White-GU10-380Lumen
|   +-- 3004919_970710_app_1.00.bin
|   +-- 3004919_970710_app_1.00_decrypted.bin
|   +-- 3004919_970710_bootloader_1.00.bin
|   +-- 3004919_970710_bootloader_1.00_decrypted.bin
|   +-- 3004919_970710.dump
|
+-- 3005364-970796-WiFi-Smart-Outdoor-Garden-Lamp
|   +-- 3005364-970796_app_1.00.bin
|   +-- 3005364-970796_app_1.00_decrypted.bin
|   +-- 3005364-970796_bootloader_1.00.bin
|   +-- 3005364-970796_bootloader_1.00_decrypted.bin
|   +-- 3005364-970796.dump
|
+-- 3006033-Dimmer-Switch
|   +-- 3006033_app_1.00.bin
|   +-- 3006033_app_1.00_decrypted.bin
|   +-- 3006033_bootloader_1.00.bin
|   +-- 3006033_bootloader_1.00_decrypted.bin
|   +-- 3006033.dump
|
+-- 3006767-Tunable-White-Downlight-360Lumen
|   +-- 3006767_app_1.00.bin
|   +-- 3006767_app_1.00_decrypted.bin
|   +-- 3006767_bootloader_1.00.bin
|   +-- 3006767_bootloader_1.00_decrypted.bin
|   +-- 3006767.dump
|
+-- 3007213-970787-Ceiling-Light
|   +-- dump_3007213_970787_app_1.00.bin
|   +-- dump_3007213_970787_app_1.00_enc.bin
|   +-- dump_3007213_970787.bin
|   +-- dump_3007213_970787_bootloader_1.00.bin
|   +-- dump_3007213_970787_bootloader_1.00_enc.bin
|
+-- 3007257-970729-Extra-Warm-White-Ambiance-Smart-Filament-E27-350Lumen
|   +-- 3007257_app_1.00.bin
|   +-- 3007257_app_1.00_decrypted.bin
|   +-- 3007257_bootloader_1.00.bin
|   +-- 3007257_bootloader_1.00_decrypted.bin
|   +-- 3007257.dump
|
+-- 8435606703567-WOOX-Smart-Bulb-Full-Colour-and-White-E14-470Lumen
|   +-- WOOX_app_1.00.bin
|   +-- WOOX_app_1.00_decrypted.bin
|   +-- WOOX_bootloader_1.00.bin
|   +-- WOOX_bootloader_1.00_decrypted.bin
|   +-- WOOX.dump
|
+-- 970715_E27_WCW
|   +-- 970715_E27_WCW_app_1.00.bin
|   +-- 970715_E27_WCW_app_1.00_decrypted.bin
|   +-- 970715_E27_WCW_bootloader_1.00.bin
|   +-- 970715_E27_WCW_bootloader_1.00_decrypted.bin
|   +-- 970715_E27_WCW.dump
|
+-- MoodLight_WB3S
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd_app_1.00.bin
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd_app_1.00_decrypted.bin
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd_app_1.00_decrypted_copy_for_demo.bin
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd_bootloader_1.00.bin
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd_bootloader_1.00_decrypted.bin
    +-- LSC_mood_light_BK7231_2MB_Flash_CRCd.dump