Schützt euer Skript vor Betrügern

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag liebe Community,

    Ihr kennt das doch bestimmt auch! Ihr findet einen fremden Sponsor und dieser sagt zu euch, dass ihr eure Script-Daten auf den Root laden könnt. Und ihr bekommt ein mulmiges Gefühl, nach dem Motto "vielleicht ein Script Dieb?"


    Für Skripter eine nützliche Funktion um sich abzusichern vor Skriptdieben

    So könnt ihr euch schützen!

    Zuerst ist dieser Beitrag für euch interessant: Die .amx-Datei - Kann mein Script geklaut werden?


    Dieser Beitrag von Julian besagt, dass auf eure .amx-Daten nicht zugegriffen werden kann, also niemals die uncompilte .pwn-Datei auf den Rootserver laden. - Alles klar, dass wissen die meißten.


    Was aber, wenn der gute Möchtegern-Hoster alle Daten auf seinen Rechner zieht und die dann verwendet. Das ist zwar recht unwarscheinlich, weil er nur die Hälfte der Technik kontrollieren kann, zum Beispiel in den Scriptfiles, wie die Accountdaten aufgebaut sind und allgemein alle Gespeicherten Sachen in einer .ini- oder .txt.-Datei.
    Jedoch könnte er den Server samt Daten einrichten und ihn trotzdem über seinen Server laufen lassen und somit mit euerm Script (was genials und einzigartig sein kann) hier als den Seinen ausgeben und das will doch niemand, vor allem GF-Skripts sind davon betroffen da sich die meißten Nutzer sehr gut mit deisem Gamemode auskennen!


    So wird 100%-tige Sicherheit garantiert:
    Ihr richtet als erstes in euerm Skript eine Variable ein.


    new ServerAktiv;


    Diese Variable darf aber nicht gespeichert werden, sonst nützt das nichts.


    Reset der Variable
    Weiter im Text: Bei "public OnGameModeInit" wird eure Variable auf null gesetzt.


    ServerAktiv = 0;


    Abfragen ob Server aktiviert ist
    Wenn nun ein Spieler auf euerm Server joint, und der Server nicht aktiviert ist, bleibt der Spieler auf dem Startbildschirm. Er kann keinen /Login-Befehl nutzen bzw. der Dialog zum Passwort eingeben / Registrieren erscheint nicht.
    Das funktioniert mithilfe vom Abfragen:


    if(ServerAktiv == 0)
    {
    GameTextForPlayer(playerid,"~w~Server ~r~deaktiviert~n~~w~Bitte warten!",5000,4);
    //hier der Code, die Maßnahme, dass das der Login/Register auch nicht funktioniert (wichtig!)!
    }


    Als letztes noch der Befehl zum aktivieren
    Dies ist eine Art Passwort, welches nur ihr wisst.


    if(!strcmp(cmd,"/pwaktiv1382",true))
    {
    ServerAktiv = 1;
    return 1;
    }



    So und mit dieser kleinen 5-Minuten-Arbeit könnt ihr das Skript für den Betrüger unbrauchbar machen und könnt euch zu 100% sicher sein, dass euer Skript auch euer Skript bleibt.
    Ich hoffe ich konnte einigen Nutzern helfen.

    Weitere Fragen beantworte ich gerne hier im Thread.


    Gruß - Lincoln

  • Ist aber kacke, wenn der Server irgendwann mal neustartet und du gerade nicht da bist.
    Eine meiner Methoden (ja, ich hab mehrere) ist eine abfrage einer PHP Seite, die die IP des Clients (in dem Fall des Servers) ausgibt. Ist die IP nicht die, die sie eigentlich sein sollte -> Aus.

  • Ich machs noch einfacher.
    Da ich MySQL nutze, habe ich als IP multi-rl.de angegeben und der Account erlaubt nur lokale Anfragen. ;)

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Hallo Marlonz,


    Wenn der Nutzer nun /Login [PW] oder /Register [PW] eingeben will (zB bei Godfather), wird zuerst gefragt ob der Server aktiviert wurde (das ist der Abfrage Code). Sollte das nicht so sein, wird der Befehl des Logins bzw Registers nicht ausgeführt, dem Nutzer wird mitgeteielt dass man nicht drauf spielen kann da es nocht nicht aktiviert wurde.
    Das kommt ganz auf das Skript drauf an ist also meißt unterschiedlich.


    Ich hoffe ich konnte die Unklarheiten klarstellen, wenn nicht nochmal nachfragen :)


    Gruß - Lincoln.

  • ALso da ich mit mit Godfather nicht sooo auskenne kann ich nichts garantieren, aber ich würds vor dem ONPlayerLogin(playerid); machen ca. so:
    Also einfach abfragne und wenn der Server nicht aktiviert ist, return 1; also da gehts nicht weiter. Andernfalls wenn das aktiviert wird wird die Abfrage nicht beachtet und alles ist normal wie Standard.


    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(ServerAktiv == 1)
    {
    SendClientMessage(playerid,COLOR_WHITE,"Server nicht aktiv!");
    return 1;
    }
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are already logged in.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /login [password]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 1;
    }


    Ich glaub so stimmt es.


    Gruß - Lincoln.

  • Noche infacher


    Gib dir Admin und davor ban alle die Admin sind ;)


    Oder gib allen nicht Admins 1338 und lösche alle Accounts von den aktuellen Admins


    Ach da gibt es soviel was man machen kann

  • Master_FM
    Also erklär mir mal wie man sich Admin gibt, wenn man auf dem Server kein Admin mehr ist und keinen Zugriff auf den FTP-Account hat? Es dient dazu, dass man sein Skript schützen kann wenn man selber die Rechte davon verliert durch Betrüger oder ähnliche.


    Das mit dem .amx zu .pwn Converter ist mir neu. Also dann bau ich selber noch dieses AntiDeAMX ein.


    Gruß - Lincoln.

  • Hat nachteile:
    Der Dieb nutzt DeAMX und sieht den befehl, kann dan auch den server aktiviren.(Löschen kann er ihn ja net da das script dann unbrauchbar wird.
    Ich würd sowiso ein cmd mit /creadits machen damit ist man sucher.(kann er auch nicht editiren da es sonst unbrauchbar wird)
    Und im notfall hab ich auch ein cmd den nur ich weis der alle spieelrdaten löscht und den server "zerstört" wenn der dieb kein backup hat hab ich gewonnen(was aber auch ne nachteil hat, dass der Dieb den cmd sieht)[Er kann ihn aber nicht weg machen da sonst das script kaputt ist]
    Wer euer gm haben will kommt immer dran man kann sich nie 100% schützen aber man kann sich immer dinge einfallen lassen die Diebe hindern.

  • Ich hätte ehrlich gesagt nicht gedacht, dass Leute mit einem Programm das Skript einsehen können. Da müste man dann doch evtl auf kompliziertere Maßnahmen übergreifen wenn man ihn 100%tig schützen möchte das stimmt.
    Aber es ist bestimmt nicht unmöglich das Skript für Diebe unbrauchbar zu machen, ich meine wer nutzt denn auch ein Skript welches er nie ändern und fixen kann?

  • Ich verweise mal auf mein HTTP Tutorial.
    In diesem Post wird erklärt, wie ihr eure .amx Datei vor unbefugter Verwendung schützen könnt.
    Das ganze funktioniert folgendermaßen:
    Auf einem Webspace erstellt ihr eine Datei mit einem bestimmten Inhalt.
    Der Server überprüft dann mit der HTTP-Funktion den Inhalt der Datei. Sollte diese nicht mehr existieren oder einen anderen Inhalt haben kann man den Server abschalten. Alles weitere findet ihr in dem Tutorial


    Lg Snail


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen