Crypteur d'IP qui ne marche pas ...

[Résolu]
Signaler
Messages postés
9
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
3 avril 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
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
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Bonsoir,

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

%lu => long non signé
%ld => long signé
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Quand tu affiche l'IP cryptée, il ne faut qu'un %d, car il n'y a qu'un entier à afficher
Messages postés
9
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
3 avril 2006

merci d'avoir remarquer ca je ne l'avai pas vu ;-) mais ca ne change pas ... ca ne marche toujour pas :-s
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Qu'est ce que ne marche pas?
Messages postés
9
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
3 avril 2006

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 ..
Messages postés
9
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
3 avril 2006

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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
C'est pour le formatages des long dans printf. Mais avec dest int, %u suffira, comme tu as pu le voir