39 lines
848 B
C
39 lines
848 B
C
|
#include <stdio.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <stdint.h>
|
||
|
#include <unistd.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
int main(int argc, char **argv) {
|
||
|
if(argc!=3) {
|
||
|
fprintf(stderr, "Usage: %s <bootimg> <android|spl>\n", argv[0]);
|
||
|
exit(-1);
|
||
|
}
|
||
|
int fd = open(argv[1], O_RDONLY);
|
||
|
lseek(fd, 11*4, SEEK_SET);
|
||
|
uint32_t val = 0;
|
||
|
read(fd, &val, sizeof(val));
|
||
|
int android = val >> 11;
|
||
|
int a = android >> 14;
|
||
|
int b = (android >> 7) & 0x7f;
|
||
|
int c = android & 0x7f;
|
||
|
|
||
|
int spl = val & 0x7ff;
|
||
|
int y = 2000 + (spl >> 4);
|
||
|
int m = spl & 0xf;
|
||
|
|
||
|
fprintf(stderr, "Android: %d.%d.%d\n", a, b, c);
|
||
|
fprintf(stderr, "SPL: %d-%d-01\n", y, m);
|
||
|
|
||
|
if(strcmp(argv[2], "android") == 0) {
|
||
|
printf("%d.%d.%d", a, b, c);
|
||
|
} else if(strcmp(argv[2], "spl") == 0) {
|
||
|
printf("%04d-%02d-%02d", y, m, 1);
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|