[.net2] securestring, string cryptée en mémoire

Description

Ce code est juste là pour un but pédagogique (c'est le but de Codes-Sources je croi :p)
donc ya pas de capture (ni d'exe) car le code ne fait rien d'extraordinaire c'est juste un boite de dialogue de connection

Sauf que dans une boite de dialogue ordinaire lorsque l'on tappe le mot de passe, dans le meilleur des cas on met une "*" dans le PasswordChar de la textbox et puis basta !!! alors qu'il est très facile de faire disparaitre cette * et voir le mot de passe en clair

mon code analyse chaque frappe de clavier sur la textbox de mot de passe et stock le caractère (à la suite des autres) dans une variable en memoire et renvoie dans la textbox une * (avec le PasswordChar="") comme ca plus moyen de lire le mot de passe... direct dans la textbox car meme en faisant msgbox(txtMotdePasse.text), bah on verra que des etoiles !!!

Jusque là source nulle, qui sert à rien, y'en a des milliers sur CS, ..., etc
et bien non !!! une source comme celle y'en a ... 0 sur VBFrance (et meme 0 sur tout CS tous languages confondus)

Et que c'est là que le .Net framework 2 intervient !!! avec sa securité et avec une classe que personne (ou presque) ne connait !
au lieu mettre betement les caractères les uns à la suite des autres dans une simple "String" (qui est lisible en memoire directement en clair) et bah on va crypter cette chaine de caractère, qui ça ?? nous ?? non, le framework !!!
A l'aide d'une SecureString, qui est une string presque normal sauf qu'elle est cryptée en memoire automatiquement (pas besoin de clé de cryptage et tous le tralala, le framework s'occupe de tous)

Le seul (peut etre) inconvenient c'est que l'on ne peut pas faire :
Dim mSecureStr as SecureString
mSecureStr = TextBox1.Text

Non, il faut entrer les caractères 1 par 1...

Le code est très commenté pour bien tous expliquer

voila !!! (commentaire + notes...)

VBSorcier

PS : voir notes finales

Source / Exemple :


'LE CODE DANS LES GRANDES LIGNES, LE PRINCIPALE

Imports System.Security                 'pour pouvoir déclarer la SecureString
Imports System.Runtime.InteropServices  'Pour pouvoir aller chercher le pointeur en memoire

    Private mPwd As New SecureString    'déclarée en tant que "String Sécurisé"

'Ecriture dans la SecureString, insére 1par1 chaque caractère du texte et crypte au fur et à mesure
    For Each mChar As Char In "Source de VBSorcier"
       mPwd.AppendChar(mChar)
    Next

'Lecture de la valeur de la SecureString
    Dim mPointeur As IntPtr = Marshal.SecureStringToBSTR(mPwd)      'Pour aller chercher le pointeur renvoyant vers la securestring
    lbSecureString.Text = Marshal.PtrToStringUni(mPointeur)         'Va chercher la valeur de la securestring

Conclusion :


Code dans les grandes lignes...

Le zip est plus complet car il montre comment bien gérer toute les frappes dans une textbox pour bien modifier la SecureString en conséquence (en prennant compte de la touche "BackSpace" et "Suppr")

Voila, c'est fini !!!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.