17
17
18
18
#define BUFSIZE 65532
19
19
20
- #if defined(__mips__ )
21
- static int iscr660x = 1 ;
22
- #else
23
- static int iscr660x = 0 ;
24
- #endif
20
+ static int modelid = 0 ;
25
21
26
22
struct model_s {
23
+ int modelid ;
27
24
char * pid ;
28
25
char * model ;
29
26
};
30
27
31
28
static const struct model_s model_list [] = {
32
- #if defined(__mips__ )
33
- { "CR6606" , "CR6606" },//xiaomi
34
- { "CR6608" , "CR6608" },//xiaomi
35
- { "CR6609" , "CR6609" },//xiaomi
36
- #else
37
- { "RA67" , "AX5" },//redmi
38
- { "RA69" , "AX6" },//redmi
39
- { "RA70" , "AX9000" },//xiaomi
40
- { "RA72" , "AX6000" },//xiaomi
41
- { "RA80" , "AX3000" },//xiaomi
42
- { "RA81" , "AX3000" },//redmi
43
- { "RM1800" , "AX1800" },//xiaomi
44
- { "R1800" , "AX1800" },//xiaomi
45
- { "R3600" , "AX3600" },//xiaomi
46
- #endif
47
- { NULL , NULL },
29
+ { 1 , "CR6606" , "CR6606" },//xiaomi
30
+ { 2 , "CR6608" , "CR6608" },//xiaomi
31
+ { 3 , "CR6609" , "CR6609" },//xiaomi
32
+ { 4 , "RA67" , "AX5" },//redmi
33
+ { 5 , "RA69" , "AX6" },//redmi
34
+ { 6 , "RA70" , "AX9000" },//xiaomi
35
+ { 7 , "RA72" , "AX6000" },//xiaomi
36
+ { 8 , "RA80" , "AX3000" },//xiaomi
37
+ { 9 , "RA81" , "AX3000" },//redmi
38
+ { 10 , "RM1800" , "AX1800" },//xiaomi
39
+ { 11 , "R1800" , "AX1800" },//xiaomi
40
+ { 12 , "R3600" , "AX3600" },//xiaomi
41
+ { 13 , "RB06" , "AX6000" },//redmi
42
+ { -1 , NULL , NULL },
48
43
};
49
44
50
45
typedef struct
@@ -246,26 +241,6 @@ void MD5Final(MD5_CTX *context,unsigned char digest[16])
246
241
MD5Encode (digest ,context -> state ,16 );
247
242
}
248
243
249
- static void usage (void )
250
- {
251
- fprintf (
stderr ,
"Copyright (c) 2020-2021, paldier<[email protected] >.\n" );
252
- fprintf (stderr , "Usage: mitool\n" );
253
- fprintf (stderr , "mitool lock\n" );
254
- fprintf (stderr , "\tlock %s and auto reboot\n" , iscr660x ? "mtd2" : "mtd9" );
255
- fprintf (stderr , "mitool unlock\n" );
256
- fprintf (stderr , "\tunlock %s and auto reboot\n" , iscr660x ? "mtd2" : "mtd9" );
257
- fprintf (stderr , "mitool password\n" );
258
- fprintf (stderr , "\tprintf default password\n" );
259
- fprintf (stderr , "mitool hack\n" );
260
- fprintf (stderr , "\tset ssh telnet uart to default enable\n" );
261
- fprintf (stderr , "mitool model\n" );
262
- fprintf (stderr , "\tshow model\n" );
263
- fprintf (stderr , "mitool sn\n" );
264
- fprintf (stderr , "\tshow sn\n" );
265
- fprintf (stderr , "mitool setsn xxxxxxxx\n" );
266
- fprintf (stderr , "\tset sn\n" );
267
- }
268
-
269
244
static const unsigned int crc32tab [] = {
270
245
0x00000000L , 0x77073096L , 0xee0e612cL , 0x990951baL ,
271
246
0x076dc419L , 0x706af48fL , 0xe963a535L , 0x9e6495a3L ,
@@ -418,21 +393,10 @@ static int load_buf(void)
418
393
FILE * fd ;
419
394
int bdata ;
420
395
char path [11 ];
421
- char * mtdname = NULL ;
422
- if (iscr660x )
423
- mtdname = "Bdata" ;
424
- else
425
- mtdname = "bdata" ;
426
- bdata = find_mtd (mtdname );
427
- #if defined(__mips__ )
428
- if (bdata != 2 ){
429
- #else
430
- if (bdata != 9 && bdata != 15 && bdata != 18 ){
431
- #endif
432
- //if((iscr660x && bdata != 2) || (!iscr660x && bdata != 9 && bdata != 15 && bdata != 18)){
433
- printf ("Unsupport model!\n" );
434
- return -1 ;
435
- }
396
+ bdata = find_mtd ("Bdata" );
397
+ if (bdata == -1 )
398
+ bdata = find_mtd ("bdata" );
399
+
436
400
memset (path , 0 , sizeof (path ));
437
401
snprintf (path , sizeof (path ), "/dev/mtd%d" , bdata );
438
402
fd = fopen (path , "rb" );
@@ -451,23 +415,13 @@ static int lock_mtd(int t)
451
415
unsigned char temp [4 ];
452
416
char path [11 ];
453
417
char path2 [16 ];
454
- char * mtdname = NULL ;
455
418
int bdata ;
456
419
int crash = find_mtd ("crash" );
457
- if (iscr660x )
458
- mtdname = "Bdata" ;
459
- else
460
- mtdname = "bdata" ;
461
- bdata = find_mtd (mtdname );
462
- #if defined(__mips__ )
463
- if (bdata != 2 ){
464
- #else
465
- if (bdata != 9 && bdata != 15 && bdata != 18 ){
466
- #endif
467
- //if((iscr660x && bdata != 2) || (!iscr660x && bdata != 9 && bdata != 15 && bdata != 18)){
468
- printf ("Unsupport model!\n" );
469
- return -1 ;
470
- }
420
+
421
+ bdata = find_mtd ("Bdata" );
422
+ if (bdata == -1 )
423
+ bdata = find_mtd ("bdata" );
424
+
471
425
memset (path , 0 , sizeof (path ));
472
426
memset (path2 , 0 , sizeof (path2 ));
473
427
snprintf (path , sizeof (path ), "/dev/mtd%d" , crash );
@@ -547,6 +501,20 @@ char *get_model(char *pid)
547
501
return model ;
548
502
}
549
503
504
+ int get_modelid (char * pid )
505
+ {
506
+ int id ;
507
+ const struct model_s * p ;
508
+
509
+ for (p = & model_list [0 ]; p -> pid ; ++ p ) {
510
+ if (!strcmp (pid , p -> pid )) {
511
+ id = p -> modelid ;
512
+ break ;
513
+ }
514
+ }
515
+ return id ;
516
+ }
517
+
550
518
static int model_show (void )
551
519
{
552
520
int i ;
@@ -557,6 +525,43 @@ static int model_show(void)
557
525
printf ("model=%s\n" , get_model (& buf [i + 6 ]));
558
526
}
559
527
528
+ static char * show_lockmtd ()
529
+ {
530
+ int i ;
531
+ if (modelid == 0 ){
532
+ if (load_buf ()< 0 )
533
+ return "unknown" ;
534
+ i = GetSubStrPos (buf , "model" );
535
+ modelid = get_modelid (& buf [i + 6 ]);
536
+ }
537
+ if (modelid == 1 || modelid == 2 || modelid == 3 )
538
+ return "mtd2" ;
539
+ else if (modelid == 13 )
540
+ return "mtd6" ;
541
+ else
542
+ return "mtd6" ;
543
+ }
544
+
545
+ static void usage (void )
546
+ {
547
+ fprintf (
stderr ,
"Copyright (c) 2020-2022, paldier<[email protected] >.\n" );
548
+ fprintf (stderr , "Usage: mitool\n" );
549
+ fprintf (stderr , "mitool lock\n" );
550
+ fprintf (stderr , "\tlock %s and auto reboot\n" , show_lockmtd );
551
+ fprintf (stderr , "mitool unlock\n" );
552
+ fprintf (stderr , "\tunlock %s and auto reboot\n" , show_lockmtd );
553
+ fprintf (stderr , "mitool password\n" );
554
+ fprintf (stderr , "\tprintf default password\n" );
555
+ fprintf (stderr , "mitool hack\n" );
556
+ fprintf (stderr , "\tset ssh telnet uart to default enable\n" );
557
+ fprintf (stderr , "mitool model\n" );
558
+ fprintf (stderr , "\tshow model\n" );
559
+ fprintf (stderr , "mitool sn\n" );
560
+ fprintf (stderr , "\tshow sn\n" );
561
+ fprintf (stderr , "mitool setsn xxxxxxxx\n" );
562
+ fprintf (stderr , "\tset sn\n" );
563
+ }
564
+
560
565
static int password_show (void )
561
566
{
562
567
int i ,j ;
@@ -588,12 +593,10 @@ static int calc_img_crc()
588
593
FILE * fd ;
589
594
int bdata ;
590
595
char path [16 ];
591
- char * mtdname = NULL ;
592
- if (iscr660x )
593
- mtdname = "Bdata" ;
594
- else
595
- mtdname = "bdata" ;
596
- bdata = find_mtd (mtdname );
596
+
597
+ bdata = find_mtd ("Bdata" );
598
+ if (bdata == -1 )
599
+ bdata = find_mtd ("bdata" );
597
600
598
601
memset (path , 0 , sizeof (path ));
599
602
snprintf (path , sizeof (path ), "/dev/mtdblock%d" , bdata );
@@ -746,7 +749,7 @@ int main(int argc, char **argv)
746
749
exit (1 );
747
750
}
748
751
password_show ();
749
- printf ("set ssh_en=1 telnet_en=1 uart_en=1\nNOTE!!! ssh default /telnet usesrname:root password:%s\n" ,password );
752
+ printf ("set ssh_en=1 telnet_en=1 uart_en=1\nNOTE!!! ssh/telnet default usesrname:root\ndefault password:%s\n" ,password );
750
753
printf ("automatic lock mtd and reboot\n" );
751
754
lock_mtd (1 );
752
755
} else if (!strcmp (argv [1 ], "lock" ))
0 commit comments