[R] CryptUnprotectData, et paramètre DllCall
Posté : dim. 04 août 2013 05:24
Salut les amis! Ca fait un bail hein! 
J'essaye d'implémenter la fonction CryptUnprotectData, mais je coince dans la récupération d'une chaine UNICODE qui contient la description des données sécurisées (paramètre optionnel).
La fonction fonctionne très bien autre part (Chiffrage, déchiffrage).
En gros, le paramètre est un pointeur vers LPCWSTR, donc un pointeur vers un pointeur qui sera alloué dynamiquement par la fonction, et contiendra la (w)chaine descriptive, que je veut récupérer.
L'exemple de MSDN l'utilise comme suit:
En AutoIt, j'essaye de faire un truc du genre:
Et ça ne marche pas super!
Voici le code au complet: (Comme il est, ça marche très. Pour voir ce qui coince, il faut dé-commenter un peu tout)
J'essaye d'implémenter la fonction CryptUnprotectData, mais je coince dans la récupération d'une chaine UNICODE qui contient la description des données sécurisées (paramètre optionnel).
La fonction fonctionne très bien autre part (Chiffrage, déchiffrage).
En gros, le paramètre est un pointeur vers LPCWSTR, donc un pointeur vers un pointeur qui sera alloué dynamiquement par la fonction, et contiendra la (w)chaine descriptive, que je veut récupérer.
L'exemple de MSDN l'utilise comme suit:
Code : Tout sélectionner
LPWSTR pDescrOut = NULL;
CryptUnprotectData(&DataOut, &pDescrOut, ...;
printf("The description of the data was: %s\n",pDescrOut);Code : Tout sélectionner
Local $description_DATA = DllStructCreate("ptr")
Local $ret = DllCall("Crypt32.dll", "bool", "CryptUnprotectData", _
"ptr", DllStructGetPtr($in_DATA_BLOB), _
"ptr", DllStructGetPtr($description_DATA), _ ...
; Puis pour récupérer les données:
Local $out_descr = DllStructCreate("wstr[" & 128 * 1024 & "]", DllStructGetData($description_DATA, 1))
$out_descr = DllStructGetData($out_descr, 1)
; Libération des données allouées par la fonction
DllCall("Kernel32.dll", "handle", "LocalFree", "handle", DllStructGetData($description_DATA, 1))Voici le code au complet: (Comme il est, ça marche très. Pour voir ce qui coince, il faut dé-commenter un peu tout)
► Afficher le texte