PDA

View Full Version : Quelqu'un peu me compiler ca ?


wuub
24 mars 2004, 06h05
J'ai trouvé le code source d'un generateur dont j'aurai besoin
et je me demandais si quelqu'un pouvais me le compiler en me l'envoyer à wuub@fr.st ?
Ca n'a rien d'illégale ... enfin je ne crois pas...
D'avance merci



/*
* sid.c
*/

unsigned char data_1[] =
{ 0x17,0x2D,0x25,0x29,0x17,0x2D,0x11,0x20,0x12,0x27,0x0E,0x23,0x1B,0x0B,0x27 };
unsigned char data_2[] = { 2,6,9,4,9 };
unsigned char data_3[5][15] = {
{ 0x17,0x2C,0x43,0x0E,0x22,0x13,0x43,0x4D,0x59,0x16,0x22,0x4E,0x37,0x58,0x5C },
{ 0x4B,0x2D,0x5A,0x12,0x24,0x43,0x35,0x4A,0x47,0x36,0x13,0x17,0x53,0x24,0x13 },
{ 0x22,0x47,0x1D,0x4E,0x62,0x22,0x41,0x17,0x26,0x30,0x2C,0x57,0x38,0x36,0x12 },
{ 0x42,0x2E,0x18,0x2D,0x4E,0x20,0x0E,0x23,0x4A,0x60,0x47,0x25,0x30,0x39,0x3F },
{ 0x21,0x24,0x19,0x13,0x1A,0x25,0x1F,0x36,0x4F,0x20,0x2E,0x43,0x36,0x21,0x15 }
};
unsigned char data_4[] = { 1, 5, 7, 6, 3 };

int security_code(char* imei, char* sec_code) {
int i,j;
unsigned char k;
char local_1[15];

if(strlen(imei) != 15)
return 0;
for(i = 0; i < 15; i++) {
local_1[i] = imei[i] - data_1[i];
}
for(i = 0; i < 5; i++) {
k = 0;
for(j = 0; j < 15; j++) {
k += (local_1[j] ^ local_1[(j + data_2[i]) % 15]) * data_3[i][j];
}
k = (k + data_4[i]) % 10;
sec_code[i] = k + 0x30;
}
return 1;
}

main(int argc, char** argv) {
char sec_code[6];

security_code(argv[1], sec_code);
sec_code[5] = 0;
printf("%s\n", sec_code);
}

Fred
24 mars 2004, 07h11
Tu peux utiliser un language interprété comme PHP ou Perl pour ne pas avoir à le compiler, c'est quand même plus pratique si tu veux changer le code et il n'y a vraiment pas grand chose à changer ;)

wuub
24 mars 2004, 09h03
J'aimerai bien... mais je ne sais pas le faire ... désolé !

Spycam
24 mars 2004, 13h58
J'ai essayé de compiler ton programme mais rien ne s'affiche sur l'invite de commande... C'est normal ?
De plus tu avais oublié çà : "#include <windows.h>
#include <stdio.h>
#include <string.h>"

Samva
24 mars 2004, 18h47
Voila une version un poil améliorée (juste le numéro IMEI qui ne se passe plus en argument sur la ligne de commande)
Le fichier compilé est disponible dans le zip attaché...


#include <stdio.h>
/*
* sid.c
*/

unsigned char data_1[] =
{ 0x17,0x2D,0x25,0x29,0x17,0x2D,0x11,0x20,0x12,0x27,0x0E,0x23,0x1B,0x0B,0x27 };
unsigned char data_2[] = { 2,6,9,4,9 };
unsigned char data_3[5][15] = {
{ 0x17,0x2C,0x43,0x0E,0x22,0x13,0x43,0x4D,0x59,0x16,0x22,0x4E,0x37,0x58,0x5C },
{ 0x4B,0x2D,0x5A,0x12,0x24,0x43,0x35,0x4A,0x47,0x36,0x13,0x17,0x53,0x24,0x13 },
{ 0x22,0x47,0x1D,0x4E,0x62,0x22,0x41,0x17,0x26,0x30,0x2C,0x57,0x38,0x36,0x12 },
{ 0x42,0x2E,0x18,0x2D,0x4E,0x20,0x0E,0x23,0x4A,0x60,0x47,0x25,0x30,0x39,0x3F },
{ 0x21,0x24,0x19,0x13,0x1A,0x25,0x1F,0x36,0x4F,0x20,0x2E,0x43,0x36,0x21,0x15 }
};
unsigned char data_4[] = { 1, 5, 7, 6, 3 };

int security_code(char* imei, char* sec_code) {
int i,j;
unsigned char k;
char local_1[15];

if(strlen(imei) != 15)
return 0;
for(i = 0; i < 15; i++) {
local_1[i] = imei[i] - data_1[i];
}
for(i = 0; i < 5; i++) {
k = 0;
for(j = 0; j < 15; j++) {
k += (local_1[j] ^ local_1[(j + data_2[i]) % 15]) * data_3[i][j];
}
k = (k + data_4[i]) % 10;
sec_code[i] = k + 0x30;
}
return 1;
}

main(int argc, char** argv) {
char sec_code[6];
char imei[16];

printf("Veuillez entrez le code IMEI (15 chiffres)\n");
fflush(stdin);
scanf("%s",imei);
security_code(imei, sec_code);
sec_code[5] = 0;
printf("%s\n", sec_code);
}



Note les librairies stdlib, stdio et windows ne sont pas du tout obligatoires pour compiler dans la version de base, par contre dans celle ci stdio est obligatoire pour utiliser le fflush();

Fred
24 mars 2004, 20h04
Le code pourrait être commenté :D

wuub
25 mars 2004, 01h54
Salut et merci à tous !
Comme vous le savez surement je n'ai aucune notion de developpement.
Quelques notions de PHP mais ca s'arrete là. La preuve je ne sais même pas compiler ! Je me concentre bien plus sur l'utilisation et notament la domotique !
En tout cas je vais essayer ca !
Merci encore pour votre temps !!!!!!

Samva
25 mars 2004, 10h28
Le code étant pas de moi, je vois pas trop comment le commenter, je vois bien l'algo, il est relativement simple en plus, et le peu que j'ai ajouté n'est pas d'une difficulté insurmontable meme pour un néophyte :).

wuub > Pour Compiler il te suffit de gcc par exemple, contenu dans Dev-C++ pour ne pas le citer :) et en ligne de commande, gcc IMEI.c -o IMEI.exe, rien de plus :)

Fred
25 mars 2004, 20h07
C'était pour plaisanter Samva ;)

Seulement, celui qui a écrit ce bout de code aurait pu décrire son but et son fonctionnement en entête ...

Samva
25 mars 2004, 20h16
Je me doute bien mossieur Bond :) et j'ai trouvé que l'algo pouvait etre interessant, c'est bete que les data qu'il déclare au début ne soient pas plus justifiées mais bon...

Interessant le bout de code... wuub > ca récupère quel code... le PUK?

wuub
26 mars 2004, 01h39
Non c'est pour recupérer le code de securité sur les nokia GT3 & 4 ...
J'ai pas encore eu le temps de le tester... ma copine demande mon attention ! :) alors....

Samva
27 mars 2004, 05h47
Ok ben dis si ca marche ca peut toujours étre utile :)

Sur ce je vais me coucher, la soirée de désintégration fut longue, fatiguante... et tout ce qui en dépend...