Skip to content

Commit 6041db8

Browse files
authored
Merge pull request #2 from adeepn/master
add fip to JetHome JetHub D1 (j100) / H1 (j80) home automation controllers
2 parents 3384f1b + aeca0d1 commit 6041db8

18 files changed

+348
-0
lines changed

jethub-j100/acs.bin

968 Bytes
Binary file not shown.

jethub-j100/acs_tool.py

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# uncompyle6 version 3.2.4
2+
# Python bytecode 2.7 (62211)
3+
# Decompiled from: Python 3.6.7 (default, Nov 3 2018, 21:32:46)
4+
# [GCC 8.2.0]
5+
# Embedded file name: acs_tool.py
6+
# Compiled at: 2015-09-17 07:30:19
7+
import sys, os, os.path, json
8+
from struct import *
9+
import codecs, shutil, copy, collections
10+
ENTRY_POINT_OFFSET = 4
11+
BL2_HEADER_OFFSET = 4096
12+
ACS_TOOL_VERSION = 1
13+
acs_v1 = collections.OrderedDict()
14+
acs_v1['acs_magic'] = 'acs__'
15+
acs_v1['chip_type'] = 1
16+
acs_v1['version'] = 2
17+
acs_v1['acs_set_length'] = 8
18+
acs_v1['ddr_magic'] = 'ddrs_'
19+
acs_v1['ddr_set_version'] = 1
20+
acs_v1['ddr_set_length'] = 2
21+
acs_v1['ddr_set_addr'] = 8
22+
acs_v1['ddrt_magic'] = 'ddrt_'
23+
acs_v1['ddrt_set_version'] = 1
24+
acs_v1['ddrt_set_length'] = 2
25+
acs_v1['ddrt_set_addr'] = 8
26+
acs_v1['pll_magic'] = 'pll__'
27+
acs_v1['pll_set_version'] = 1
28+
acs_v1['pll_set_length'] = 2
29+
acs_v1['pll_set_addr'] = 8
30+
check_excepts = [
31+
'ddr_set_addr', 'ddrt_set_addr', 'pll_set_addr']
32+
check_excepts_length = ['ddr_set_length', 'ddrt_set_length', 'pll_set_length']
33+
key_versions = ['version', 'ddr_set_version', 'ddrt_set_version', 'pll_set_version']
34+
35+
class acs_tool(object):
36+
37+
def __init__(self, file_des, file_des_tmp, file_src, debug):
38+
self.debug = int(debug)
39+
self.file_des = file_des
40+
self.file_src = file_src
41+
self.file_des_tmp = file_des_tmp
42+
self.acs_des = copy.deepcopy(acs_v1)
43+
self.acs_src = copy.deepcopy(acs_v1)
44+
self.acs_base = copy.deepcopy(acs_v1)
45+
46+
def init_acs(self, acs_struct, file_name, bl2):
47+
seek_position = 0
48+
file_handler = open(file_name, 'rb')
49+
file_handler.seek(ENTRY_POINT_OFFSET)
50+
acs_entry_point, = unpack('H', file_handler.read(2))
51+
acs_entry_point -= bl2 * BL2_HEADER_OFFSET
52+
seek_position = acs_entry_point
53+
self.log_print(file_name)
54+
for key in list(acs_struct.keys()):
55+
file_handler.seek(seek_position)
56+
if isinstance(acs_struct[key], str):
57+
seek_position += len(acs_struct[key])
58+
acs_struct[key] = file_handler.read(len(acs_struct[key])).decode('utf-8')
59+
else:
60+
if isinstance(acs_struct[key], int):
61+
seek_position += acs_struct[key]
62+
if 1 == acs_struct[key]:
63+
acs_struct[key], = unpack('B', file_handler.read(1))
64+
else:
65+
acs_struct[key], = unpack('H', file_handler.read(2))
66+
if key in check_excepts:
67+
acs_struct[key] -= bl2 * BL2_HEADER_OFFSET
68+
self.log_print(key + ' ' + str(acs_struct[key]))
69+
70+
file_handler.close()
71+
72+
def check_acs(self):
73+
err_counter = 0
74+
for key in list(self.acs_des.keys()):
75+
if self.acs_des[key] != self.acs_src[key] and key not in check_excepts:
76+
print("Warning! ACS %s doesn't match!! %s/%s" % (key, self.acs_des[key], self.acs_src[key]))
77+
78+
for key in key_versions:
79+
if self.acs_des[key] > self.acs_src[key]:
80+
self.acs_des[key] = self.acs_src[key]
81+
print('Warning! ACS src %s too old!' % key)
82+
83+
for key in list(self.acs_base.keys()):
84+
if isinstance(self.acs_base[key], str):
85+
if self.acs_des[key] != self.acs_base[key]:
86+
err_counter += 1
87+
print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_des[key], self.acs_base[key]))
88+
if self.acs_src[key] != self.acs_base[key]:
89+
err_counter += 1
90+
print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_src[key], self.acs_base[key]))
91+
92+
if self.acs_des['version'] > ACS_TOOL_VERSION:
93+
print('Error! Please update acs tool! v%s>v%s' % (self.acs_des['version'], ACS_TOOL_VERSION))
94+
err_counter += 1
95+
return err_counter
96+
97+
def copy_data(self):
98+
file_des = open(self.file_des_tmp, 'r+b')
99+
file_src = open(self.file_src, 'rb')
100+
for key_addr, key_length in zip(check_excepts, check_excepts_length):
101+
file_des.seek(self.acs_des[key_addr])
102+
file_src.seek(self.acs_src[key_addr])
103+
file_des.write(file_src.read(self.acs_des[key_length]))
104+
105+
file_des.close()
106+
file_src.close()
107+
return 0
108+
109+
def run(self):
110+
shutil.copyfile(self.file_des, self.file_des_tmp)
111+
self.init_acs(self.acs_des, self.file_des_tmp, 1)
112+
self.init_acs(self.acs_src, self.file_src, 0)
113+
if self.check_acs():
114+
print('ACS check failed! Compile Abort!')
115+
return -1
116+
self.copy_data()
117+
print('ACS tool process done.')
118+
119+
def log_print(self, log):
120+
if self.debug:
121+
print(log)
122+
123+
124+
if __name__ == '__main__':
125+
if sys.argv[1] == '--help' or sys.argv[1] == '-help':
126+
print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
127+
exit(1)
128+
if len(sys.argv) != 5:
129+
print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
130+
exit(1)
131+
tool = acs_tool(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
132+
if tool.run():
133+
exit(1)
134+
# okay decompiling acs_tool.pyc

jethub-j100/aml_encrypt_axg

1.65 MB
Binary file not shown.

jethub-j100/bl2.bin

39.3 KB
Binary file not shown.

jethub-j100/bl21.bin

1.38 KB
Binary file not shown.

jethub-j100/bl30.bin

38.6 KB
Binary file not shown.

jethub-j100/bl301.bin

4.23 KB
Binary file not shown.

jethub-j100/bl31.img

165 KB
Binary file not shown.

jethub-j100/blx_fix.sh

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
3+
#bl2 file size 41K, bl21 file size 3K (file size not equal runtime size)
4+
#total 44K
5+
#after encrypt process, bl2 add 4K header, cut off 4K tail
6+
7+
#bl30 limit 41K
8+
#bl301 limit 12K
9+
#bl2 limit 41K
10+
#bl21 limit 3K, but encrypt tool need 48K bl2.bin, so fix to 7168byte.
11+
12+
#$7:name flag
13+
if [ "$7" = "bl30" ]; then
14+
declare blx_bin_limit=40960
15+
declare blx01_bin_limit=13312
16+
elif [ "$7" = "bl2" ]; then
17+
declare blx_bin_limit=41984
18+
declare blx01_bin_limit=7168
19+
else
20+
echo "blx_fix name flag not supported!"
21+
exit 1
22+
fi
23+
24+
# blx_size: blx.bin size, zero_size: fill with zeros
25+
declare -i blx_size=`du -b $1 | awk '{print int($1)}'`
26+
declare -i zero_size=$blx_bin_limit-$blx_size
27+
dd if=/dev/zero of=$2 bs=1 count=$zero_size
28+
cat $1 $2 > $3
29+
rm $2
30+
31+
declare -i blx01_size=`du -b $4 | awk '{print int($1)}'`
32+
declare -i zero_size_01=$blx01_bin_limit-$blx01_size
33+
dd if=/dev/zero of=$2 bs=1 count=$zero_size_01
34+
cat $4 $2 > $5
35+
36+
cat $3 $5 > $6
37+
38+
rm $2
39+
40+
exit 0

jethub-j80/acs.bin

968 Bytes
Binary file not shown.

jethub-j80/acs_tool.py

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# uncompyle6 version 3.2.4
2+
# Python bytecode 2.7 (62211)
3+
# Decompiled from: Python 3.6.7 (default, Nov 3 2018, 21:32:46)
4+
# [GCC 8.2.0]
5+
# Embedded file name: acs_tool.py
6+
# Compiled at: 2015-09-17 07:30:19
7+
import sys, os, os.path, json
8+
from struct import *
9+
import codecs, shutil, copy, collections
10+
ENTRY_POINT_OFFSET = 4
11+
BL2_HEADER_OFFSET = 4096
12+
ACS_TOOL_VERSION = 1
13+
acs_v1 = collections.OrderedDict()
14+
acs_v1['acs_magic'] = 'acs__'
15+
acs_v1['chip_type'] = 1
16+
acs_v1['version'] = 2
17+
acs_v1['acs_set_length'] = 8
18+
acs_v1['ddr_magic'] = 'ddrs_'
19+
acs_v1['ddr_set_version'] = 1
20+
acs_v1['ddr_set_length'] = 2
21+
acs_v1['ddr_set_addr'] = 8
22+
acs_v1['ddrt_magic'] = 'ddrt_'
23+
acs_v1['ddrt_set_version'] = 1
24+
acs_v1['ddrt_set_length'] = 2
25+
acs_v1['ddrt_set_addr'] = 8
26+
acs_v1['pll_magic'] = 'pll__'
27+
acs_v1['pll_set_version'] = 1
28+
acs_v1['pll_set_length'] = 2
29+
acs_v1['pll_set_addr'] = 8
30+
check_excepts = [
31+
'ddr_set_addr', 'ddrt_set_addr', 'pll_set_addr']
32+
check_excepts_length = ['ddr_set_length', 'ddrt_set_length', 'pll_set_length']
33+
key_versions = ['version', 'ddr_set_version', 'ddrt_set_version', 'pll_set_version']
34+
35+
class acs_tool(object):
36+
37+
def __init__(self, file_des, file_des_tmp, file_src, debug):
38+
self.debug = int(debug)
39+
self.file_des = file_des
40+
self.file_src = file_src
41+
self.file_des_tmp = file_des_tmp
42+
self.acs_des = copy.deepcopy(acs_v1)
43+
self.acs_src = copy.deepcopy(acs_v1)
44+
self.acs_base = copy.deepcopy(acs_v1)
45+
46+
def init_acs(self, acs_struct, file_name, bl2):
47+
seek_position = 0
48+
file_handler = open(file_name, 'rb')
49+
file_handler.seek(ENTRY_POINT_OFFSET)
50+
acs_entry_point, = unpack('H', file_handler.read(2))
51+
acs_entry_point -= bl2 * BL2_HEADER_OFFSET
52+
seek_position = acs_entry_point
53+
self.log_print(file_name)
54+
for key in list(acs_struct.keys()):
55+
file_handler.seek(seek_position)
56+
if isinstance(acs_struct[key], str):
57+
seek_position += len(acs_struct[key])
58+
acs_struct[key] = file_handler.read(len(acs_struct[key])).decode('utf-8')
59+
else:
60+
if isinstance(acs_struct[key], int):
61+
seek_position += acs_struct[key]
62+
if 1 == acs_struct[key]:
63+
acs_struct[key], = unpack('B', file_handler.read(1))
64+
else:
65+
acs_struct[key], = unpack('H', file_handler.read(2))
66+
if key in check_excepts:
67+
acs_struct[key] -= bl2 * BL2_HEADER_OFFSET
68+
self.log_print(key + ' ' + str(acs_struct[key]))
69+
70+
file_handler.close()
71+
72+
def check_acs(self):
73+
err_counter = 0
74+
for key in list(self.acs_des.keys()):
75+
if self.acs_des[key] != self.acs_src[key] and key not in check_excepts:
76+
print("Warning! ACS %s doesn't match!! %s/%s" % (key, self.acs_des[key], self.acs_src[key]))
77+
78+
for key in key_versions:
79+
if self.acs_des[key] > self.acs_src[key]:
80+
self.acs_des[key] = self.acs_src[key]
81+
print('Warning! ACS src %s too old!' % key)
82+
83+
for key in list(self.acs_base.keys()):
84+
if isinstance(self.acs_base[key], str):
85+
if self.acs_des[key] != self.acs_base[key]:
86+
err_counter += 1
87+
print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_des[key], self.acs_base[key]))
88+
if self.acs_src[key] != self.acs_base[key]:
89+
err_counter += 1
90+
print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_src[key], self.acs_base[key]))
91+
92+
if self.acs_des['version'] > ACS_TOOL_VERSION:
93+
print('Error! Please update acs tool! v%s>v%s' % (self.acs_des['version'], ACS_TOOL_VERSION))
94+
err_counter += 1
95+
return err_counter
96+
97+
def copy_data(self):
98+
file_des = open(self.file_des_tmp, 'r+b')
99+
file_src = open(self.file_src, 'rb')
100+
for key_addr, key_length in zip(check_excepts, check_excepts_length):
101+
file_des.seek(self.acs_des[key_addr])
102+
file_src.seek(self.acs_src[key_addr])
103+
file_des.write(file_src.read(self.acs_des[key_length]))
104+
105+
file_des.close()
106+
file_src.close()
107+
return 0
108+
109+
def run(self):
110+
shutil.copyfile(self.file_des, self.file_des_tmp)
111+
self.init_acs(self.acs_des, self.file_des_tmp, 1)
112+
self.init_acs(self.acs_src, self.file_src, 0)
113+
if self.check_acs():
114+
print('ACS check failed! Compile Abort!')
115+
return -1
116+
self.copy_data()
117+
print('ACS tool process done.')
118+
119+
def log_print(self, log):
120+
if self.debug:
121+
print(log)
122+
123+
124+
if __name__ == '__main__':
125+
if sys.argv[1] == '--help' or sys.argv[1] == '-help':
126+
print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
127+
exit(1)
128+
if len(sys.argv) != 5:
129+
print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
130+
exit(1)
131+
tool = acs_tool(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
132+
if tool.run():
133+
exit(1)
134+
# okay decompiling acs_tool.pyc

jethub-j80/aml_encrypt_gxl

1.67 MB
Binary file not shown.

jethub-j80/bl2.bin

38.9 KB
Binary file not shown.

jethub-j80/bl21.bin

1.22 KB
Binary file not shown.

jethub-j80/bl30.bin

38.1 KB
Binary file not shown.

jethub-j80/bl301.bin

9.91 KB
Binary file not shown.

jethub-j80/bl31.img

173 KB
Binary file not shown.

jethub-j80/blx_fix.sh

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
3+
#bl2 file size 41K, bl21 file size 3K (file size not equal runtime size)
4+
#total 44K
5+
#after encrypt process, bl2 add 4K header, cut off 4K tail
6+
7+
#bl30 limit 41K
8+
#bl301 limit 12K
9+
#bl2 limit 41K
10+
#bl21 limit 3K, but encrypt tool need 48K bl2.bin, so fix to 7168byte.
11+
12+
#$7:name flag
13+
if [ "$7" = "bl30" ]; then
14+
declare blx_bin_limit=40960
15+
declare blx01_bin_limit=13312
16+
elif [ "$7" = "bl2" ]; then
17+
declare blx_bin_limit=41984
18+
declare blx01_bin_limit=7168
19+
else
20+
echo "blx_fix name flag not supported!"
21+
exit 1
22+
fi
23+
24+
# blx_size: blx.bin size, zero_size: fill with zeros
25+
declare -i blx_size=`du -b $1 | awk '{print int($1)}'`
26+
declare -i zero_size=$blx_bin_limit-$blx_size
27+
dd if=/dev/zero of=$2 bs=1 count=$zero_size
28+
cat $1 $2 > $3
29+
rm $2
30+
31+
declare -i blx01_size=`du -b $4 | awk '{print int($1)}'`
32+
declare -i zero_size_01=$blx01_bin_limit-$blx01_size
33+
dd if=/dev/zero of=$2 bs=1 count=$zero_size_01
34+
cat $4 $2 > $5
35+
36+
cat $3 $5 > $6
37+
38+
rm $2
39+
40+
exit 0

0 commit comments

Comments
 (0)