Was kann man damit machen?
Programme um Geheimtexte auszutauschen die nur derjenige lesen kann, der den Key hat.
Naja, meine erste UDF...
Im Anhang ist immer die aktuelle Version...
Changelog: #CURRENT# hinzugefügt V1.1# _keydel() #added -- Löscht ALLE Keyeinträge aus der Regedit V1.2# Nachricht beim Entschlüsseln Ja/Nein #added
Hash/Nachricht in Zwischenspeicher kopieren Ja/Nein #added
# _encrypt("132433", 0, 0) #
# _decrypt("A", 0, 0) # V1.21# Bugfixes der example.au3 & Global wird jetzt in der Funktion verwendet.
; #INDEX# =======================================================================================================================
; Title .........: CryptUDF
; AutoIt Version : 3.2.10++
; UDF Version....: 1.2
; Language ......: Deutsch
; Description ...: Ermöglicht das encrypten/decrypten durch eigenen Key
; ===============================================================================================================================
; #CURRENT# =====================================================================================================================
;_encrypt
;_decrypt
;_keygen
;_keycheck
;_export
;_import
;_keydel
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name...........: _encrypt
; Description ...: Verschlüsselt den String.
; Syntax.........: _encrypt($string3, $$message)
; Parameters ....: $string3 - String zum verschlüsseln.
;................: $message - Messageox anzeigen? 0 = Nein 1 Ja(default)
;................: $clip - Nachher in Clipoard? 0 = Nein 1 Ja(default)
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _encrypt($string3, $message, $clip)
Global $stringen
For $i = 65 to 122
$new=RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i)
$string3=StringReplace($string3, Chr($i), $new,0,2)
Next
$string3=_StringReverse($string3)
If $message = 0 Then
Else
MsgBox(0, "Verschlüsselt:", "Der String wurde in deine Zwischenablage kopiert:"&@CRLF&$string3)
EndIf
If $clip = 0 Then
Else
ClipPut($string3)
EndIf
$stringen=$string3
Return $stringen
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _decrypt
; Description ...: Entschlüsselt den String.
; Syntax.........: _decrypt($string2, $$message)
; Parameters ....: $string2 - String zum entschlüsseln
;................: $message - Messageox anzeigen? 0 = Nein 1 Ja(default)
;................: $clip - Nachher in Clipoard? 0 = Nein 1 Ja(default)
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _decrypt($string2, $message, $clip)
Global $stringde
$string2=_StringReverse($string2)
For $i = 65 to 122
$new=RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i)
$string2=StringReplace($string2, $new, Chr($i),0,2)
Next
If $message = 0 Then
Else
MsgBox(0, "Entschlüsselt:", "Die Nachricht lautet:"&@CRLF&$string2)
Endif
If $clip = 0 Then
Else
ClipPut($string2)
EndIf
ClipPut($string2)
$stringde=$string2
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _keygen
; Description ...: Erzeugt den Key zum encrypten/decrypten.
; Syntax.........: _keygen()
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _keygen()
For $i = 65 to 122
$code=Int(Random(1000000, 9999999))
RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i, "REG_SZ", $code)
Next
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _keycheck
; Description ...: Überprüft ob der Key vorhanden ist.
; Syntax.........: _keycheck()
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _keycheck()
For $i = 65 to 122
If RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i) = "" Then
MsgBox(16, "Fehler", "Key nicht vorhanden, Key wird jetzt erstellt.")
_keygen()
ExitLoop
EndIf
Next
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _import
; Description ...: Importiert den Key eines anderen Users und überprüft dies.
; Syntax.........: _import()
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _import()
If Not FileExists(@ScriptDir&"\key") then
MsgBox(16, "Fehler", "Die Datei key ist nicht vorhanden")
Else
$file=FileOpen("key",0)
$data=FileRead($file)
For $i=65 to 122
$reg=StringLeft($data, 7)
RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i, "REG_SZ", $reg)
$data=StringReplace($data, $reg, "")
Next
MsgBox(0,"","Es wird nun überprüft ob alles richtig eingespielt wurde.")
For $i = 65 to 122
If RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i) = "" Then
If StringLen($data) = 406 Then
MsgBox(16, "Fehler", "Der Key wurde nicht korrekt eingespielt."&@CRLF&"Möglicherweiße ist der Key defekt.")
Else
MsgBox(16, "Fehler", "Der Key ist zu kurz oder zu lang.")
EndIf
ExitLoop
EndIf
Next
MsgBox(0, "", "Der Key wurde erfolgreich importiert.")
FileClose($file)
EndIf
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _export
; Description ...: Exportiert den eigenen Key.
; Syntax.........: _export()
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _export()
FileDelete("key")
$file=FileOpen("key",1)
For $i=65 to 122
FileWrite($file,RegRead("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i))
Next
FileClose($file)
MsgBox(0,"","Der Key wurde exportiert. Datei:(key)")
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _keydel
; Description ...: Löscht ALLE Keys aus der Regedit
; Syntax.........: _keydel()
; Author ........: .2good4you111 @ epvp
; ===============================================================================================================================
Func _keydel()
For $i=65 to 122
RegDelete("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i)
Next
MsgBox(0,"","Es wurden alle Einträge aus der Regedit entfernt.")
EndFunc
; #FUNCTION# ====================================================================================================================
; Name...........: _StringReverse
; Description ...: Reverses the contents of the specified string.
; Syntax.........: _StringReverse($s_String)
; Parameters ....: $s_String - String to reverse
; Return values .: Success - Returns reversed string
; Failure - Returns an empty string and sets @error = 1
; |@Error - 0 = No error.
; |@Error - 1 = One of the parameters is invalid
; |@Error - 2 = Dll error
; Author ........: Jon
; Modified.......: SmOke_N (Re-written using msvcrt.dll for speed)
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _StringReverse($s_String)
Local $i_len = StringLen($s_String)
If $i_len < 1 Then Return SetError(1, 0, "")
Local $a_rev = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DllStructGetPtr($t_chars))
If @error Or $a_rev[0] = 0 Then Return SetError(2, 0, "")
Return DllStructGetData($t_chars, 1)
EndFunc
example.au3
PHP Code:
#include<cryptUDF.au3>
_keycheck()
_encrypt("Das ist noch ein Test.", 0,0)
_decrypt($stringen, 1,1)
_encrypt($stringde, 1,1)
_export()
_import()
_keydel()
Ist ganz cool =)
Kann man schon ein paar mal brauchen ... z.B: um einen Spielstand eines eigenen Spieles zu verschlüsseln usw.
Was mich jetzt auf die Schnelle stört:
1.
PHP Code:
Local $stringen
ist außerhalb einer Funktion. Du weißt schon, was Local macht ? ^^
2. Was macht der Key im Microsoft Ordner? Schon klar, dass er dort gut versteckt ist ... aber wozu gibt es doch Verschlüsselung? Außerdem glaube ich kaum, dass jemand seine Registry nach dem Key durchwühlt ^^
3. Mit der Registry zu arbeiten ist schön ... man kann Werte speichern ohne eine Datei zu benutzen, die gelöscht werden kann. Allerdings hat das natürlich auch seine Nachteile: Angeblich (Quelle: Autoitforum) wird der Computer etwas langsamer, wenn man zu viele / zu lange Texte in die Registry rein schreibt ... ob das stimmt ist fraglich am besten erkundigst dich du mal, denn
PHP Code:
For $i = 65 to 122 $code=Int(Random(1000000, 9999999)) RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates\CA\Certificates", "code"&$i, "REG_SZ", $code) Next
spammt doch schon ganz schön die Registry zu ...
Die Verschlüsselung ist an sich ganz cool ... wenn du willst kannst du auch etwas mit _StringEncrypt oder StringToBinary bzw. BinaryToString usw. arbeiten ... bleibt dir überlassen
1.)Global?
Wär das besser...?
(Hab keinen Plan was die beiden Befehle machen )
2.)Habe eigentlich nix drinnen das den Key da zwischenspeichert.
Nur eben bei Import/Export eben vllt...
3.)Das mit der Regestry ist so minimal das man es nicht kennt.
Der macht ca 60 Einträge mit je 7 Zeichen ~ 408 Zeichen.
Schon mal Adobe Reader via Sandboxie installiert?, der macht um einiges mehr an Einträgen.
Das mit Binary etc muss ich mir vorher noch ansehen.
Aber danke für´s Feedback.