summaryrefslogtreecommitdiffstats
path: root/tools/irecovery.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/irecovery.c')
-rw-r--r--tools/irecovery.c46
1 files changed, 28 insertions, 18 deletions
diff --git a/tools/irecovery.c b/tools/irecovery.c
index bb6afea..950379a 100644
--- a/tools/irecovery.c
+++ b/tools/irecovery.c
@@ -64,6 +64,26 @@ static void shell_usage() {
64 printf("\t/exit\t\tExit interactive shell.\n"); 64 printf("\t/exit\t\tExit interactive shell.\n");
65} 65}
66 66
67static const char* mode_to_str(int mode) {
68 switch (mode) {
69 case IRECV_K_RECOVERY_MODE_1:
70 case IRECV_K_RECOVERY_MODE_2:
71 case IRECV_K_RECOVERY_MODE_3:
72 case IRECV_K_RECOVERY_MODE_4:
73 return "Recovery";
74 break;
75 case IRECV_K_DFU_MODE:
76 return "DFU";
77 break;
78 case IRECV_K_WTF_MODE:
79 return "WTF";
80 break;
81 default:
82 return "Unknown";
83 break;
84 }
85}
86
67static void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length) { 87static void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length) {
68 FILE *f; 88 FILE *f;
69 uint64_t size; 89 uint64_t size;
@@ -106,7 +126,7 @@ static void parse_command(irecv_client_t client, unsigned char* command, unsigne
106 irecv_send_file(client, filename, 0); 126 irecv_send_file(client, filename, 0);
107 } 127 }
108 } else if (!strcmp(cmd, "/deviceinfo")) { 128 } else if (!strcmp(cmd, "/deviceinfo")) {
109 int ret; 129 int ret, mode;
110 unsigned int cpid, bdid; 130 unsigned int cpid, bdid;
111 unsigned long long ecid; 131 unsigned long long ecid;
112 char srnm[12], imei[15]; 132 char srnm[12], imei[15];
@@ -135,6 +155,12 @@ static void parse_command(irecv_client_t client, unsigned char* command, unsigne
135 if(ret == IRECV_E_SUCCESS) { 155 if(ret == IRECV_E_SUCCESS) {
136 printf("IMEI: %s\n", imei); 156 printf("IMEI: %s\n", imei);
137 } 157 }
158
159 ret = irecv_get_mode(client, &mode);
160 if (ret == IRECV_E_SUCCESS) {
161 printf("MODE: %s\n", mode_to_str(mode));
162 }
163
138 } else if (!strcmp(cmd, "/exploit")) { 164 } else if (!strcmp(cmd, "/exploit")) {
139 char* filename = strtok(NULL, " "); 165 char* filename = strtok(NULL, " ");
140 debug("Sending exploit %s\n", filename); 166 debug("Sending exploit %s\n", filename);
@@ -471,23 +497,7 @@ int main(int argc, char* argv[]) {
471 497
472 case kShowMode: 498 case kShowMode:
473 irecv_get_mode(client, &mode); 499 irecv_get_mode(client, &mode);
474 switch (mode) { 500 printf("%s Mode\n", mode_to_str(mode));
475 case IRECV_K_RECOVERY_MODE_1:
476 case IRECV_K_RECOVERY_MODE_2:
477 case IRECV_K_RECOVERY_MODE_3:
478 case IRECV_K_RECOVERY_MODE_4:
479 printf("Recovery Mode\n");
480 break;
481 case IRECV_K_DFU_MODE:
482 printf("DFU Mode\n");
483 break;
484 case IRECV_K_WTF_MODE:
485 printf("WTF Mode\n");
486 break;
487 default:
488 printf("Unknown Mode\n");
489 break;
490 }
491 break; 501 break;
492 502
493 case kRebootToNormalMode: 503 case kRebootToNormalMode: