Highscore online speichern

fleckdalm

Bekanntes Mitglied
Ich würde gerne bei meinem Spiek den Highscore online speichern.
Ich weiß nur nicht wie ich da am besten vorgehen soll;)
Eine php datei am server die die fragen entgegennimt geht nicht da die ja von jedem aufgerufen werden könnte der dann seinen highscore eingibt. Per ftp z.B eine txt datei mit den punkzen hochladen geht nicht weil ich dann ja mein passwort angeben müsste das dann ausgelesen werden kann.
wie kann ich das also am besten machen?

Danke, Grüße fleckdalm
 

moccajoghurt

Bekanntes Mitglied
Wenn du die Highscore-Abfrage und Eingabe in dein Java Programm integrierst, dann kann ja keiner sehen wo du den Highscore gespeichert hast und wie du auf ihn zugreifst. Der Login kann doch nach jedem Spiel von deinem Programm abgefragt / eingegeben werde.
 
S

SlaterB

Gast
du kannst noch im Quellcode verschlüsseln, mit beliebigen Lösungen, von einfach bis kompliziert,
nur wenn man "tiuiouo5470567ruruu" sendet, macht der Server etwas daraus,
evtl. von Dingen wie Tag/ Uhrzeit/ vorherige Nachricht des Server abhängig, um selbst Wiederverwendung eines einmal gültigen Eintrags zu verhindern,

auch das könnte man letztlich alles aus dem Quellcode herauslesen und kopieren,
aber so gesehen könnte man ja auch das Spiel ändern und sich mit einem Klick 1 Mio. Punkte geben..
(+ legalen Upload dieses Scores ;) )
 
Zuletzt bearbeitet von einem Moderator:

fleckdalm

Bekanntes Mitglied
Ich habs jetzt so ähnlich gemacht (das mit der zeit ist blöd weil viele eine falsche systemzeit haben, deshalb habe ichs so gemacht das ein code aus den ascii werten des benutzernamens und dem passwort errechnet wird!). Es funktioniert auch, nur leider ist es nicht sicher:( Ich wurde schon mehrmals gehackt und langsam reichts mir da dauernd die falschen scores rauslöschen zu müssen!:( Hat nicht jemand noch eine bessere Idee?? Das mit der Zeit ist glaube ich auch nicht sicherer da es ja auf gleiche hinausläuft! Man muss nur ein paar passwörter mit z.B. wireshark auslesen und dann gibt es programme die herausfinden wie man auf die passwörter kommt...

Danke, Grüße Fleckdalm
 

schalentier

Gesperrter Benutzer
Die kurze Antwort: Es geht nicht sicher. Wenn der Client Punkte hochladen kann, kann man es auch manipulieren.

Die laengere: Du kannst es so schwer wie moeglich machen, dass man Fakes hochlaed. Verschluesseln ist der erste Schritt, aber nicht sehr sicher. Am besten waere es, wenn man nur auf Onlineservern spielen kann, die jede Aktion des Spielers empfangen und auswerten, um dann selbst die Punkte zu berechnen und einzutragen. Alternativ schickst du ein Replay zum Server, mit allen Maus- und Tastendruecken zum Server, der das dann quasi nachspielt und das Ergebnis eintraegt. Oder du versuchst irgendwie die Fakepunkte automatisiert zu erkennen und zu loeschen (machst du ja grad irgendwie manuell, das halt in Code giessen).

Ziemlich schwieriges Thema, wenn du eine universale und geniale Loesung findest, lass es uns wissen ;-)
 
S

SlaterB

Gast
> Man muss nur ein paar passwörter mit z.B. wireshark auslesen und dann gibt es programme die herausfinden wie man auf die passwörter kommt...
schwer vorzustellen, aber wenn es so ist..,
wie bist du denn bisher aus Username Passwort vorgegangen, was konkret hast du damit gemacht?

vielleicht kannst du die Datenmenge dennoch schwerer machen, und noch unvorhersehbarer:
für jede Übertragung einen neuen Schlüssel, analysieren kann man den kaum, man müsste schon das Verfahren exakt nachrechnen,
als Input brauchst du auch nicht irgendwas vom User eingegeben, können beliebige Zufallswerte sein, mit Random vor dem Senden erstellt,
beliebige Anzahl an Bits, je mehr desto schwieriger hoffentlich, wenn sinnvoll genutzt,
evtl. kannst du paar Regeln einbauen, Bit 5 kleine als Bit 4, Bit 9 kleiner Bit 8 usw., das macht das Verwenden einer zufälligen Bitfolge um Wahrscheinlichkeit x inkorrekt,
die aktuelle Zeit würde ich immer noch reinnehmen, die kann auch vorher vom Server abgefragt werden, dessen Zeit,
bzw. dort ein Unique-Zähler, jede Anfrage bekommt eine neue eindeutige Id als Startwert,
oder gleich die kompletten 0-1000 Bytes Schlüssel vom Server senden lassen, nur für die nächsten 10 sec für eine Antwort gültig,
ein professionelles Tool mit automatisierter Verarbeitung wird das sicher nicht schocken, aber wer weiß wie manuell die Vorgänge sind

im Programm dann auf mehr oder weniger komplexe Weise den Schlüssel evtl. noch modifizieren, und letzlich mit den Nutzdaten verknüpfen,
allein gegen Analyse sollte ein nicht vorhersehbarer Schlüssel eigentlich reichen, dann nur Daten mit XOR verknüpfen,
ok, vielleicht nicht ganz so leicht

um gegen Nachbau des Codes zu schützen sollte es vielleicht komplizierter sein, aber da kann man auch viel falsch machen,
tausend scheinbar komplizierte Operationen sind letzlich nur eine Veränderung, kenne ich auch nicht so genau
 

fleckdalm

Bekanntes Mitglied
> Man muss nur ein paar passwörter mit z.B. wireshark auslesen und dann gibt es programme die herausfinden wie man auf die passwörter kommt...
schwer vorzustellen, aber wenn es so ist..,
wie bist du denn bisher aus Username Passwort vorgegangen, was konkret hast du damit gemacht?
summe der ascii werte des benutzernamens und die punkte und mit den beiden dann recht viele sinnlose berechnungen... Es ist eben nur das problem das es programme gibt bei denen man nur die beiden werte und die (mit wireshark ausgelesenen) passwörter angibt und es errechnet dann wie die passwörter berechnet werden=> man kann dann das passwort von einer beliebigen benutzername, punkte kombination errechnen lassen und dann eben damit den Highscore manipulieren:(
vielleicht kannst du die Datenmenge dennoch schwerer machen, und noch unvorhersehbarer:
für jede Übertragung einen neuen Schlüssel, analysieren kann man den kaum, man müsste schon das Verfahren exakt nachrechnen,
wie bereits oben beschrieben ist dieses nachrechnen leider nicht so schwer...
als Input brauchst du auch nicht irgendwas vom User eingegeben, können beliebige Zufallswerte sein, mit Random vor dem Senden erstellt,
das wäre auch zu einfach man gibt dann der php dateien einfach immer den gleichen wert (von dem weiß man dann ja das passwort).
beliebige Anzahl an Bits, je mehr desto schwieriger hoffentlich, wenn sinnvoll genutzt,
evtl. kannst du paar Regeln einbauen, Bit 5 kleiner als Bit 4, Bit 9 kleiner Bit 8 usw., das macht das Verwenden einer zufälligen Bitfolge um Wahrscheinlichkeit x inkorrekt,
die aktuelle Zeit würde ich immer noch reinnehmen, die kann auch vorher vom Server abgefragt werden, dessen Zeit,
bzw. dort ein Unique-Zähler, jede Anfrage bekommt eine neue eindeutige Id als Startwert,
oder gleich die kompletten 0-1000 Bytes Schlüssel vom Server senden lassen, nur für die nächsten 10 sec für eine Antwort gültig,
im Programm dann auf mehr oder weniger komplexe Weise den Schlüssel evtl. noch modifizieren, und letzlich mit den Nutzdaten verknüpfen,
allein gegen Analyse sollte ein nicht vorhersehbarer Schlüssel eigentlich reichen, dann nur Daten mit XOR verknüpfen,
ok, vielleicht nicht ganz so leicht

um gegen Nachbau des Codes zu schützen sollte es vielleicht komplizierter sein, aber da kann man auch viel falsch machen,
tausend scheinbar komplizierte Operationen sind letzlich nur eine Veränderung, kenne ich auch nicht so genau
Danke, ich werde noch ein bisschen herumprobieren;) Falls noch wer tipps hat immer nur her damit!;)

Grüße Fleckdalm
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Es ist eben nur das problem das es programme gibt bei denen man nur die beiden werte und die (mit wireshark ausgelesenen) passwörter angibt und es errechnet dann wie die passwörter berechnet werden

das ist aber nun wirklich vom eigenen Verfahren abhängig, nicht allgemein der Fall,
ich nehme an du hast selber nicht diese Programme, so dass es jetzt schwer wird Beispiele auszuprobieren,

aber wie gesagt: schon neue Schlüssel, so dass nicht ein und derselbe Key mit mehreren Scores (10000 Punkte, 100001 Punkte, 100002 Punkte) ausprobiert werden kann, und nach 5 Stunden Test dann mit ausgedachten Score benutzt wird, bringt viel,
dass das aber überhaupt jemand macht erscheint mir äußerst abwegig
 

Tobse

Top Contributor
Du könntest einen Timestamp mitschicken, der z.B. maximal um eine Sekunde der Serverzeit abweichen darf. Damit ist das manuelle eintragen von highscores schonmal fast unmöglich. Wenns dann aber ein programm gibt das da heisst "Highscore-Maker for XY" hast du eh verloren xD
 
S

SlaterB

Gast
wie gesagt Doppelanfrage,
erst Timestamp oder Ticket oder was auch immer vom Server abfragen und damit dann was anstellen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Highscore ( online ) Netzwerkprogrammierung 70
E Socket Online Highscore. Vorgehensweise Netzwerkprogrammierung 9
F HTTP Highscore Datenbank (Java <-> PHP) Netzwerkprogrammierung 17
F Schulprojekt erweitern - Online Quiz mit mehreren Clients - Was benötige ich ? Netzwerkprogrammierung 0
Da_Tebe Online MauMau Netzwerkprogrammierung 3
L Erstellen eines Online Multiplayer Apps Netzwerkprogrammierung 10
D Offline App mit online MYSQL - DB verbinden Netzwerkprogrammierung 14
K Mobile online Anwendung - Java mit SAP Netzwerkprogrammierung 2
G Online-Datendienst absichern Netzwerkprogrammierung 2
A Online-Server lima-city Netzwerkprogrammierung 11
A Einfachste Möglichkeit online zu speichern? Netzwerkprogrammierung 28
M Socket Server online stellen! Netzwerkprogrammierung 14
M Abfrage ob jemand bestimmtes Online ist. Netzwerkprogrammierung 4
S welche Rechner sind im lokalen Netz online Netzwerkprogrammierung 11
T Testen ob server online ist Netzwerkprogrammierung 10
G Server online Netzwerkprogrammierung 7
O Anfragen an Online-Datenbank stellen, z.b. wetter.com Netzwerkprogrammierung 6
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
A Socket Daten in Textdokument speichern? Netzwerkprogrammierung 1
F String in Datenbank speichern Netzwerkprogrammierung 1
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
H Applet soll XML-File auf Server speichern Netzwerkprogrammierung 6
G Video aus RTSP Stream speichern Netzwerkprogrammierung 8
S oAuth Key's verstecken/verschlüsseln/speichern Netzwerkprogrammierung 6
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
E stream speichern Netzwerkprogrammierung 5
C Datei auf server speichern Netzwerkprogrammierung 16
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
J VideoStream von Webseite lesen/speichern Netzwerkprogrammierung 7
A attachment einer Mail speichern Netzwerkprogrammierung 5
G Bild aus PHP-seite speichern Netzwerkprogrammierung 7
D Content einer email in sql-datenbank speichern Netzwerkprogrammierung 9
L Web-Seiten Inhalt auslesen und in textfile speichern Netzwerkprogrammierung 2
B Datei speichern unter Netzwerkprogrammierung 10
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
O eingehende Daten speichern Netzwerkprogrammierung 3
T Datei, auf einem Netzwerkrechner speichern. Netzwerkprogrammierung 11

Ähnliche Java Themen


Oben