Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    comment utiliser un fichier en tant que mot de passe ?
    bonjour,

    Je cherche à implémenter un script C de façon à utiliser un fichier et son chemin (déjà crées sur le disque dur) en tant que mot de passe.

    Si j'écris:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void main()
     
    {. file * p=chemin/fichier ;
    printf("entrer le mot de passe fichier");
    scanf(&&q);
    if (q=p)
    {printf("bon mot de passe fichier);}
    }


    Le code est sûrement faux et je souhaiterais que l'on m'aide.

    merci

  2. #2
    Responsable 2D/3D/Jeux

    Bonjour,

    Y a t'il une raison particulière d'utiliser le C ?
    Autrement, il y a des langages plus simples (Python, BASH) et qui permettent de lire un fichier.

    Aussi, côté sécurité, stocké un mot de passe dans un ficher, c'est bof.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert éminent sénior
    Bonjour
    Citation Envoyé par tabkelm Voir le message
    Je cherche à implémenter un script C de façon à utiliser un fichier et son chemin (déjà crées sur le disque dur) en tant que mot de passe.
    Pourquoi pas. Certains logiciels (Veracrypt, keepass) implémentent déjà cette notion. Perso je n'aime pas parce que si je perds ou modifie le fichier je perds tout et si je mets le fichier dans un beau dossier bien protégé nommé "mot de passe" ben ça ne sert plus à grand chose en terme de sécurité. Donc je préfère un mot de passe dans ma tête.

    Citation Envoyé par tabkelm Voir le message
    Si j'écris:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void main()
     
    {. file * p=chemin/fichier ;
    printf("entrer le mot de passe fichier");
    scanf(&&q);
    if (q=p)
    {printf("bon mot de passe fichier);}
    }
    Oui donc là le code, en dehors de ses erreurs innomables pour un dev C, n'a rien à voir avec le sujet. Il n'y plus aucune notion de fichier dans le mot de passe. On remplacerait le terme "chemin/fichier" par "chaine" que ce serait exactement la même chose. Si on veut utiliser un fichier comme mot de passe, il faut à un moment ou un autre accéder physiquement au fichier sur le disque (l'ouvrir, lire son contenu, etc). Plus une notion de hash du contenu du fichier. On ne va pas comparer un fichier de plusieurs ko avec son contenu de plusieurs ko directement stocké dans le code. On va hasher le fichier et comparer le résultat du hash (16 octets si c'est md5) avec le hash (là aussi 16 octets) stocké dans le code.

    Citation Envoyé par tabkelm Voir le message
    Le code est sûrement faux
    Nan, tu crois ? Ton compilo pourra peut-être t'en dire plus à ce sujet...

    Citation Envoyé par tabkelm Voir le message
    et je souhaiterais que l'on m'aide.
    Commence par ouvrir un tuto de C. Parce qu'à ce niveau d'ignorance de la syntaxe du langage on ne peut absolument rien faire. Sur 6 lignes de code, il y en a 5 d'incorrectes avec parfois plusieurs erreurs sur une même ligne (seule la ligne 5 est bien écrite !!!) C'est comme si tu demandais qu'on t'explique l'addition alors que tu ne connais pas la valeur des nombres !!!
    On peut aider mais pas faire de miracles en te mettant dans la tête les connaissances que tu n'as pas.
    Donc les erreurs
    1. main() n'est pas void mais int
    2. c'est quoi ce "point" sur la ligne 4 ???
    3. une chaine se note via les guillemets
    4. une chaine n'est pas de type "file"
    5. le type "file" n'existe pas ("FILE" oui, "file" non. 'A' ce n'est pas 'a') !!!
    6. variable q ???
    7. scanf() veut un format d'entrée (comme printf() qui veut un format de sortie)
    8. &&q ???
    9. = n'est pas un opérateur d'égalité mais d'affectation (c'était pas compliqué de faire l'analogie avec la ligne p=chemin/fichier qui était seulement 2 lignes plus haut)
    10. une chaine commence avec des guillemets, et finit aussi avec des guillemets

    Voilà. 10 erreurs pour 6 lignes de code, c'est un assez beau score. Sans compter les erreurs d'algo. Par exemple on ne compare pas 2 chaines comme on compare des nombres. Une chaine c'est un tableau de caractères. Pour comparer 2 chaines, il faut alors les balayer et comparer chaque caractère de l'une avec le caractère homologue de l'autre...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site