Hi Sr4l!
Warnung: Alles nur Theorie!!!
Hier ein kleiner Vorschlag. Allerdings weiß ich noch nicht, wie man von C oder von C++ aus den Pfad zum Programm herausfinden, das auf das C-Programm zugreift. Warum das für meinen Vorschlag wichtig ist? Um nur dem dafür vorgesehenen Python-Programm zu erlauben, auf die C-DLL zuzugreifen.
Hier die genauere Erklärung:
Ein Python-Programm (das Spiel) verbindet sich zu einem C-Programm. Diesem C-Programm übergibt das Python-Programm die Werte, die zu übertragen sind und den zufälligen Schlüssel, den der Server übermittelt hat.
Das C-Programm prüft zuerst, ob auch wirklich nur das authorisierte Python-Programm auf das C-Programm zugreift und nicht irgend ein anderes Programm. Dafür muss vom C-Programm aus herausgefunden werden, welches Programm den nun auf das C-Programm zugreift.
Im C-Programm steckt, aufgeteilt auf mehrere Variablen, der SHA-Code des authorisierten Python-Programms. Wenn das C-Programm also herausfinden kann, von welchem Programm aus es aufgerufen wurde, dann könnte das C-Programm evt. auch prüfen, ob das Python-Programm nicht verändert wurde (mit dem SHA-Code). Ob es Probleme mit Dateisperrungen in Windows gibt, das kann ich nicht sagen.
Da jetzt das C-Programm weiß, dass die Daten von einem nicht veränderten Python-Programm kommen, kann dieses C-Programm die Daten auf Plausibilität überprüfen und dann mit Hilfe des Schlüssels in eine verschlüsselte Zeichenfolge umwandeln. Diese Zeichenfolge wird an das aufrufende Python-Programm zurück gegeben.
Das Python-Programm kann sich dann um die Übermittlung der verschlüsselten Zeichenfolge, zum Server, kümmern.
Der Server entschlüsselt die Zeichenfolge.
---------------
Wenn man statt einer einfachen, zufälligen Zeichenfolge, ein Private-/Public-Key Verfahren einsetzt, dann ist die Sache evt. ein bischen sicherer.
Alles lässt sich knacken. Du musst also immer wieder mal ein Update raus bringen, in dem du eine Kleinigkeit am Schlüssel und am Verfahren änderst. So bist du immer einen (kleinen) Schritt voraus.
Dieser Vorschlag steht oder fällt damit, ob das C-Programm den Pfad oder irgendeinen anderer Link zum aufrufenden Python-Programm herausfinden kann. Ebenso wichtig ist es, ob ein gestartetes Python-Programm per SHA gescannt werden kann. Dann ist noch wichtig, wie gut man in einem C-Programm einen Schlüssel verstecken kann.
mfg
Gerold
