Base de donnée dans l'exe et non dans un fichier externe

jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012 - 3 sept. 2012 à 05:48
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012 - 4 sept. 2012 à 18:40
Salut, pour mon application de verrouillage de l'ordinateur par mot de passe j'ai vraiment besoin de créer une variable modifiable DANS l'exe de l'application, je m'explique: lors du premier démarrage de mon application, la variable interne sera vide, donc mon application demandera a l'utilisateur de lui donner une valeur (donc de définir un mot de passe) qui sera ensuite sauvegardé à l'INTÉRIEUR du exe de mon application pour prévenir que quelqu’un puisse modifier cette variable ou même la supprimer pour en créer une autre.


Je ne sais pas si se que demande est possible, mais j'apprécierais beaucoup votre aide sur ce coup la, merci d'avance a tous :P

20 réponses

biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
3 sept. 2012 à 08:13
Salut,

Je ne vois pas comment tu peux faire pour faire ça à part soit le mettre dans un fichier crypté ou alors en base de registre crypté...

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
3 sept. 2012 à 11:13
Un fichier texte contenant le hash du mdp (salé) suffit largement.

Je ne pense pas que tu puisses modifier le contenu d'un EXE qui est lancé.
Tu peux t'amuser à la fermeture de ton programme à appeler un autre qui le modifiera,
mais celui-ci devra changer à chaque fois que tu modifies ton programme principal.
Bref, c'est une très mauvaise idée.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2012 à 11:29
Salut

Modification d'un EXE = Alerte des anti-virus à chaque lancement
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
3 sept. 2012 à 15:10
okay merci de vos réponses, donc j'oubli sa tout de suite et je me penche sur une méthode de hash. merci bien :P
0

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

Posez votre question
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
3 sept. 2012 à 16:55
Bon, je vien de trouver un site web qui parle de hash md5 et de salt combiné pour rendre moin éfficasse les attaque brute force et tout, je pourais avoir votre avis la dessu svp?

http://www.obviex.com/samples/hash.aspx
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
3 sept. 2012 à 19:25
Bonne technique (pas regardé le code), faut juste éviter qu'un petit malin efface ou modifie ce hash.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
4 sept. 2012 à 01:56
justement, tu connais un moyen de faire sa?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 sept. 2012 à 06:59
Bonjour,
Le code de chiffrement doit faire partie de ton appli.
Dès lors : lorsque l'utilisateur saisit le mot de passe ===>> il est chiffré puis son chiffrement est à comparer avec le reésultat attendu ===>> si pas pareil ===>> rejet.
La suppression ou la modification du fichier contenant le mot de passe chiffré ne conduit donc à rien un "petit malin".


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
4 sept. 2012 à 07:17
Justement, pour pouvoir comparé le mot d epassé entré a celui attendu, il faut que le mot de passe attendu soi enregistré quelque part, il ne peut pas etre une variable interne du programme car je veut que l'utilisateur puisse le choisir au premier lancement du programme...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 sept. 2012 à 08:36
Oui ?
Et je crois t'avoir trépondu, non ?
Ce que je t'ai dit est-il si difficile à comprendre ?
Le reste n'est que pure stratégie.
Tu livres ton appli avec un mot de passe et sa "traduction" chiffrée dans un fichier.
Tu donnes à l'utilisateur la possibilité, après avoir donné un bon mot de passe, de le modifier pour un autre (et donc d'inscrire un nouveau "résultat" chiffré dans ton fichier spécial).
La vérification de la "justesse" d'un mot de passe se fait dans ton appli : tu chiffres sa saisie à l('aide de ton code de chiffrement (dans ton appli) et compares le résultat avec le contenu du fichier.
Quand-même !!
A ce niveau, ce n'est pas le code, qui te fait défaut, mais la compréhension d'un mécanisme pourtant clair.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
4 sept. 2012 à 09:04
Faut hasher, pas chiffrer.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 sept. 2012 à 10:45
Bonjour, ghuysmans99,
appelle cela comme tu en as l'habitude, si tu veux.
Moi, je reste en français et un mot de passe est chiffré de manière irreversible. C'est ce que toi, tu appelles "hachage".


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
4 sept. 2012 à 12:40
Bonjour,

Désolé de te contredire, mais si on suit la définition proposée par Wiki,
Le chiffrement, aussi appelé cryptage, est en cryptographie
le procédé grâce auquel on souhaite rendre la compréhension d'un document
impossible à toute personne qui n'a pas la clé de (dé)chiffrement.

on ne fait pas ici du chiffrement vu que tu ne peux en aucun cas revenir
sur le texte d'origine (les méthodes existant se basent sur un grand
nombre de calculs, faits pendant ou avant la "récupération").

Hachage crypto : wiki.

Appelons un chat un chat...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Utilisateur anonyme
4 sept. 2012 à 13:09
Bonjour tout le monde,

Nous lisons dans la question originale :
lors du premier démarrage de mon application, la variable interne sera vide, donc mon application demandera a l'utilisateur de lui donner une valeur (donc de définir un mot de passe)


Tu livres ton appli avec un mot de passe et sa "traduction" chiffrée dans un fichier.
Tu donnes à l'utilisateur la possibilité, après avoir donné un bon mot de passe, de le modifier pour un autre (et donc d'inscrire un nouveau "résultat" chiffré dans ton fichier spécial).
On peut donc se passer de la modification d'un mot de passe de base.
Il suffirait de stocker le 'chiffrement' du 1er mot de passe. A chaque saisie de l'utilisateur on refait ce 'chiffrement' et on le compare à celui qui est stocké.
Mais je n'ai peut être pas bien compris
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 sept. 2012 à 13:31
Bonjour, banana32,
Il est deangereux de démarrer avec cette variable à vide, sauf à compliquer encore la protection de l'appli.
Il vaut bien mieux y aller comme je l'ai suggéré :
- un mot de passe et le fichier y correspondant livrés avec l'appli.
L'utilisateur peut ainsi, à chaque instant (et à condition de connaître le mot de passe en vigueur) modifier ce dernier (et donc le fichier chiffré résultant). Il est dés lors seul à connaître ce mot de passe (qu'ignore même celui qui lui a disttribué l'appli).
- l'idée de demander d'installer un mot de passe lors d'un premier démarrage n'est pas une bonne idée. Pourquoi ? ===>> parce que pour savoir qu'il s'agit d'un premier démarrage, il faudra bien (là encore) aller regarder quelque part (en dur aussi) soit un compteur, soit autre chose, "en dur". Et les "petits malins", justement, savent faire ce qu'il faut :
- avant l'installation
- avant le premier démarrage
- etc ...
- y compris en déjouant les "dates de création", qu'elles soient ou non "fictives" (dont ils sauront les ignorer).
pour ensuite comparer des différences et savoir quoi neutraliser pour retrouver une virginité totale.
Parole de routard
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Utilisateur anonyme
4 sept. 2012 à 13:41
L'idée est à débattre car exposer une donnée externe au programme avant un premier démarrage est aussi une faille de sécurité. Le mieux serait d'aller le stocker à distance...
Bonne après midi ucfoutu
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
4 sept. 2012 à 13:48
+1 ucfoutu, mais dans le cas d'un hash, la valeur stockée ne sera jamais
vraiment vide... Que le mot de passe soit vide au premier lancement
ne changera rien dans ce cas-ci.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
4 sept. 2012 à 17:35
ucfoutu: tu ne semble juste pas comprendre mon inquiétude, si quelqun suprime le fichier contenant le hash du mot de passe auquel il faut comparer, mon programme n'aura plus rien avec quoi comparer les mot de passe que l'utilisateur éssais.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
4 sept. 2012 à 17:50
Tu peux ajouter une constante propre à ton programme avant de hacher,
comme ça le cracker sera obligé de désassembler ton programme pour
comprendre comment ça fonctionne et pouvoir en recréer un.

Si le fichier est supprimé, arrange-toi pour que la fonction qui va
lire le fichier renvoie une chaine vide. Ainsi, n'importe quel mot de passe
sera considéré comme incorrect.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
4 sept. 2012 à 18:40
Par exemple en inversant le mot de passe avant de le Hasher et en inversant se que l'utilisateur entre avant de le Hasher a son tour pour le comparer?

j'ai créé se petit bout de code qui contiens un mot de passe prédéfinie que l'utilisateur ne peut pas changer...

Dans cet exemple, PasswordField est le textbox ou l'utilisateur entre le mot de passe. HashPassword est moc.ecnarfbv (vbfrance.com inversé) Hashé en SHA512. HashedImput est une variable qui servira à prendre la valeur du mot de passe entré par l'utilisateur une fois inversé et Hashé en SHA512 pour la comparer à la valeur de HashPassword.

Imports System
Imports System.Windows.Forms
Imports System.Security
Imports System.Text
Imports System.Security.Cryptography

Public Class LoginForm

    Dim HashPassword As String = "267b93fd72a8284c4c1b761a6d306450d6b8763382ee5bdd92a75cd53efba659cec6ab0e18e0d545d04d2eae3379dece287166a1f74e2ac011f804849150fece"
    Dim HashedImput As String

Public Function SHA512Crypt(ByVal Source) As String
        Dim Bytes() As Byte = ASCIIEncoding.ASCII.GetBytes(Source)
        Dim SHA512 As New Cryptography.SHA512Managed
        Dim Byt() As Byte = SHA512.ComputeHash(Bytes)
        Dim a As Integer = (Byt.Length * 5 + (Byt.Length / 9))
        Dim a2 As Integer
        Dim Strbuild As StringBuilder = New StringBuilder(a)

        For a2 = 0 To Byt.Length - 1
            Strbuild.Append(BitConverter.ToString(Byt, a2, 1))
        Next
        Return Strbuild.ToString().TrimEnd(New Char() {" "c}).ToLower
    End Function

 Private Sub Deverouiller_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Deverouiller.Click

        HashedImput = SHA512Crypt(StrReverse(PasswordField.Text))
        If HashedImput = HashPassword Then

        Else

        End If
    End Sub
End Class



Vous en pensez quoi? :)
0
Rejoignez-nous