#include <string.h> #include <stdio.h> #include <stdarg.h> #include <stdlib.h> //#include "calcimei.h" #define OUT_FILE "MP0B_001_NEW" int main(int argc, char *argv[]) { char *str = "357369035621901"; FILE* output; char inp_imei[15]; char out_imei[12] = {0}; int i, ret; char *mode; { return 1; } for (i=1; i < argc; i++) { ret = calc_imei(&inp_imei, &out_imei); if ( ret ) { return 1; } mode="w"; if (i==2) { mode="a"; } } return 0; } int calc_imei(char inp_imei[15], char out_imei[12]) { char out_mask[12] = {0xAB, 0xA0, 0x6F, 0x2F, 0x1F, 0x1E, 0x9A, 0x45, 0x0, 0x0, 0x0, 0x0}; int i=0, j=0; for (i=0, j=0; i < 15; i++, j++) { if (inp_imei[i] < '0' || inp_imei[i] > '9') { return 1; } out_imei[j] = (inp_imei[i] - '0'); if (i >= 14) break; if (inp_imei[i+1] < '0' || inp_imei[i+1] > '9') { return 1; } out_imei[j] += ((inp_imei[i+1] - '0') << 4); out_imei[j] = out_imei[j] ^ out_mask[j]; i++; } out_imei[j] = out_imei[j] ^ out_mask[j]; out_imei[8] = 0x57; //Может быть и 0x0, ни на что не влияет out_imei[9] = 0xDB; //Может быть и 0x0, ни на что не влияет out_imei[10] = out_imei[11] = 0; for (i = 0; i < 10; i++) { if (i & 0x1) { out_imei[11] += out_imei[i]; } else { out_imei[10] += out_imei[i]; } } return 0; }