begin process at 2012 02 05 05:15:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > CRIPTEUR DE FICHIER TEXTE QUI PROTEGE PAR MOT DE PASSE

CRIPTEUR DE FICHIER TEXTE QUI PROTEGE PAR MOT DE PASSE


 Information sur la source

Note :
Aucune note
Catégorie :Application Niveau :Initié Date de création :08/03/2005 Date de mise à jour :08/03/2005 17:24:42 Vu :7 102

Auteur : malkommalkom

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Voila c'est un cripteur de fichier texte protegé par mot de passe....
comme c'est une version "beta" elle est compliquer d'utilisation mais vous pouvez me demander comment sa marche, et indiquez moi si il y a des bugs...
Ce code a été  compiler avec devcpp 4

Source

  • #include <iostream.h>
  • #include <conio.c>
  • char marque[15]="CRIPTMALKOM\n";
  • void cript()
  • {
  • char File[101];
  • char FileCript[101];
  • char Ligne[100001];
  • char MDP[101];
  • int i;
  • FILE * file;
  • FILE * filecript;
  • cout<<"Nom du fichier a cripte : ";
  • gets(File);
  • file=fopen(File,"r");
  • if(file==NULL)
  • {
  • cout<<"Fichier inexistant.";
  • getchar();
  • return;
  • }
  • fclose(file);
  • cout<<"Mot de passe voulu : ";
  • gets(MDP);
  • cout<<"Nom du fichier cripte : ";
  • gets(FileCript);
  • strcat(FileCript,".criptmalkom");
  • cout<<"Nom doner au fichier quand il sera decripter : ";
  • gets(Ligne);
  • file=fopen(File,"r");
  • filecript=fopen(FileCript,"w");
  • fputs(marque,filecript);
  • fputs(Ligne,filecript);
  • fputs("\n",filecript);
  • i=0;
  • while(MDP[i]!='\0')
  • {
  • if(MDP[i]!='\n')
  • {
  • MDP[i]=MDP[i]+i;
  • }
  • i=i+1;
  • }
  • fputs(MDP,filecript);
  • fputs("\n",filecript);
  • while(fgets(Ligne,100001,file)!=NULL)
  • {
  • i=0;
  • while(Ligne[i]!='\0')
  • {
  • if(Ligne[i]!='\n')
  • {
  • Ligne[i]=Ligne[i]+i;
  • }
  • i=i+1;
  • }
  • fputs(Ligne,filecript);
  • }
  • fclose(file);
  • fclose(filecript);
  • cout<<"Fichier cripte avec succes.";
  • getchar();
  • }
  • void decript(char FileCript[101]="")
  • {
  • char File[101];
  • char Ligne[100001];
  • char MDP[101];
  • int i;
  • FILE * file;
  • FILE * filecript;
  • if((strcmp(FileCript,"")==0))
  • {
  • cout<<"Nom du fichier cripte : ";
  • gets(FileCript);
  • filecript=fopen(FileCript,"r");
  • if(filecript==NULL)
  • {
  • cout<<"Fichier inexistant.";
  • getchar();
  • return;
  • }
  • fclose(filecript);
  • }
  • cout<<"Mot de passe : ";
  • gets(MDP);
  • filecript=fopen(FileCript,"r");
  • fgets(Ligne,100001,filecript);
  • if((strcmp(Ligne,marque)!=0))
  • {
  • cout<<"Fichier non cripte ou cripte avec un autre cripteur.";
  • getchar();
  • return;
  • }
  • fgets(File,100001,filecript);
  • fgets(Ligne,100001,filecript);
  • i=0;
  • while(Ligne[i]!='\0')
  • {
  • if(Ligne[i]!='\n')
  • {
  • Ligne[i]=Ligne[i]-i;
  • }
  • i=i+1;
  • }
  • strcat(MDP,"\n");
  • if((strcmp(Ligne,MDP)!=0))
  • {
  • cout<<"Mauvais mot de passe.";
  • getchar();
  • return;
  • }
  • i=0;
  • while(i!=101)
  • {
  • if(File[i]=='\n')
  • {
  • File[i]='\0';
  • }
  • i=i+1;
  • }
  • file=fopen(File,"w");
  • while(fgets(Ligne,100001,filecript)!=NULL)
  • {
  • i=0;
  • while(Ligne[i]!='\0')
  • {
  • if(Ligne[i]!='\n')
  • {
  • Ligne[i]=Ligne[i]-i;
  • }
  • i=i+1;
  • }
  • fputs(Ligne,file);
  • }
  • fclose(file);
  • fclose(filecript);
  • cout<<"Fichier "<<File<<" decripte avec succes.";
  • getchar();
  • }
  • int main(int argc,char * argv[])
  • {
  • char menu[2];
  • if(argc==2)
  • {
  • decript(argv[1]);
  • }
  • else
  • {
  • cout<<"Criptage ou décriptage? c-d : ";
  • gets(menu);
  • if(menu[0]=='c')
  • {
  • cript();
  • }
  • if(menu[0]=='d')
  • {
  • decript();
  • }
  • }
  • }
#include <iostream.h>
#include <conio.c>

char marque[15]="CRIPTMALKOM\n";

void cript()
{
 char File[101];
 char FileCript[101];
 char Ligne[100001];
 char MDP[101];
 int i;
 FILE * file;
 FILE * filecript;

 cout<<"Nom du fichier a cripte : ";
 gets(File);

 file=fopen(File,"r");
 if(file==NULL)
 {
  cout<<"Fichier inexistant.";
  getchar();
  return;
 }
 fclose(file);

 cout<<"Mot de passe voulu : ";
 gets(MDP);

 cout<<"Nom du fichier cripte : ";
 gets(FileCript);
 strcat(FileCript,".criptmalkom");

 cout<<"Nom doner au fichier quand il sera decripter : ";
 gets(Ligne);

 file=fopen(File,"r");
 filecript=fopen(FileCript,"w");

 fputs(marque,filecript);
 fputs(Ligne,filecript);
 fputs("\n",filecript);

 i=0;
 while(MDP[i]!='\0')
 {
  if(MDP[i]!='\n')
  {
   MDP[i]=MDP[i]+i;
  }
  i=i+1;
 }
 fputs(MDP,filecript);
 fputs("\n",filecript);

 while(fgets(Ligne,100001,file)!=NULL)
 {
  i=0;
  while(Ligne[i]!='\0')
  {
   if(Ligne[i]!='\n')
   {
    Ligne[i]=Ligne[i]+i;
   }
   i=i+1;
  }
  fputs(Ligne,filecript);
 }
 fclose(file);
 fclose(filecript);

 cout<<"Fichier cripte avec succes.";
 getchar();
}

void decript(char FileCript[101]="")
{
 char File[101];
 char Ligne[100001];
 char MDP[101];
 int i;
 FILE * file;
 FILE * filecript;

 if((strcmp(FileCript,"")==0))
 {
  cout<<"Nom du fichier cripte : ";
  gets(FileCript);

  filecript=fopen(FileCript,"r");
  if(filecript==NULL)
  {
   cout<<"Fichier inexistant.";
   getchar();
   return;
  }
 fclose(filecript);
 }

 cout<<"Mot de passe : ";
 gets(MDP);


 filecript=fopen(FileCript,"r");

 fgets(Ligne,100001,filecript);

 if((strcmp(Ligne,marque)!=0))
 {
  cout<<"Fichier non cripte ou cripte avec un autre cripteur.";
  getchar();
  return;
 }

 fgets(File,100001,filecript);
 fgets(Ligne,100001,filecript);

 i=0;
 while(Ligne[i]!='\0')
 {
  if(Ligne[i]!='\n')
  {
   Ligne[i]=Ligne[i]-i;
  }
  i=i+1;
 }

 strcat(MDP,"\n");

 if((strcmp(Ligne,MDP)!=0))
 {
  cout<<"Mauvais mot de passe.";
  getchar();
  return;
 }

 i=0;
 while(i!=101)
 {
  if(File[i]=='\n')
  {
   File[i]='\0';
  }
  i=i+1;
 }

 file=fopen(File,"w");

 while(fgets(Ligne,100001,filecript)!=NULL)
 {
  i=0;
  while(Ligne[i]!='\0')
  {
   if(Ligne[i]!='\n')
   {
    Ligne[i]=Ligne[i]-i;
   }
   i=i+1;
  }
  fputs(Ligne,file);
 }
 fclose(file);
 fclose(filecript);

 cout<<"Fichier "<<File<<" decripte avec succes.";
 getchar();
}

int main(int argc,char * argv[])
{
 char menu[2];
 if(argc==2)
 {
  decript(argv[1]);
 }
 else
 {
  cout<<"Criptage ou décriptage? c-d : ";
  gets(menu);
  if(menu[0]=='c')
  {
   cript();
  }
  if(menu[0]=='d')
  {
   decript();
  }
 }
}

 Conclusion

Ben aucun bug connu.....
je vais creer un cripteur en mode win32 et j'ai un include avec des fonction pour cripter et decripter.... si sa vous interresse.


 Historique

08 mars 2005 17:24:42 :
juste un oublit...

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
Source avec Zip SCANNER LANGAGE par lajouad

Commentaires et avis

Commentaire de ymca2003 le 08/03/2005 18:05:29

Le prend pas mal mais ton cripteur ne sert à rien pour les raisons suivantes :
- tu stocke le mot de passe dans le fichier cripté.
- tu n'utilise pas le mot de passe pour cripter le fichier (peut importe le mot de passe que tu donne, le fichier cripté sera le même).

Non seulement le criptage est trop simple (addition d'un offset à chaque carcactères) mais en plus il n'y a pas besoin de connaître le mot de passe pour récupérer le fichier original (il suffit de modifier le code du prog et de virer le test de validité du mot de passe).

Ensuite niveau code :
- tu mélange le C et le C++ pour les E/S, fait un choix.
- tu inclus un .c dans un fichier source, pas bon comme technique.

Commentaire de malkommalkom le 08/03/2005 21:38:24

Je ne le prend pas mal, au contraire les critiques me permettent de corriger ma prog.
Justement ou je mélende le c et c++ dans mes E/S stp?

Commentaire de Kirua le 09/03/2005 07:49:18

Dis, pour ce qui est du cryptage, dis-toi bien ceci:

une méthode de cryptage ne commence à être valable que lorsque, même si l'on en publie l'algo, les fichiers cryptés avec ce dernier ne sont pas compromis.

Dans ton cas, avoir le programme = pouvoir tout "décrypter" (sauf que ce que tu fais ces, techniquement parlant, de l'encodage, puisque la clé n'intervient pas dans le processus).

Commentaire de TeLeTUbIz le 10/03/2005 22:54:59

Amusant comme prog. Bon c'est vrai qu'il y'a un peu de boulot, mais c'est intéressant. Faudrait au moins que le passe serve à quelque chose et qu'il soit pas stocké en clair dans le fichier (hash pour ceux qui connaissent).
Comme ca tu vérifie si le pass est bon et après tu décode le texte. Ca évite de décoder si le passe est pas correct.
En tout qu'à, l'orthografe c'et pas ton truk ;-)

Commentaire de Kirua le 10/03/2005 23:06:27

Ça sert à rien de faire une vérif du style: il a le bon passe, ok on lance le décodage (c'est pas du décryptage s'il y a pas de clef). Ce genre de programme se casse en qq minutes avec un désassembleur. Suffit de repérer la conditionnelle (if c'est le non passe) et de la sauter avec un jmp ou je sais pas tout quoi que les cracker utilisent en asm. Sécurité 0 ... puis comme je disais: si révéler l'algo = désécuriser les contenus, alors ça vaut pas tripette, dsl :/ une simple permutation d'alphabet fait déjà mieux.

Commentaire de BruNews le 11/03/2005 00:54:59 administrateur CS

malkommalkom > Kirua a dit ce qu'il y avait à dire donc je n'en rajouterai pas. Par contre on attend un peu plus intéressant pour la suite, je ne conserverai pas d'autres sources aussi "utiles" par la suite, on manque déjà de place sur le serveur.

Bonne continuation.

Commentaire de TeLeTUbIz le 11/03/2005 13:29:32

Non ce n'est pas vrai du tout.
Crypter un document en AES et joindre un hashage de la clé ne compromet en rien le secret, pourvu que le hashage soit fiable (utiliser MD5 ou SHA1).
Ce programme ne se casse pas en qques minutes. J'ai bien signalé à malkommalkom que son cryptage devait dépendre de la clé entrée.

D'ailleurs certains crypto-systèmes utilisent ce système, surtout lorsque l'algorithme est lent.
De toute façon, il faut bien intégrer dans tout crypto système une façon d'être sûr que le message décrypté soit le bon. S'en est une parmis d'autres.

Commentaire de TeLeTUbIz le 11/03/2005 13:31:18

Brunews, j'aimerais que tu sois plus clair, je ne comprend pas ce que tu veux dire par "Par contre on attend un peu plus intéressant pour la suite, je ne conserverai pas d'autres sources aussi "utiles" par la suite". Pourrais tu être plus clair ?

Commentaire de BruNews le 11/03/2005 13:45:03 administrateur CS

fgets et cout, on en a déjà bien assez sur cppfrance, hormis cela il ne me parait pas y avoir grand chose d'intéressant ici, voila tout.
La raison d'une source doit être d'apporter quelque chose à ceux qui la liront.

Commentaire de dominion le 11/03/2005 18:26:54

Bon perso je n'ai pas lu le code en lui-même j'ai juste parcouru et un truc m'a sauté aux yeux (deux en fait mais l'ortho on va pas en parler ;-)) :

Tu écris i = i+1;
Écris plutôt i++; voire ++i; (c'est la même chose dans ton cas). Ne me demande pas pourquoi mais il paraît que c'est plus rapide... Je pense connaître la raison, mais faute d'être sûr, je préfère ne pas polluer ce topic... Si quelqu'un sait nous éclairer...

Commentaire de dominion le 11/03/2005 18:28:32

Et un autre truc : quand tu publie pense à commenter ton code... Bon ici c'est vrai c'est pas impossible de lire sans mais c'est toujours plus facile ;-)

Commentaire de dominion le 11/03/2005 18:39:35

Et pour finir (après j'arrête promis ;-)) je viens d'ouvrir le fichier crypté... J'ai tout de suite trouvé la méthode de cryptage sans avoir lu ton code... C'est pas bête mais très facile à casser...
Un petit conseil : mélange ! Si tu mélange en fonction de la clé, ça devient déjà plus difficile à casser, vu qu'on ne connait pas la place originale... Et en plus tu ne dois plus écrire la clé dans le fichier (enfin ça on te l'a déjà dit c'est très mauvais).
Bon ça ne vaudra jamais RSA hein je suppose que tu en est conscient, mais je trouve ça marrant.

Voilà cette fois je me tais en tout cas bonne continuation ;-).

Commentaire de TeLeTUbIz le 11/03/2005 18:43:40

Le plus rapide c'est ++i. Bon dans le cas des types de bases, le compilo doit bien faire ses optimisations...
Mais sinon, pense que quand on fait i = i+1, ca consulte i, ca ajoute 1 et ca enregistre i.
Quand on fait i++, ca sauvegarde la valeur de i, ca incrémente i de 1 (en un coup) et ca renvoie la valeur sauvegardée.
++i ca incrémente i de 1 et ca le renvoie.

C'est surtout vrai avec les objets, lorsque l'on crée des types abstraits. Sinon, pour les types de bases, ca dépend vraiment des architectures de proc (je crois que ce que j'ai dis est valide sur les processeurs RISK car les opérations qui incrémentent directement en mémoire existent; mais c'est à vérifier...).

=> Brunews: je pense que même si malkommalkom n'y est pas parvenu, il a au moins éssayé de faire qque chose, et même ce genre de programmes peut aider qqun (dont lui).

Commentaire de TeLeTUbIz le 11/03/2005 18:48:05

Bon, là par contre faut vraiment que je dise à malkommalkom que "cripter" ca s'écrit crypter.
Autre chose, c'est pas parce qu'un son se prononce "er" qu'il s'écrit forcément "er". En francais y'a des règles de conjugaison et de grammaire.

À quand www.orthofrance.com ???
Ou alors www.smsfrance.com ???

Commentaire de dominion le 11/03/2005 18:57:05

Dis donc quand on sait pas que les majuscules c'est seulement au début on se tait hein !
(humour pouris g pas pu m'en empêcher...)

Commentaire de TeLeTUbIz le 11/03/2005 19:26:48

                                                    ,-----------,
                                                    |     lol     |
                                                    '-----------'

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales