Hallo,
Ich hab mich mit dem verschlüsseln von .inis für z.B. Spielstände auseinandergesetzt. Nun weis ich wie ich die .ini verschlüssel, bei Bedarf entschlüsseln und auslesen und anschliesend wieder verschlüsseln kann. Ich habe dafür dieses Script gefunden(By Shadow992):
Spoiler anzeigen
$satz=Inputbox("","Gib den zu verschlüsselnden Satz ein")
$key=Inputbox("","Gib das passwort ein")
$encrypt=_XXTEA_Encrypt($satz, $key)
IniWrite("save.ini", "norm", "key", $encrypt)
$decrypt=_XXTEA_Decrypt($encrypt, $key)
$decrypt=BinarytoString($decrypt)
IniWrite("save.ini", "norm", "key", $decrypt)
$iniread = IniRead("save.ini", "norm", "key", "0")
MsgBox(0, "lol", $iniread)
IniWrite("save.ini", "norm", "key", $encrypt)
Func _XXTEA_Encrypt($Data, $Key)
$Data = Binary($Data)
Local $DataLen = BinaryLen($Data)
If $DataLen = 0 Then
Return ""
ElseIf $DataLen < 8 Then
$DataLen = 8
EndIf
Local $Opcode = '0x83EC14B83400000099538B5C2420558B6C242056578B7C9DFCF7FB89C683C606C74424180000000085F68D76FF0F8EEA000000896C24288D4BFF8D549D00894C2410895424148974242081442418B979379E8B4C2418C1E90281E103000000894C241C31F6397424107E568B5424288BCF8B6CB204C1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D333CA8B542428010CB28B0CB2463974241089CF7FAA8B5424288BCF8B2AC1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D3FF4C242033CA8B542414014AFC8B4AFC8B54242089CF420F8F2DFFFFFF5F31C05E5D5B83C414C21000'
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]")
DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($V), _
"int", Ceiling($DataLen / 4), _
"ptr", DllStructGetPtr($K), _
"int", 0)
Local $Ret = DllStructGetData($V, 1)
$CodeBuffer = 0
$V = 0
$K = 0
Return $Ret
EndFunc
Func _XXTEA_Decrypt($Data, $Key)
$Data = Binary($Data)
Local $DataLen = BinaryLen($Data)
If $DataLen = 0 Then Return ""
Local $Opcode = '0x83EC10B83400000099538B5C241C55568B742420578B3EF7FB69D0B979379E81C256DA4CB5895424180F84DD000000897424248D4BFF8D149E894C2410895424148B4C2418C1E90281E103000000894C241C8B742410837C2410007E528B5424248B6CB2FC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290CB28B0CB24E89CF85F67FAE8B5424148B6AFC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290A8B0A89CF814424184786C861837C2418000F8535FFFFFF5F31C05E5D5B83C410C21000'
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]")
DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($V), _
"int", Ceiling($DataLen / 4), _
"ptr", DllStructGetPtr($K), _
"int", 0)
Local $Ret = DllStructGetData($V, 1)
$CodeBuffer = 0
$V = 0
$K = 0
Return $Ret
EndFunc
Func _RC4($Data, $Key)
Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000"
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]")
DllStructSetData($Buffer, 1, $Data)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($Buffer), _
"int", BinaryLen($Data), _
"str", $Key, _
"int", 0)
Local $Ret = DllStructGetData($Buffer, 1)
$Buffer = 0
$CodeBuffer = 0
Return $Ret
EndFunc
Die Datei entschlüsselt die Ini, liest sie aus, verschüsselt sie wieder und gibt den Inhalt in einer MsgBox wieder. Nun habe ich für mein Spiel das Script oben angewendet(Auszug):
Spoiler anzeigen
$key = "Warlord"
$en_int = _XXTEA_Encrypt($int_self, $key)
$en_starke = _XXTEA_Encrypt($starke_self, $key)
$en_bew = _XXTEA_Encrypt($bew_self, $key)
$en_ausdauer = _XXTEA_Encrypt($ausdauer_self, $key)
$en_blocken = _XXTEA_Encrypt($blocken_self, $key)
$en_treffer = _XXTEA_Encrypt($treffer_self, $key)
$en_crit = _XXTEA_Encrypt($crit_self, $key)
$en_life = _XXTEA_Encrypt($life_self, $key)
$en_max_life = _XXTEA_Encrypt($max_life_self, $key)
$en_level = _XXTEA_Encrypt($level_self, $key)
$en_gold = _XXTEA_Encrypt($gold_self, $key)
$en_quest1 = _XXTEA_Encrypt($quest1, $key)
$en_ep = _XXTEA_Encrypt($ep_self, $key)
$en_quest2 = _XXTEA_Encrypt($quest2, $key)
$en_quest2eq = _XXTEA_Encrypt($quest2eq, $key)
$en_gilde = _XXTEA_Encrypt($gilde, $key)
$en_trank_der_starke = _XXTEA_Encrypt($trank_der_starke, $key)
$en_quest1_start = _XXTEA_Encrypt($quest1_start, $key)
$en_quest2_start = _XXTEA_Encrypt($quest2_start, $key)
$en_volk = _XXTEA_Encrypt($volk, $key)
$en_class = _XXTEA_Encrypt($class, $key)
$de_volk = _XXTEA_Decrypt($en_volk, $key)
$de_volk = BinaryToString($de_volk)
$de_class = _XXTEA_Decrypt($en_class, $key)
$de_class = BinaryToString($de_class)
$de_int = _XXTEA_Decrypt($en_int, $key)
$de_int = BinaryToString($de_int)
$de_starke = _XXTEA_Decrypt($en_starke, $key)
$de_starke = BinaryToString($de_starke)
$de_bew = _XXTEA_Decrypt($en_bew, $key)
$de_bew = BinaryToString($de_bew)
$de_ausdauer = _XXTEA_Decrypt($en_ausdauer, $key)
$de_ausdauer = BinaryToString($de_ausdauer)
$de_blocken = _XXTEA_Decrypt($en_blocken, $key)
$de_blocken = BinaryToString($de_blocken)
$de_treffer = _XXTEA_Decrypt($en_treffer, $key)
$de_treffer = BinaryToString($de_treffer)
$de_crit = _XXTEA_Decrypt($en_crit, $key)
$de_crit = BinaryToString($de_crit)
$de_life = _XXTEA_Decrypt($en_life, $key)
$de_life = BinaryToString($de_life)
$de_max_life = _XXTEA_Decrypt($en_max_life, $key)
$de_max_life = BinaryToString($de_max_life)
$de_level = _XXTEA_Decrypt($en_level, $key)
$de_level = BinaryToString($de_level)
$de_gold = _XXTEA_Decrypt($en_gold, $key)
$de_gold = BinaryToString($de_gold)
$de_quest1 = _XXTEA_Decrypt($en_quest1, $key)
$de_quest1 = BinaryToString($de_quest1)
$de_ep = _XXTEA_Decrypt($en_ep, $key)
$de_ep = BinaryToString($de_ep)
$de_quest2 = _XXTEA_Decrypt($en_quest2, $key)
$de_quest2 = BinaryToString($de_quest2)
$de_quest2eq = _XXTEA_Decrypt($en_quest2eq, $key)
$de_quest2eq = BinaryToString($de_quest2eq)
$de_gilde = _XXTEA_Decrypt($en_gilde, $key)
$de_gilde = BinaryToString($de_gilde)
$de_trank_der_starke = _XXTEA_Decrypt($en_trank_der_starke, $key)
$de_trank_der_starke = BinaryToString($de_trank_der_starke)
$de_quest1_start = _XXTEA_Decrypt($en_quest1_start, $key)
$de_quest1_start = BinaryToString($de_quest1_start)
$de_quest2_start = _XXTEA_Decrypt($en_quest2_start, $key)
$de_quest2_start = BinaryToString($de_quest2_start)
Func Ini_Write()
IniWrite("save.ini", "general", "volk", $en_volk)
IniWrite("save.ini", "general", "klasse", $en_class)
IniWrite("save.ini", "stats", "int", $en_int)
IniWrite("save.ini", "stats", "starke", $en_starke)
IniWrite("save.ini", "stats", "bew", $en_bew)
IniWrite("save.ini", "stats", "ausdauer", $en_ausdauer)
IniWrite("save.ini", "stats", "blocken", $en_blocken)
IniWrite("save.ini", "stats", "treffer", $en_treffer)
IniWrite("save.ini", "stats", "crit", $en_crit)
IniWrite("save.ini", "general", "life", $en_life)
IniWrite("save.ini", "general", "maxlife", $en_max_life)
IniWrite("save.ini", "general", "level", $en_level)
IniWrite("save.ini", "general", "gold", $en_gold)
IniWrite("save.ini", "quests", "quest1", $en_quest1)
IniWrite("save.ini", "general", "ep", $en_ep)
IniWrite("save.ini", "quests", "quest2", $en_quest2)
IniWrite("save.ini", "quests", "quest2eq", $en_quest2eq)
IniWrite("save.ini", "general", "gilde", $en_gilde)
IniWrite("save.ini", "tranke", "trank_der_starke", $en_trank_der_starke)
IniWrite("save.ini", "quests", "quest1_start", $en_quest1_start)
IniWrite("save.ini", "quests", "quest2_start", $en_quest2_start)
EndFunc
Func Ini_Write_de()
IniWrite("save.ini", "stats", "int", $de_int)
IniWrite("save.ini", "stats", "starke", $de_starke)
IniWrite("save.ini", "stats", "bew", $de_bew)
IniWrite("save.ini", "stats", "ausdauer", $de_ausdauer)
IniWrite("save.ini", "stats", "blocken", $de_blocken)
IniWrite("save.ini", "stats", "treffer", $de_treffer)
IniWrite("save.ini", "stats", "crit", $de_crit)
IniWrite("save.ini", "general", "life", $de_life)
IniWrite("save.ini", "general", "maxlife", $de_max_life)
IniWrite("save.ini", "general", "level", $de_level)
IniWrite("save.ini", "general", "gold", $de_gold)
IniWrite("save.ini", "quests", "quest1", $de_quest1)
IniWrite("save.ini", "general", "ep", $de_ep)
IniWrite("save.ini", "quests", "quest2", $de_quest2)
IniWrite("save.ini", "quests", "quest2eq", $de_quest2eq)
IniWrite("save.ini", "general", "gilde", $de_gilde)
IniWrite("save.ini", "tranke", "trank_der_starke", $de_trank_der_starke)
IniWrite("save.ini", "quests", "quest1_start", $de_quest1_start)
IniWrite("save.ini", "quests", "quest2_start", $de_quest2_start)
EndFunc
Func _XXTEA_Encrypt($Data, $Key)
$Data = Binary($Data)
Local $DataLen = BinaryLen($Data)
If $DataLen = 0 Then
Return ""
ElseIf $DataLen < 8 Then
$DataLen = 8
EndIf
Local $Opcode = '0x83EC14B83400000099538B5C2420558B6C242056578B7C9DFCF7FB89C683C606C74424180000000085F68D76FF0F8EEA000000896C24288D4BFF8D549D00894C2410895424148974242081442418B979379E8B4C2418C1E90281E103000000894C241C31F6397424107E568B5424288BCF8B6CB204C1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D333CA8B542428010CB28B0CB2463974241089CF7FAA8B5424288BCF8B2AC1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D3FF4C242033CA8B542414014AFC8B4AFC8B54242089CF420F8F2DFFFFFF5F31C05E5D5B83C414C21000'
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]")
DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($V), _
"int", Ceiling($DataLen / 4), _
"ptr", DllStructGetPtr($K), _
"int", 0)
Local $Ret = DllStructGetData($V, 1)
$CodeBuffer = 0
$V = 0
$K = 0
Return $Ret
EndFunc
Func _XXTEA_Decrypt($Data, $Key)
$Data = Binary($Data)
Local $DataLen = BinaryLen($Data)
If $DataLen = 0 Then Return ""
Local $Opcode = '0x83EC10B83400000099538B5C241C55568B742420578B3EF7FB69D0B979379E81C256DA4CB5895424180F84DD000000897424248D4BFF8D149E894C2410895424148B4C2418C1E90281E103000000894C241C8B742410837C2410007E528B5424248B6CB2FC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290CB28B0CB24E89CF85F67FAE8B5424148B6AFC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290A8B0A89CF814424184786C861837C2418000F8535FFFFFF5F31C05E5D5B83C410C21000'
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]")
DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]")
DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($V), _
"int", Ceiling($DataLen / 4), _
"ptr", DllStructGetPtr($K), _
"int", 0)
Local $Ret = DllStructGetData($V, 1)
$CodeBuffer = 0
$V = 0
$K = 0
Return $Ret
EndFunc
Func _RC4($Data, $Key)
Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000"
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
DllStructSetData($CodeBuffer, 1, $Opcode)
Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]")
DllStructSetData($Buffer, 1, $Data)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
"ptr", DllStructGetPtr($Buffer), _
"int", BinaryLen($Data), _
"str", $Key, _
"int", 0)
Local $Ret = DllStructGetData($Buffer, 1)
$Buffer = 0
$CodeBuffer = 0
Return $Ret
EndFunc
Nun mache ich vor jedem IniRead dieses hier:
[autoit]
Ini_write_de()
IniRead(...)
Ini_write()
Eine Ini_Write_de() wird direkt am Anfang gebraucht. Wenn ich das Script starte kommt folgender Fehler:
==> Variable used without being declared.:
IniWrite("save.ini", "stats", "int", $de_int)
IniWrite("save.ini", "stats", "int", ^ ERROR
Need Help
Mfg Nakroma