Je poste mon UDF nommé "UnitedData". Il sert à écrire des données pour vos programmes dans AppData, de manière automatique. Une technologie de cryptage en RC4 est proposée (réalisée par RazerM) pour sécuriser ces données. Voici la liste des fonctions :
_UnitedAddData : Ajoute une nouvelle donnée UnitedData
_UnitedReadData : Lis une donnée UnitedData
_UnitedDestroyData : Supprime une donnée UnitedData
_UnitedFormatData : Supprime toutes les données UnitedData d'un programme
Voici l'UDF en lui-même :
► Afficher le texteUDF UnitedData
Code : Tout sélectionner
;===============================================================================
;
; Function Name: _UnitedAddData
; Description:: Ajoute une nouvelle donnée UnitedData
; Parameter(s): $IdPrg, $Data, $TitreData, $Encrypt, $ClefCryptage
; Requirement(s): AutoIt
; Return Value(s): True si l'ajout est effectué
; Ou définit @error.
; Author(s): RL77LUC
;
;===============================================================================
;
Func _UnitedAddData($IdPrg,$Data,$TitreData,$Encrypt = 0,$ClefCryptage = "UnitedDataStandardTechnologies")
If Not IsNumber($IdPrg) Then
SetError(1)
EndIf
If StringLen($ClefCryptage) < 1 AND $Encrypt = 1 Then
SetError(2)
EndIf
If $Encrypt = 0 Then
IniWrite(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini","ClearData",$TitreData,$Data)
Elseif $Encrypt = 1 Then
$ValueCrypted = _StringEncryptRC4($Data, $ClefCryptage)
IniWrite(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini","CryptData",$TitreData,$ValueCrypted)
Else
SetError(3)
EndIf
Return True
EndFunc
;===============================================================================
;
; Function Name: _UnitedReadData
; Description:: Lis une donnée UnitedData
; Parameter(s): $IdPrg, $TitreData, $Encrypt, $ClefCryptage
; Requirement(s): AutoIt
; Return Value(s): Donnée si la valeure est existante
; Ou définit @error.
; Author(s): RL77LUC
;
;===============================================================================
;
Func _UnitedReadData($IdPrg,$TitreData,$Encrypt = 0,$ClefCryptage = "UnitedDataStandardTechnologies")
If Not IsNumber($IdPrg) Then
SetError(1)
EndIf
If StringLen($ClefCryptage) < 1 AND $Encrypt = 1 Then
SetError(2)
EndIf
If Not FileExists(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini") Then
SetError(5)
EndIf
If $Encrypt = 0 Then
$Data = IniRead(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini","ClearData",$TitreData,"")
If $Data = "" Then
SetError(4)
EndIf
Elseif $Encrypt = 1 Then
$DataCrypt = IniRead(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini","CryptData",$TitreData,"")
If $DataCrypt = "" Then
SetError(4)
EndIf
$Data = _StringDecryptRC4($Data,$ClefCryptage)
Else
SetError(3)
EndIf
Return $Data
EndFunc
;===============================================================================
;
; Function Name: _UnitedDestroyData
; Description:: Supprime une donnée UnitedData
; Parameter(s): $IdPrg, $TitreData
; Requirement(s): AutoIt
; Return Value(s): True si l'ajout est effectué
; Ou définit @error.
; Author(s): RL77LUC
;
;===============================================================================
;
Func _UnitedDestroyData($IdPrg,$TitreData)
If Not IsNumber($IdPrg) Then
SetError(1)
EndIf
If Not FileExists(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini") Then
SetError(2)
EndIf
IniDelete(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini","CryptData",$TitreData)
Return True
EndFunc
;===============================================================================
;
; Function Name: _UnitedFormatData
; Description:: Supprime toutes les données UnitedData d'un programme
; Parameter(s): $IdPrg
; Requirement(s): AutoIt
; Return Value(s): True si l'ajout est effectué
; Ou définit @error.
; Author(s): RL77LUC
;
;===============================================================================
;
Func _UnitedFormatData($IdPrg)
If Not IsNumber($IdPrg) Then
SetError(1)
EndIf
If Not FileExists(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini") Then
SetError(2)
EndIf
FileDelete(@AppDataDir & "\UnitedData\UD_" & $IdPrg & ".ini")
Return True
EndFunc
;===============================================================================
;
; Function Name: _StringEncryptRC4
; Description:: Encrypts text using RC4 Encryption
; Parameter(s): $text, $encryptkey
; Requirement(s): AutoIt
; Return Value(s): Encrypted String
; Author(s): RazerM
;
;===============================================================================
;
Func _StringEncryptRC4($text, $encryptkey)
Local $sbox[256]
Local $key[256]
Local $temp
Local $a
Local $i
Local $j
Local $k
Local $cipherby
Local $cipher
$i = 0
$j = 0
__RC4Initialize($encryptkey, $key, $sbox)
For $a = 1 To StringLen($text)
$i = Mod(($i + 1),256)
$j = Mod(($j + $sbox[$i]),256)
$temp = $sbox[$i]
$sbox[$i] = $sbox[$j]
$sbox[$j] = $temp
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]),256)]
$cipherby = BitXOR(Asc(StringMid($text, $a, 1)),$k)
$cipher = $cipher & Chr($cipherby)
Next
Return _StringToHexEx($cipher)
EndFunc ;==>_StringEncryptRC4
;===============================================================================
;
; Function Name: _StringDecryptRC4
; Description:: Decrypts text using RC4 Encryption
; Parameter(s): $text, $encryptkey
; Requirement(s): AutoIt
; Return Value(s): Decrypted String
; Author(s): RazerM
; Note(s): RC4 uses the same algorithm to encrypt and decrypt
;
;===============================================================================
;
Func _StringDecryptRC4($text, $encryptkey)
Local $sbox[256]
Local $key[256]
Local $temp
Local $a
Local $i
Local $j
Local $k
Local $cipherby
Local $cipher
$text = _HexToStringEx($text)
$i = 0
$j = 0
__RC4Initialize($encryptkey, $key, $sbox)
For $a = 1 To StringLen($text)
$i = Mod(($i + 1),256)
$j = Mod(($j + $sbox[$i]),256)
$temp = $sbox[$i]
$sbox[$i] = $sbox[$j]
$sbox[$j] = $temp
$k = $sbox[Mod(($sbox[$i] + $sbox[$j]),256)]
$cipherby = BitXOR(Asc(StringMid($text, $a, 1)),$k)
$cipher = $cipher & Chr($cipherby)
Next
Return $cipher
EndFunc ;==>_StringDecryptRC4
; Helper function
Func __RC4Initialize($strPwd, ByRef $key, ByRef $sbox)
Dim $tempSwap
Dim $a
Dim $b
$intLength = StringLen($strPwd)
For $a = 0 To 255
$key[$a] = Asc(StringMid($strPwd, (Mod($a,$intLength))+1, 1))
$sbox[$a] = $a
Next
$b = 0
For $a = 0 To 255
$b = Mod($b + $sbox[$a] + $key[$a],256)
$tempSwap = $sbox[$a]
$sbox[$a] = $sbox[$b]
$sbox[$b] = $tempSwap
Next
EndFunc ;==>__RC4Initialize
Func _HexToStringEx($strHex)
Return BinaryToString("0x" & $strHex)
EndFunc ;==>_HexToStringEx
Func _StringToHexEx($strChar)
Return Hex(StringToBinary($strChar))
EndFunc ;==>_StringToHexEx
