ich arbeite grade an einem programm das überprüft ob ein key vorhanden ist und nur dann startet
ich bräuchte also einen keygen der einen key nach einem algorythmus erstellt und eine funktion die überprüft ob der key gültig ist
vg
JuraX
ich arbeite grade an einem programm das überprüft ob ein key vorhanden ist und nur dann startet
ich bräuchte also einen keygen der einen key nach einem algorythmus erstellt und eine funktion die überprüft ob der key gültig ist
vg
JuraX
Sowas hab ich mal gemacht.
Serial-Create:
; by Jautois 2008
[/autoit] [autoit][/autoit] [autoit]#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $pInputSerial
Global $sWinTitle = "Serial-Generator - Jautois v1.0"
Global $iPars[3] = [Random(111, 999, 1), Random(111, 999, 1), Random(111, 999, 1)], $iFSNA[4]
Global $sComboKeys[2] = ["HDD - Hard Drive Disk Serial", "Random Number"]
Global $sComboFuns[2] = ["_GenerateFSNFromHDD", "_GenerateFSNFromRandomNumber"]
Global $sTemp = ""
Global $iCurPars[4] = ["", $iPars[0], $iPars[1], $iPars[2]]
$hWindow = GUICreate($sWinTitle, 322, 170)
GUISetIcon("shell32.dll", -45)
$pInputSerial = GUICtrlCreateInput("", 8, 104, 305, 21)
$pButtonGenerate = GUICtrlCreateButton("Generate", 8, 128, 153, 33, 0)
$pLabelSeeder = GUICtrlCreateLabel("Seeder: " & $iPars[0] & " - " & $iPars[1] & " - " & $iPars[2], 8, 8, 200, 17)
$pCombo = GUICtrlCreateCombo("", 8, 80, 305, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
For $i = 0 To UBound($sComboKeys) - 1
$sTemp &= $sComboKeys[$i] & "|"
Next
GUICtrlSetData(-1, $sTemp)
Global $pCheckboxSeeder = GUICtrlCreateCheckbox("Seeder constant", 8, 32, 105, 17)
$pInputSerialNum = GUICtrlCreateInput("10", 75, 55, 73, 21)
$pCheckboxMSN = GUICtrlCreateCheckbox("Generate", 8, 56, 65, 17)
GUICtrlCreateLabel("Serials", 152, 59, 35, 17)
$pButtonInfo = GUICtrlCreateButton("Info", 240, 6, 73, 25)
GUISetState(@SW_SHOW)
While 1
If GUICtrlRead($pCheckboxMSN) = 1 Then
GUICtrlSetState($pCheckboxSeeder, $GUI_CHECKED)
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $pButtonGenerate
$sT = GUICtrlRead($pCombo)
$iFunNum = _ArraySearch($sComboKeys, $sT)
If $iFunNum <> -1 Then
Call($sComboFuns[$iFunNum])
Else
MsgBox(16, "Info - Error", "Please select a Seedersource!")
EndIf
Case $pButtonInfo
MsgBox(1, "Info", "Seeder - With these 3 numbers the serials were generated. They will later need to test the validity of the serials. Serials apply only to the incorporated seeder. " & @CRLF & @CRLF & "[Checkbox] Seeder constant - The Seeder remain constant to create several Serials manually.")
EndSwitch
WEnd
Func _GenerateSerial($iSeed = 0, $iFiveDataSeed = 0, $iSevenDataSeed = 0, $iNineDataSeed = 0)
Local $bDone, $iDataF, $iDataN, $iDataS
If $iFiveDataSeed <= 2 Or $iSevenDataSeed <= 2 Or $iNineDataSeed <= 2 Then
GUICtrlSetData($pInputSerial, "0000-0000-0000")
MsgBox(16, "Info - Error", "Invalid Seeder Values!")
Else
$bDone = False
$iDataF = ($iSeed * Random(2, 20, 1)) + 5
Sleep(100)
$iDataS = ($iSeed * Random(2, 20, 1)) + 7
Sleep(100)
$iDataN = ($iSeed * Random(2, 20, 1)) + 9
While Not $bDone
$bDone = True
If Mod($iDataF, $iFiveDataSeed) <> 0 Then
$iDataF = $iDataF - 1
$bDone = False
EndIf
If Mod($iDataS, $iSevenDataSeed) <> 0 Then
$iDataS = $iDataS - 1
$bDone = False
EndIf
If Mod($iDataN, $iNineDataSeed) <> 0 Then
$iDataN = $iDataN - 1
$bDone = False
EndIf
WEnd
$sSerial = $iDataF & "-" & $iDataS & "-" & $iDataN
GUICtrlSetData($pInputSerial, $sSerial)
Return $sSerial
EndIf
EndFunc ;==>_GenerateSerial
Func _GenerateFSNFromRandomNumber()
$sSeederCatch = "Random Number"
$iStateSeeder = GUICtrlRead($pCheckboxSeeder)
$iStateMSN = GUICtrlRead($pCheckboxMSN)
If $iStateMSN = 1 Then
$iSerialsNum = GUICtrlRead($pInputSerialNum)
If Int($iSerialsNum) <= 0 Then
MsgBox(16, "Info - Error", "Not a valid entry!")
Else
$sPath = FileSaveDialog("Save Serials ...", @DesktopDir, "Text (*.txt)")
If Not @error Then
$sPath &= ".txt"
For $i = 1 To 3
$iFSNA[$i] = Random(111, 999, 1)
$iCurPars[$i] = $iFSNA[$i]
Next
GUICtrlSetData($pLabelSeeder, "Seeder: " & $iFSNA[1] & " - " & $iFSNA[2] & " - " & $iFSNA[3])
EndIf
FileWriteLine($sPath, "Serials Created With " & $sWinTitle)
FileWriteLine($sPath, "-------------")
FileWriteLine($sPath, "Catched By: " & $sSeederCatch)
FileWriteLine($sPath, "Seeder: " & $iCurPars[1] & " - " & $iCurPars[2] & " - " & $iCurPars[3])
FileWriteLine($sPath, "-------------")
FileWriteLine($sPath, "")
ProgressOn("Generating " & $iSerialsNum & " Serials", "Serial 1 from 100", "0 %")
$iTimer = TimerInit()
For $i = 1 To $iSerialsNum
$sTempSerial = _GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
ProgressSet(($i / $iSerialsNum) * 100, Round(($i / $iSerialsNum) * 100, 2) & " % - " & $i & "/" & $iSerialsNum, "Serial: " & $sTempSerial)
FileWriteLine($sPath, $sTempSerial)
Next
ProgressOff()
$iTimerDiff = TimerDiff($iTimer)
FileWriteLine($sPath, "")
FileWriteLine($sPath, "Created in: " & Round($iTimerDiff / 1000, 2) & " Seconds")
MsgBox(64, "Info", "Serials generated successfully!")
Run('explorer "' & $sPath & '"')
EndIf
Else
If $iStateSeeder = 4 Then
For $i = 1 To 3
$iFSNA[$i] = Random(111, 999, 1)
$iCurPars[$i] = $iFSNA[$i]
Next
GUICtrlSetData($pLabelSeeder, "Seeder: " & $iFSNA[1] & " - " & $iFSNA[2] & " - " & $iFSNA[3])
_GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
Else
_GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
EndIf
EndIf
EndFunc ;==>_GenerateFSNFromRandomNumber
[/autoit] [autoit][/autoit] [autoit]Func _GenerateFSNFromHDD()
Global $iHDD[1000], $z = 0, $iRandom, $sSeederCatch = "HDD"
$iStateSeeder = GUICtrlRead($pCheckboxSeeder)
$iStateMSN = GUICtrlRead($pCheckboxMSN)
If $iStateMSN = 1 Then
$iSerialsNum = GUICtrlRead($pInputSerialNum)
If Int($iSerialsNum) <= 0 Then
MsgBox(16, "Info - Error", "Not a valid entry!")
Else
$sPath = FileSaveDialog("Save Serials ...", @DesktopDir, "Text (*.txt)")
If Not @error Then
$sPath &= ".txt"
$sHDDn = DriveGetDrive("all")
If Not @error Then
If $sHDDn[0] < 3 Then
MsgBox(16, "Info - Error", "There must be at least 3 harddrives exist!")
Else
ReDim $iHDD[$sHDDn[0] + 1]
For $i = 1 To $sHDDn[0]
$iTemp = DriveGetSerial($sHDDn[$i])
If $iTemp <> "" Then
$iHDD[$i - $z] = $iTemp
Else
$z = $z + 1
ReDim $iHDD[$sHDDn[0] + 1 - $z]
EndIf
Next
EndIf
For $i = 1 To 3
$iFSNA[$i] = StringLeft($iHDD[Random(1, UBound($iHDD) - 1, 1)], 3)
$iCurPars[$i] = $iFSNA[$i]
Next
GUICtrlSetData($pLabelSeeder, "Seeder: " & $iFSNA[1] & " - " & $iFSNA[2] & " - " & $iFSNA[3])
EndIf
FileWriteLine($sPath, "Serials Created With " & $sWinTitle)
FileWriteLine($sPath, "-------------")
FileWriteLine($sPath, "Catched By: " & $sSeederCatch)
FileWriteLine($sPath, "Seeder: " & $iCurPars[1] & " - " & $iCurPars[2] & " - " & $iCurPars[3])
FileWriteLine($sPath, "-------------")
FileWriteLine($sPath, "")
ProgressOn("Generating " & $iSerialsNum & " Serials", "", "0 %")
$iTimer = TimerInit()
For $i = 1 To $iSerialsNum
$sTempSerial = _GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
ProgressSet(($i / $iSerialsNum) * 100, Round(($i / $iSerialsNum) * 100, 2) & " % - " & $i & "/" & $iSerialsNum, "Serial: " & $sTempSerial)
FileWriteLine($sPath, $sTempSerial)
Next
ProgressOff()
$iTimerDiff = TimerDiff($iTimer)
FileWriteLine($sPath, "")
FileWriteLine($sPath, "Created in: " & Round($iTimerDiff / 1000, 2) & " Seconds")
MsgBox(64, "Info", "Serials generated successfully!")
Run('explorer "' & $sPath & '"')
EndIf
EndIf
Else
If $iStateSeeder = 4 Then
$sHDDn = DriveGetDrive("all")
If Not @error Then
If $sHDDn[0] < 3 Then
MsgBox(16, "Info - Error", "There must be at least 3 harddrives exist!")
Else
ReDim $iHDD[$sHDDn[0] + 1]
For $i = 1 To $sHDDn[0]
$iTemp = DriveGetSerial($sHDDn[$i])
If $iTemp <> "" Then
$iHDD[$i - $z] = $iTemp
Else
$z = $z + 1
ReDim $iHDD[$sHDDn[0] + 1 - $z]
EndIf
Next
EndIf
For $i = 1 To 3
$iFSNA[$i] = StringLeft($iHDD[Random(1, UBound($iHDD) - 1, 1)], 3)
$iCurPars[$i] = $iFSNA[$i]
Next
GUICtrlSetData($pLabelSeeder, "Seeder: " & $iFSNA[1] & " - " & $iFSNA[2] & " - " & $iFSNA[3])
_GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
EndIf
Else
_GenerateSerial(Random(999, 99999, 1), $iCurPars[1], $iCurPars[2], $iCurPars[3])
EndIf
EndIf
EndFunc ;==>_GenerateFSNFromHDD
Serial-Check:
; by Jautois 2008
[/autoit] [autoit][/autoit] [autoit]#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $iCurPars[4]
[/autoit] [autoit][/autoit] [autoit]$hWindow = GUICreate("Serial-Generator-Checker - Jautois v1.0", 355, 114)
GUISetIcon("shell32.dll", -45)
$pInputSerial = GUICtrlCreateInput("", 8, 48, 305, 21)
$pButtonCheck = GUICtrlCreateButton("Check", 8, 72, 153, 33, 0)
GUICtrlCreateLabel("Seeder", 8, 16, 38, 17)
$pInputParam1 = GUICtrlCreateInput("", 53, 13, 33, 21)
$pInputParam2 = GUICtrlCreateInput("", 101, 13, 33, 21)
$pInputParam3 = GUICtrlCreateInput("", 149, 13, 33, 21)
$IconCheckW = GUICtrlCreateIcon("shell32.dll", -132, 320, 48, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
GUICtrlSetState(-1, $GUI_HIDE)
$IconCheckR = GUICtrlCreateIcon("shell32.dll", -145, 320, 48, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlCreateLabel("-", 92, 15, 7, 17)
GUICtrlCreateLabel("-", 140, 15, 7, 17)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $pButtonCheck
$iCurPars[1] = GUICtrlRead($pInputParam1)
$iCurPars[2] = GUICtrlRead($pInputParam2)
$iCurPars[3] = GUICtrlRead($pInputParam3)
$bCheck = _CheckSerial(GUICtrlRead($pInputSerial), $iCurPars[1], $iCurPars[2], $iCurPars[3])
If $bCheck = False Then
GUICtrlSetState($IconCheckR, $GUI_HIDE)
GUICtrlSetState($IconCheckW, $GUI_SHOW)
Else
GUICtrlSetState($IconCheckW, $GUI_HIDE)
GUICtrlSetState($IconCheckR, $GUI_SHOW)
EndIf
EndSwitch
WEnd
Func _CheckSerial($sSerial = "", $iFive = 0, $iSeven = 0, $iNine = 0)
Local $iDataF, $iDataN, $iDataS
If $iFive <= 2 Or $iSeven <= 2 Or $iNine <= 2 Then
Return False
Else
$sSD = StringSplit($sSerial, "-")
If $sSD[0] = 3 Then
$iDataF = $sSD[1]
$iDataS = $sSD[2]
$iDataN = $sSD[3]
If $iDataF <= 2 Or $iDataS <= 2 Or $iDataN <= 2 Then
Return False
EndIf
If Mod($iDataF, $iFive) == 0 And Mod($iDataS, $iSeven) == 0 And Mod($iDataN, $iNine) == 0 Then
Return True
Else
Return False
EndIf
EndIf
EndIf
EndFunc ;==>_CheckSerial
Vielleicht kannst du dir ja was abschaun ![]()
Ich hatte auch mal sowas ähnliches als UDF gemacht.
Du findest sie im Anhang.
Falls du Beispiele brauchst, sag bescheid.
Der Clou: Die Keys werden mit einer TXT-File aus dem Internet verglichen, die du auf einem Webspace gelagert hast.
Ich hatte auch mal sowas ähnliches als UDF gemacht.
Du findest sie im Anhang.Falls du Beispiele brauchst, sag bescheid.
Der Clou: Die Keys werden mit einer TXT-File aus dem Internet verglichen, die du auf einem Webspace gelagert hast.
Simple, aber nicht sicher. Du kannst doch nicht einfach Keys in einer .txt Datei lagern? :pinch: Jeder kann ja diese Datei öffnen. Da hilft nur Encode & Decode ![]()
Empfehle die Version von Jautois! ![]()
Also es ist relativ sicher, wenn man diese mit _StringEncrypt()
vorher verschlüsselt.
Was noch das beste wäre, wenn sich der
genutzte String dann aus der TXT löscht, sodass dieser nicht
ein weiteres Mal genutzt werden kann. ![]()
MfG
qixx
Also ich hatte mal "testhalber" das Ganze mit einer Sql-Datenbank ausprobiert. Hatte mir 5000 Keys generieren lassen und hab diese dann per "Copy" & "Paste" in einem Rutsch in die Datenbank eingetragen. Im Programm habe ich dann eine Php-Datei aufgerufen, die vorerst die Gültigkeit des Keys prüft und dann, falls dieser valide, ihn aus der Datenbank löscht. Dazu habe ich die Funktion aus der Datei "Serial-Check.au3", welche die Gültigkeit des Keys prüft, in Php übersetzt (Die Funktion extra nicht im Quellcode des Programm gelassen, da dies eine Sicherheitslücke darstellt).
vielen vielen dank
das mit dem php werde ich übernehmen wenn mein webspace freigeschalet wird
JuraX