C/C++ Cryptage du pass 1.29

Discussion dans 'Questions / Réponses' créé par Diorega, 22 Avril 2018.

  1. Diorega

    Diorega Membre

    Inscrit:
    2 Juin 2013
    Messages:
    4
    J'aime reçus:
    0
    Bonjour,

    Voulant m'exercer à la programmation réseau en C (que je n'ai pas touché depuis un moment), je me suis lancé le petit défi de faire un "client", voir un bot.
    Mais pour l'instant je bloque sur la partie chiffrement du mot de passe, mon programme me retourne une résultat différent de ce que je peux sniffer via le client original.

    Voici le code en question :

    Code (C):
    int main()
    {
        char* session_key = "anotmlckuacjchbtpgrtdkzyamvqyifg";//HC...
        char HASH[] = { 'a', 'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','-','_' };

        char* pass = "blabla";
        printf("Char : %s\n", pass);
        char* digest = malloc(strlen(pass) * 2 + 1 );
        int un = 0;
        int deux = 0;
        for (int i = 0; i < strlen(pass); i++)
        {
            un = (int)floor(pass[i] / 16);
            deux = (int)pass[i] % 16;
            digest[i * 2] = HASH[(un + (int)session_key[i] % strlen(HASH)) % strlen(HASH)];
            digest[i * 2 + 1] = HASH[(deux + (int)session_key[i] % strlen(HASH)) % strlen(HASH)];

        }
        digest[strlen(pass) * 2] = '\0';

        printf("Digest : %s\n",digest);

        *digest = 0;
        free(digest);
        return 0;
    }
    Merci d'avance,
    Cordialement
     
    Dernière édition: 24 Avril 2018
  2. Crypto0

    Crypto0 Membre

    Inscrit:
    31 Mars 2016
    Messages:
    33
    J'aime reçus:
    4
    1. Ta variable 'digest' doit être initialisée avec "#1" et tu rajoutes les caractères derrière.
    2.
    Code (Text):
      deux = (int)pass[i] % 16;
    ça serait pas plutôt
    Code (Text):
      deux = (int)session_key[i] % 16;
     
  3. Diorega

    Diorega Membre

    Inscrit:
    2 Juin 2013
    Messages:
    4
    J'aime reçus:
    0
    J'ai bien rajouter le #1 mais le problème que j'ai eu est soucis de libération de mémoire qui retournais donc des résultats changeant à +/- chaque lancement.

    Voici ma solution (qui fonctionne) :

    Code (Text):
    int main()
    {
        char* session_key = "wnaxfdmzukcmhsuicbmumgrvshdhglae";//HC...
        char HASH[] = { 'a', 'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','-','_' };

        char* pass = "blabla";
        printf("Char : %s\n", pass);
        int size_digest = strlen(pass) * 2 + 3;
        char* digest = malloc(size_digest);//#1 +\0
        digest[0] = '#';
        digest[1] = '1';
        unsigned int un = 0;
        unsigned int deux = 0;
        for (int i = 0; i < strlen(pass); i++)
        {
            un = (unsigned int)floor(pass[i] / 16);
            deux = (unsigned int)pass[i] % 16;
            digest[i * 2 + 2 ] = HASH[(un + (unsigned int)session_key[i] % 64) % 64];
            digest[i * 2 + 1 + 2] = HASH[(deux + (unsigned int)session_key[i] % 64) % 64];
        }
        digest[size_digest-1] = '\0';

        printf("Digest : %s\n taille : %d",digest,size_digest);

        free(digest);
        digest = 0;
        return 0;
    }

     
     
    Dernière édition: 24 Avril 2018
  4. Crypto0

    Crypto0 Membre

    Inscrit:
    31 Mars 2016
    Messages:
    33
    J'aime reçus:
    4
    Good luck pour tout faire en C :D
     
  5. Diorega

    Diorega Membre

    Inscrit:
    2 Juin 2013
    Messages:
    4
    J'aime reçus:
    0
    Avec un peu de temps, de volonté et d'aide ça le feras ;)
     
  6. tazman59

    tazman59 Rédacteur

    Inscrit:
    20 Décembre 2012
    Messages:
    108
    J'aime reçus:
    27
    Je suis complètement partant pour t’aider, pourquoi pas même intégrer le projet s’il le faut. :)
     
  7. Diorega

    Diorega Membre

    Inscrit:
    2 Juin 2013
    Messages:
    4
    J'aime reçus:
    0
    Pour l'instant je n'ai pas trop le temps de me fixer bien sérieusement dessus, je fais des petits par ci par là mais merci pour ton aide quand même ;)
     

En naviguant sur ce site web, vous acceptez les Termes et Conditions d'utilisation. Tout le contenu que vous pourrez trouver sur ce site est soumis à la license Creative Commons.