aboutsummaryrefslogtreecommitdiffstats
path: root/package/utils/rbextract/src/routerboot.h
blob: 13809d97fc494bd749b85c54a0185014b2994097 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
/*
 *  RouterBoot/RBextract definitions
 *
 *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
 *  Copyright (C) 2019 Robert Marko <robimarko@gmail.com>
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License version 2 as published
 *  by the Free Software Foundation.
 */

#ifndef _RBEXTRACT_H
#define _RBEXTRACT_H

/* Used on some newer boards (ipq40xx).  This fixed data is concatenated
   with data extracted from the hard_config partition, then decompressed
   with LZO.  There may also be a second decoding step with RLE. */
uint8_t lzo_prefix[] = {
    0x00, 0x05, 0x4c, 0x4c, 0x44, 0x00, 0x34, 0xfe,
    0xfe, 0x34, 0x11, 0x3c, 0x1e, 0x3c, 0x2e, 0x3c,
    0x4c, 0x34, 0x00, 0x52, 0x62, 0x92, 0xa2, 0xb2,
    0xc3, 0x2a, 0x14, 0x00, 0x00, 0x05, 0xfe, 0x6a,
    0x3c, 0x16, 0x32, 0x16, 0x11, 0x1e, 0x12, 0x46,
    0x32, 0x46, 0x11, 0x4e, 0x12, 0x36, 0x32, 0x36,
    0x11, 0x3e, 0x12, 0x5a, 0x9a, 0x64, 0x00, 0x04,
    0xfe, 0x10, 0x3c, 0x00, 0x01, 0x00, 0x00, 0x28,
    0x0c, 0x00, 0x0f, 0xfe, 0x14, 0x00, 0x24, 0x24,
    0x23, 0x24, 0x24, 0x23, 0x25, 0x22, 0x21, 0x21,
    0x23, 0x22, 0x21, 0x22, 0x21, 0x2d, 0x38, 0x00,
    0x0c, 0x25, 0x25, 0x24, 0x25, 0x25, 0x24, 0x23,
    0x22, 0x21, 0x20, 0x23, 0x21, 0x21, 0x22, 0x21,
    0x2d, 0x38, 0x00, 0x28, 0xb0, 0x00, 0x00, 0x22,
    0x00, 0x00, 0xc0, 0xfe, 0x03, 0x00, 0xc0, 0x00,
    0x62, 0xff, 0x62, 0xff, 0xfe, 0x06, 0x00, 0xbb,
    0xff, 0xba, 0xff, 0xfe, 0x08, 0x00, 0x9e, 0xff,
    0xfe, 0x0a, 0x00, 0x53, 0xff, 0xfe, 0x02, 0x00,
    0x20, 0xff, 0xb1, 0xfe, 0xfe, 0xb2, 0xfe, 0xfe,
    0xed, 0xfe, 0xfe, 0xfe, 0x04, 0x00, 0x3a, 0xff,
    0x3a, 0xff, 0xde, 0xfd, 0x5f, 0x04, 0x33, 0xff,
    0x4c, 0x74, 0x03, 0x05, 0x05, 0xff, 0x6d, 0xfe,
    0xfe, 0x6d, 0xfe, 0xfe, 0xaf, 0x08, 0x63, 0xff,
    0x64, 0x6f, 0x08, 0xac, 0xff, 0xbf, 0x6d, 0x08,
    0x7a, 0x6d, 0x08, 0x96, 0x74, 0x04, 0x00, 0x08,
    0x79, 0xff, 0xda, 0xfe, 0xfe, 0xdb, 0xfe, 0xfe,
    0x56, 0xff, 0xfe, 0x04, 0x00, 0x5e, 0xff, 0x5e,
    0xff, 0x6c, 0xfe, 0xfe, 0xfe, 0x06, 0x00, 0x41,
    0xff, 0x7f, 0x74, 0x03, 0x00, 0x11, 0x44, 0xff,
    0xa9, 0xfe, 0xfe, 0xa9, 0xfe, 0xfe, 0xa5, 0x8f,
    0x01, 0x00, 0x08, 0x01, 0x01, 0x02, 0x04, 0x08,
    0x02, 0x04, 0x08, 0x08, 0x01, 0x01, 0xfe, 0x22,
    0x00, 0x4c, 0x60, 0x64, 0x8c, 0x90, 0xd0, 0xd4,
    0xd8, 0x5c, 0x10, 0x09, 0xd8, 0xff, 0xb0, 0xff,
    0x00, 0x00, 0xba, 0xff, 0x14, 0x00, 0xba, 0xff,
    0x64, 0x00, 0x00, 0x08, 0xfe, 0x06, 0x00, 0x74,
    0xff, 0x42, 0xff, 0xce, 0xff, 0x60, 0xff, 0x0a,
    0x00, 0xb4, 0x00, 0xa0, 0x00, 0xa0, 0xfe, 0x07,
    0x00, 0x0a, 0x00, 0xb0, 0xff, 0x96, 0x4d, 0x00,
    0x56, 0x57, 0x18, 0xa6, 0xff, 0x92, 0x70, 0x11,
    0x00, 0x12, 0x90, 0x90, 0x76, 0x5a, 0x54, 0x54,
    0x4c, 0x46, 0x38, 0x00, 0x10, 0x10, 0x08, 0xfe,
    0x05, 0x00, 0x38, 0x29, 0x25, 0x23, 0x22, 0x22,
    0x1f, 0x00, 0x00, 0x00, 0xf6, 0xe1, 0xdd, 0xf8,
    0xfe, 0x00, 0xfe, 0x15, 0x00, 0x00, 0xd0, 0x02,
    0x74, 0x02, 0x08, 0xf8, 0xe5, 0xde, 0x02, 0x04,
    0x04, 0xfd, 0x00, 0x00, 0x00, 0x07, 0x50, 0x2d,
    0x01, 0x90, 0x90, 0x76, 0x60, 0xb0, 0x07, 0x07,
    0x0c, 0x0c, 0x04, 0xfe, 0x05, 0x00, 0x66, 0x66,
    0x5a, 0x56, 0xbc, 0x01, 0x06, 0xfc, 0xfc, 0xf1,
    0xfe, 0x07, 0x00, 0x24, 0x95, 0x70, 0x64, 0x18,
    0x06, 0x2c, 0xff, 0xb5, 0xfe, 0xfe, 0xb5, 0xfe,
    0xfe, 0xe2, 0x8c, 0x24, 0x02, 0x2f, 0xff, 0x2f,
    0xff, 0xb4, 0x78, 0x02, 0x05, 0x73, 0xff, 0xed,
    0xfe, 0xfe, 0x4f, 0xff, 0x36, 0x74, 0x1e, 0x09,
    0x4f, 0xff, 0x50, 0xff, 0xfe, 0x16, 0x00, 0x70,
    0xac, 0x70, 0x8e, 0xac, 0x40, 0x0e, 0x01, 0x70,
    0x7f, 0x8e, 0xac, 0x6c, 0x00, 0x0b, 0xfe, 0x02,
    0x00, 0xfe, 0x0a, 0x2c, 0x2a, 0x2a, 0x28, 0x26,
    0x1e, 0x1e, 0xfe, 0x02, 0x20, 0x65, 0x20, 0x00,
    0x00, 0x05, 0x12, 0x00, 0x11, 0x1e, 0x11, 0x11,
    0x41, 0x1e, 0x41, 0x11, 0x31, 0x1e, 0x31, 0x11,
    0x70, 0x75, 0x7a, 0x7f, 0x84, 0x89, 0x8e, 0x93,
    0x98, 0x30, 0x20, 0x00, 0x02, 0x00, 0xfe, 0x06,
    0x3c, 0xbc, 0x32, 0x0c, 0x00, 0x00, 0x2a, 0x12,
    0x1e, 0x12, 0x2e, 0x12, 0xcc, 0x12, 0x11, 0x1a,
    0x1e, 0x1a, 0x2e, 0x1a, 0x4c, 0x10, 0x1e, 0x10,
    0x11, 0x18, 0x1e, 0x42, 0x1e, 0x42, 0x2e, 0x42,
    0xcc, 0x42, 0x11, 0x4a, 0x1e, 0x4a, 0x2e, 0x4a,
    0x4c, 0x40, 0x1e, 0x40, 0x11, 0x48, 0x1e, 0x32,
    0x1e, 0x32, 0x2e, 0x32, 0xcc, 0x32, 0x11, 0x3a,
    0x1e, 0x3a, 0x2e, 0x3a, 0x4c, 0x30, 0x1e, 0x30,
    0x11, 0x38, 0x1e, 0x27, 0x9a, 0x01, 0x9d, 0xa2,
    0x2f, 0x28, 0x00, 0x00, 0x46, 0xde, 0xc4, 0xbf,
    0xa6, 0x9d, 0x81, 0x7b, 0x5c, 0x61, 0x40, 0xc7,
    0xc0, 0xae, 0xa9, 0x8c, 0x83, 0x6a, 0x62, 0x50,
    0x3e, 0xce, 0xc2, 0xae, 0xa3, 0x8c, 0x7b, 0x6a,
    0x5a, 0x50, 0x35, 0xd7, 0xc2, 0xb7, 0xa4, 0x95,
    0x7e, 0x72, 0x5a, 0x59, 0x37, 0xfe, 0x02, 0xf8,
    0x8c, 0x95, 0x90, 0x8f, 0x00, 0xd7, 0xc0, 0xb7,
    0xa2, 0x95, 0x7b, 0x72, 0x56, 0x59, 0x32, 0xc7,
    0xc3, 0xae, 0xad, 0x8c, 0x85, 0x6a, 0x63, 0x50,
    0x3e, 0xce, 0xc3, 0xae, 0xa4, 0x8c, 0x7c, 0x6a,
    0x59, 0x50, 0x34, 0xd7, 0xc2, 0xb7, 0xa5, 0x95,
    0x7e, 0x72, 0x59, 0x59, 0x36, 0xfc, 0x05, 0x00,
    0x02, 0xce, 0xc5, 0xae, 0xa5, 0x95, 0x83, 0x72,
    0x5c, 0x59, 0x36, 0xbf, 0xc6, 0xa5, 0xab, 0x8c,
    0x8c, 0x6a, 0x67, 0x50, 0x41, 0x64, 0x07, 0x00,
    0x02, 0x95, 0x8c, 0x72, 0x65, 0x59, 0x3f, 0xce,
    0xc7, 0xae, 0xa8, 0x95, 0x86, 0x72, 0x5f, 0x59,
    0x39, 0xfe, 0x02, 0xf8, 0x8b, 0x7c, 0x0b, 0x09,
    0xb7, 0xc2, 0x9d, 0xa4, 0x83, 0x85, 0x6a, 0x6b,
    0x50, 0x44, 0xb7, 0xc1, 0x64, 0x01, 0x00, 0x06,
    0x61, 0x5d, 0x48, 0x3d, 0xae, 0xc4, 0x9d, 0xad,
    0x7b, 0x85, 0x61, 0x66, 0x48, 0x46, 0xae, 0xc3,
    0x95, 0xa3, 0x72, 0x7c, 0x59, 0x56, 0x38, 0x31,
    0x7c, 0x0b, 0x00, 0x0c, 0x96, 0x91, 0x8f, 0x00,
    0xb7, 0xc0, 0xa5, 0xab, 0x8c, 0x8a, 0x6a, 0x64,
    0x50, 0x3c, 0xb7, 0xc0, 0x9d, 0xa0, 0x83, 0x80,
    0x6a, 0x64, 0x50, 0x3d, 0xb7, 0xc5, 0x9d, 0xa5,
    0x83, 0x87, 0x6c, 0x08, 0x07, 0xae, 0xc0, 0x9d,
    0xa8, 0x83, 0x88, 0x6a, 0x6d, 0x50, 0x46, 0xfc,
    0x05, 0x00, 0x16, 0xbf, 0xc0, 0xa5, 0xa2, 0x8c,
    0x7f, 0x6a, 0x57, 0x50, 0x2f, 0xb7, 0xc7, 0xa5,
    0xb1, 0x8c, 0x8e, 0x72, 0x6d, 0x59, 0x45, 0xbf,
    0xc6, 0xa5, 0xa8, 0x8c, 0x87, 0x6a, 0x5f, 0x50,
    0x37, 0xbf, 0xc2, 0xa5, 0xa4, 0x8c, 0x83, 0x6a,
    0x5c, 0x50, 0x34, 0xbc, 0x05, 0x00, 0x0e, 0x90,
    0x00, 0xc7, 0xc2, 0xae, 0xaa, 0x95, 0x82, 0x7b,
    0x60, 0x61, 0x3f, 0xb7, 0xc6, 0xa5, 0xb1, 0x8c,
    0x8d, 0x72, 0x6b, 0x61, 0x51, 0xbf, 0xc4, 0xa5,
    0xa5, 0x8c, 0x82, 0x72, 0x61, 0x59, 0x39, 0x6c,
    0x26, 0x03, 0x95, 0x82, 0x7b, 0x61, 0x61, 0x40,
    0xfc, 0x05, 0x00, 0x00, 0x7e, 0xd7, 0xc3, 0xb7,
    0xa8, 0x9d, 0x80, 0x83, 0x5d, 0x6a, 0x3f, 0xbf,
    0xc7, 0xa5, 0xa8, 0x8c, 0x84, 0x72, 0x60, 0x61,
    0x46, 0xbf, 0xc2, 0xae, 0xb0, 0x9d, 0x92, 0x83,
    0x6f, 0x6a, 0x50, 0xd7, 0xc3, 0xb7, 0xa7, 0x9d,
    0x80, 0x83, 0x5e, 0x6a, 0x40, 0xfe, 0x02, 0xf8,
    0x8d, 0x96, 0x90, 0x90, 0xfe, 0x05, 0x00, 0x8a,
    0xc4, 0x63, 0xb8, 0x3c, 0xa6, 0x29, 0x97, 0x16,
    0x81, 0x84, 0xb7, 0x5b, 0xa9, 0x33, 0x94, 0x1e,
    0x83, 0x11, 0x70, 0xb8, 0xc2, 0x70, 0xb1, 0x4d,
    0xa3, 0x2a, 0x8d, 0x1b, 0x7b, 0xa8, 0xbc, 0x68,
    0xab, 0x47, 0x9d, 0x27, 0x87, 0x18, 0x75, 0xae,
    0xc6, 0x7d, 0xbb, 0x4d, 0xaa, 0x1c, 0x84, 0x11,
    0x72, 0xa3, 0xbb, 0x6e, 0xad, 0x3c, 0x97, 0x24,
    0x85, 0x16, 0x71, 0x80, 0xb2, 0x57, 0xa4, 0x30,
    0x8e, 0x1c, 0x7c, 0x10, 0x68, 0xbb, 0xbd, 0x75,
    0xac, 0x4f, 0x9e, 0x2b, 0x87, 0x1a, 0x76, 0x96,
    0xc5, 0x5e, 0xb5, 0x3e, 0xa5, 0x1f, 0x8c, 0x12,
    0x7a, 0xc1, 0xc6, 0x42, 0x9f, 0x27, 0x8c, 0x16,
    0x77, 0x0f, 0x67, 0x9d, 0xbc, 0x68, 0xad, 0x36,
    0x95, 0x20, 0x83, 0x11, 0x6d, 0x9b, 0xb8, 0x67,
    0xa8, 0x34, 0x90, 0x1f, 0x7c, 0x10, 0x67, 0x9e,
    0xc9, 0x6a, 0xbb, 0x37, 0xa4, 0x20, 0x90, 0x11,
    0x7b, 0xc6, 0xc8, 0x47, 0xa4, 0x2a, 0x90, 0x18,
    0x7b, 0x10, 0x6c, 0xae, 0xc4, 0x5d, 0xad, 0x37,
    0x9a, 0x1f, 0x85, 0x13, 0x75, 0x70, 0xad, 0x42,
    0x99, 0x25, 0x84, 0x17, 0x74, 0x0b, 0x56, 0x87,
    0xc8, 0x57, 0xb8, 0x2b, 0x9e, 0x19, 0x8a, 0x0d,
    0x74, 0xa7, 0xc8, 0x6e, 0xb9, 0x36, 0xa0, 0x1f,
    0x8b, 0x11, 0x75, 0x94, 0xbe, 0x4b, 0xa5, 0x2a,
    0x92, 0x18, 0x7c, 0x0f, 0x6b, 0xaf, 0xc0, 0x58,
    0xa8, 0x34, 0x94, 0x1d, 0x7d, 0x12, 0x6d, 0x82,
    0xc0, 0x52, 0xb0, 0x25, 0x94, 0x14, 0x7f, 0x0c,
    0x68, 0x84, 0xbf, 0x3e, 0xa4, 0x22, 0x8e, 0x10,
    0x76, 0x0b, 0x65, 0x88, 0xb6, 0x42, 0x9b, 0x26,
    0x87, 0x14, 0x70, 0x0c, 0x5f, 0xc5, 0xc2, 0x3e,
    0x97, 0x23, 0x83, 0x13, 0x6c, 0x0c, 0x5c, 0xb1,
    0xc9, 0x76, 0xbc, 0x4a, 0xaa, 0x20, 0x8d, 0x12,
    0x78, 0x93, 0xbf, 0x46, 0xa3, 0x26, 0x8d, 0x14,
    0x74, 0x0c, 0x62, 0xc8, 0xc4, 0x3b, 0x97, 0x21,
    0x82, 0x11, 0x6a, 0x0a, 0x59, 0xa3, 0xb9, 0x68,
    0xa9, 0x30, 0x8d, 0x1a, 0x78, 0x0f, 0x61, 0xa0,
    0xc9, 0x73, 0xbe, 0x50, 0xb1, 0x30, 0x9f, 0x14,
    0x80, 0x83, 0xb7, 0x3c, 0x9a, 0x20, 0x84, 0x0e,
    0x6a, 0x0a, 0x57, 0xac, 0xc2, 0x68, 0xb0, 0x2e,
    0x92, 0x19, 0x7c, 0x0d, 0x63, 0x93, 0xbe, 0x62,
    0xb0, 0x3c, 0x9e, 0x1a, 0x80, 0x0e, 0x6b, 0xbb,
    0x02, 0xa0, 0x02, 0xa0, 0x02, 0x6f, 0x00, 0x75,
    0x00, 0x75, 0x00, 0x00, 0x00, 0xad, 0x02, 0xb3,
    0x02, 0x6f, 0x00, 0x87, 0x00, 0x85, 0xfe, 0x03,
    0x00, 0xc2, 0x02, 0x82, 0x4d, 0x92, 0x6e, 0x4d,
    0xb1, 0xa8, 0x84, 0x01, 0x00, 0x07, 0x7e, 0x00,
    0xa8, 0x02, 0xa4, 0x02, 0xa4, 0x02, 0xa2, 0x00,
    0xa6, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xb4, 0x02,
    0xb4, 0x02, 0x92, 0x00, 0x96, 0x00, 0x96, 0x46,
    0x04, 0xb0, 0x02, 0x64, 0x02, 0x0a, 0x8c, 0x00,
    0x90, 0x02, 0x98, 0x02, 0x98, 0x02, 0x0e, 0x01,
    0x11, 0x01, 0x11, 0x50, 0xc3, 0x08, 0x88, 0x02,
    0x88, 0x02, 0x19, 0x01, 0x02, 0x01, 0x02, 0x01,
    0xf3, 0x2d, 0x00, 0x00
};

uint8_t	*rb_hardconfig;
long    rb_hardconfig_len;

static inline uint32_t get_u32(const void *buf);

int routerboot_find_tag(uint8_t *buf, unsigned int buflen, uint16_t tag_id,
			uint8_t **tag_data, uint16_t *tag_len);

static inline int
rb_find_hard_cfg_tag(uint16_t tag_id, uint8_t **tag_data, uint16_t *tag_len);

const uint8_t * rb_get_board_product_code(void);

uint32_t rb_get_board_mac(void);

const uint8_t * rb_get_board_serial(void);

const uint8_t * rb_get_board_identifier(void);

const uint8_t * rb_get_board_name(void);

const uint8_t * rb_get_factory_booter_version(void);

uint32_t rb_get_flash_info(void);

uint32_t rb_get_hw_options(void);

int routerboot_find_magic(uint8_t *buf, unsigned int buflen, uint32_t *offset, bool hard);

uint8_t * __rb_get_wlan_data(void);

/*
 * Magic numbers
 */
#define RB_ART_SIZE 	0x10000
#define RB_MAGIC_HARD	0x64726148 /* "Hard" */
#define RB_MAGIC_SOFT	0x74666F53 /* "Soft" */
#define RB_MAGIC_ERD	0x00455244	/* extended radio data */
#define RB_MAGIC_LZOR	0x524F5A4C

#define RB_ID_TERMINATOR	0

/*
 * ID values for Hardware settings
 */
#define RB_ID_HARD_01		1
#define RB_ID_HARD_02		2
#define RB_ID_FLASH_INFO	3
#define RB_ID_MAC_ADDRESS_PACK	4
#define RB_ID_BOARD_PRODUCT_CODE	5
#define RB_ID_BIOS_VERSION	6
#define RB_ID_HARD_07		7
#define RB_ID_SDRAM_TIMINGS	8
#define RB_ID_DEVICE_TIMINGS	9
#define RB_ID_SOFTWARE_ID	10
#define RB_ID_SERIAL_NUMBER	11
#define RB_ID_HARD_12		12
#define RB_ID_MEMORY_SIZE	13
#define RB_ID_MAC_ADDRESS_COUNT	14
#define RB_ID_HW_OPTIONS	21
#define RB_ID_WLAN_DATA		22
#define RB_ID_BOARD_IDENTIFIER	23
#define RB_ID_BOARD_NAME	33

#endif /* _RBEXTRACT_H */