Crypteur d'IP qui ne marche pas ...

Résolu
tom le magicien Messages postés 9 Date d'inscription samedi 10 décembre 2005 Statut Membre Dernière intervention 3 avril 2006 - 10 déc. 2005 à 19:27
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 10 déc. 2005 à 23:01
salut !

voila je me suis mis au C vendredi, et j'ai créer quelques petits trucs a mon niveau
( calculatrice qui ne fait que additionner ... ) toujour dans la console
j'ai décider d'essayer de fair un petit programme (dans la console ) qui donne l' IP que l'on marque crypté .

voici le fonctionnement

on va prendre comme exemple : 152.156.231.213
Sois en système décimal :
152 *2563 = 2550136832
156 *2562 = 10223616
231 *2561 = 59136
213 *1 = 213

Si on additionne tous sa donc 2550136832+10223616+59136+213 = 2560419797

j'ai donc essayer de fair ca dans un programme mais cela ne marche pas !!
je vous donne la source :

<quote>

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
unsigned long partie1 0, partie2 0, partie3 = 0, partie4 = 0;
printf("ce petit programme vas vous servir a crypter votre IP \n si vous avec besoin d'utiliser des liens ou apparait votre IP \n il vous sufira de la crypter \n et votre victime ne se doutera de rien ... \n\n\n");
printf("votre IP est constitue de 4 parties :\n111.222.333.444\n\nvous allez marquer ces parties quand je vous le demanderai\n\n");
printf("marquez si dessous la premiere partie (111) :\n"); 152.156.231.213
scanf("%d", &partie1);
printf("maintenant, marquer la partie 2 (222) :\n");
scanf("%d", &partie2);
printf("Puis marquez la partie 3 (333) :\n");
scanf("%d", &partie3);
printf("Et enfin la partie 4 (444) :\n");
scanf("%d", &partie4);
printf("\nvotre ip est donc %d.%d.%d.%d \n\n", partie1, partie2, partie3, partie4);
printf("votre IP crypte est %d%d%d%d \n", partie1 * 16777216 + partie2 * 65536 + partie3 * 256 + partie4);
system("PAUSE");
return 0;
}

</quote>

Tom le magicien

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2005 à 22:35
En multipliant 16777216 par un nombre, tu risque de dépasser 2^31, donc utilise des nombre non signés (unsigned int). Donc, remplace %d par %u dans le printf
Mais ce n'est pas un cryptage finalement. De plus la multiplication par 16777216, 65536 ou 256 (en fait tout nombre de la forme 2^n) revient à un décalge à gauche
3
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
10 déc. 2005 à 22:38
Bonsoir,

printf("votre IP crypte est %lu \n", partie1 * 16777216 + partie2 * 65536 + partie3 * 256 + partie4);

%lu => long non signé
%ld => long signé
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2005 à 20:42
Quand tu affiche l'IP cryptée, il ne faut qu'un %d, car il n'y a qu'un entier à afficher
0
tom le magicien Messages postés 9 Date d'inscription samedi 10 décembre 2005 Statut Membre Dernière intervention 3 avril 2006
10 déc. 2005 à 21:17
merci d'avoir remarquer ca je ne l'avai pas vu ;-) mais ca ne change pas ... ca ne marche toujour pas :-s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2005 à 21:29
Qu'est ce que ne marche pas?
0
tom le magicien Messages postés 9 Date d'inscription samedi 10 décembre 2005 Statut Membre Dernière intervention 3 avril 2006
10 déc. 2005 à 22:20
a mon avis c'est cette partie la :

printf("votre IP crypte est %d \n", partie1 * 16777216 + partie2 * 65536 + partie3 * 256 + partie4);

car ca me donne toujour un nombre qui n'a rien avoir avec les calculs qui sont éfféctués ...
peut etre que ce b'est pas comme ca que je dois les marquer ... je ne sais pas ..
0
tom le magicien Messages postés 9 Date d'inscription samedi 10 décembre 2005 Statut Membre Dernière intervention 3 avril 2006
10 déc. 2005 à 22:44
Genial merci beaucoup ca marche !!

voici le nouveau code source :

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{unsigned int partie1 0, partie2 0, partie3 = 0, partie4 = 0;
printf("ce petit programme vas vous servir a crypter votre IP \n si vous avec besoin d'utiliser des liens ou apparait votre IP \n il vous sufira de la crypter \n\n\n\n");
printf("votre IP est constitue de 4 parties :\n111.222.333.444\n\nvous allez marquer ces parties quand je vous le demanderai\n\n");
printf("marquez si dessous la premiere partie (111) puis appuyez sur entree :\n");
scanf("%u", &partie1);
printf("maintenant, marquer la partie 2 (222) puis appuyez sur entree :\n");
scanf("%u", &partie2);
printf("Puis marquez la partie 3 (333) et appuyez sur entree :\n");
scanf("%u", &partie3);
printf("Et enfin la partie 4 (444) puis appuyez sur entree :\n");
scanf("%d", &partie4);
printf("\nvotre ip est donc %u.%u.%u.%u \n\n\a", partie1, partie2, partie3, partie4);
printf("votre IP crypte est %u \n", partie1 * 16777216 + partie2 * 65536 + partie3 * 256 + partie4);
system("PAUSE");
return 0;
}

Encors merci

par contre je n'ai pas trop compris le dernier message de juki_webmaster ... meme si ca marche j'aimerai bien comprendre ca pourai m'aider pour la suite ... voila encors une foi merci

Tom le magicien
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2005 à 23:01
C'est pour le formatages des long dans printf. Mais avec dest int, %u suffira, comme tu as pu le voir
0
Rejoignez-nous