Guten Mittag epvp,
Ich habe mal ein kleines Codingprojekt angefangen und dieses auch in so gut keiner Zeit fertiggestellt, ist sehr simpel, aber es sollte reichen damit ihr den Trick daran rausbekommt.
Also es gibt 2 Dateien, zum einen die Version, welche auf dem Server liegt und dann ist da noch die, die Clientseitig vorhanden ist. Bei vielen Gamehacks o.ä. ist es wichtig, Dateien aktuell zu halten, da sonst Banngefahr besteht oder das Programm schlicht und einfach nicht funktioniert. Oder jemand hier möchte das Programm für legale Zwecke benutzen, hoffe ich zumindest.
Im Praxisteil werde ich mich größtenteils mit der Serverseite beschäftigen, da die Clientseite wirklich sehr sehr einfach zu erledigen ist. Es kann sein das das Skript unsicher ist, ihr solltet bevor ihr den Kram hier verwendet zumindest die Input-Variablen von den Usern filtern / escapen. Einfach um auf Nummer sicher zu gehen. Aber jetz mal los hier!
Die folgenden Dateien werden benötigt:
functions.php
config.php
index.php
test.file
Fangen wir mal bei der functions.php an, hier habe ich eine einfache Funktion geschrieben, die 2 Variablen annimmt, einmal den Dateinamen, der in der config.php eingetragen wird (dazu kommen wir gleich nochmal) und den MD5 Hash, welcher vom Client kommt.
Jenachdem gibt die Funktion upd (für Update), noupd (für noUpdate) und unk (für irgendwelche anderen Fehler z.B. in der md5_file Funktion von PHP oder was weiss ich).
Also erstmal erstellen wir die Funktion
PHP Code:
Function compareInputWithStored($hash, $stored_filename){
PHP Code:
$stored_filename_hash = md5_file($stored_filename);
PHP Code:
If ($stored_filename_hash == $hash){
return "noupd"; // ^ Wenn der Hash von der Datei auf dem Server = dem vom User angegeben Hash ist
}elseif($stored_filename_hash != $hash){
return "upd"; // ^ Wenn die Hashs sich unterscheiden
}else{
return "unk"; //^ Wenn irgendetwas anderes passiert ist.
}
Die komplette Funktion compareInputWithStored:
So nun mal was ganz einfaches, die config.php.
PHP Code:
$stored_filename = "test.file";
$shared_secret = "Dr6TpBiyXn";
Nun kommt der eigentlich "schwerste" Teil von diesem Miniskript - die index.php.
Zunächst binden wir Config und Funktionsdatei ein:
PHP Code:
require_once('config.php');
require_once('functions.php');
PHP Code:
If (@$_GET["ss"] == "Dr6TpBiyXn"){
PHP Code:
If(@isset($_GET["hash"])){
PHP Code:
$hash = $_GET["hash"];
PHP Code:
If (compareInputWithStored($hash, $stored_filename) == "noupd"){
echo "No Update needed";
PHP Code:
}elseif(compareInputWithStored($hash, $stored_filename) == "upd"){
echo "Get the update at m1nt.info";
PHP Code:
}elseif(compareInputWithStored($hash, $stored_filename) == "unk"){
echo "A unknown error occured.";
PHP Code:
}
}
}else{
echo "Shared Secret failed";
Soviel zum Serverteil.
Für den Client schreibe ich nurmal ein wenig VB.NET ausm Kopfe heraus, aber nicht debugged also auf eigene Gefahr benutzen (wie das gesamte Skript!):
Code:
Dim SharedSecret As String = "Dr6TpBiyXn" Dim MD5 As String = "98a4ds98a4ds98as4d" Dim StringComplete As String = "http://localhost/updater/?ss=" & SharedSecret & "&hash=" & MD5 Dim web As New WebClient Dim ret As String = web.DownloadString(StringComplete) If ret.Contains("Grab") Then MsgBox("Update Available") Else If ret.Contains("needed") Then MsgBox("No Updates are available") End If
Ich hoffe mein Tutorial hat euch geholfen / zugesagt. Es ist das erste Codingtutorial was ich je geschrieben habe, Arbeitszeit von Anfang Skriptcoding bis Tutorial fertig ca 90 Minuten. Ich bitte um ernsthaftes Feedback und keine "Du bist Scheisse" oder "Dein Tutorial ist derbe scheisse lan!" Kommentare. Danke im Voraus.
Reserviert für Nachtrag o.ä.