Savedateien cheatsicher?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

pile

Betreff: Savedateien cheatsicher?

BeitragFr, Feb 13, 2009 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, mich würde gern interessieren, wie ihr eure Savedateien cheatsicher macht? Wenn ich z.B. was in einer Textdatei oder ähnliches abspeichere, könnte ich die Datei mit leichtigkeit manipulieren. Und da jeder der Spiele (und auch Programme) programmiert sich mit den Dateien befassen muss, die Variablen auch nach dem ersten Programmlauf verfügbar machen, denke ich das jeder schon vor dieser Frage stand.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%
 

DjDETE

BeitragFr, Feb 13, 2009 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht mit Writeline sondern mit Writestring. Am besten wäre es natürlich, wenn du es mit Writebyte machst (vorher die Strings zerlegen) und den Wert immer um eine Konstante Zahl veränderst, oder du schreibst z.B. für die Variable Energie zwei Bytes, die man addieren/subtrahieren/multiplizieren/dividieren muss, aber eine von den Dateien muss/darf nicht in ein Muster passen.
MfG DeTe
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Eingeproggt

BeitragFr, Feb 13, 2009 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich empfehle eine Mini-Verschlüsselung mit Xor

Code: [AUSKLAPPEN]
test$=Xor_Code("Hallo!",100)
Print test$
Print Xor_Code(test$,100)

WaitKey()
End

Function Xor_Code$(txt$,key) ;Key nur von 0 bis 255 sinnvoll
   Local temp$=""
   For i=1 To Len(txt$)
      temp$=temp$+Chr(key Xor Asc(Mid(txt$,i,1)))
   Next
   Return temp$
End Function


Einfach und effektiv. Klar, kann leicht geknackt werden aber für die Zwecke eines Hobby-Programmierers reicht das schon.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

c64

BeitragSa, Feb 14, 2009 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
B3DCODE
Code: [AUSKLAPPEN]


; SECUREDATA V1.0
;----------------

; author : C64

;----------------


; EXAMPLE
; -------

Local bank=CreateBank (10001)
For c=0 To 10000
PokeByte (bank,c,Rand(255))
Next

saveSecure"testfile.ssc",bank,666
loadSecure"testfile.ssc",   666

                                    
Function SaveSecure (filename$,bank,securecode=1)

   Local checksum      
   Local   filelength      
   Local   currentbyte   
   Local   file      
      
      file=WriteFile (filename)

      filelength=BankSize (bank)
      
         WriteInt file,filelength
      
         For c = 0 To filelength
      
            currentbyte=PeekByte (bank,c)
         
            WriteByte file,currentbyte
         
            checksum=checksum+securecode*(currentbyte+c)
         
         Next
         
      WriteInt file,checksum
      Print checksum   
      CloseFile file
      
End Function


Function LoadSecure (filename$,securecode=1)
                        
   Local checksum      
   Local   sum         
   Local   filelength      
   Local   currentbyte   
   Local   file      
   Local   bank      
                  
      file=OpenFile   (filename)

      If file
                     
      bank      =CreateBank ( ReadInt(File) )
                                 
         filelength=BankSize ( bank )
                              
         For  c = 0 To filelength
      
           If Eof (file) RuntimeError "?!" Exit
         
            currentbyte=ReadByte (file)
         
            PokeByte bank,c,currentbyte
         
            checksum=checksum+securecode*(currentbyte+c)
         
         Next
      
         
      sum=ReadInt (file)
      
      If checksum = sum
         
         CloseFile file
   
         Return    bank
         
      Else
      
         CloseFile file

            Print checksum   
         RuntimeError  "Load failed "+sum
               
      EndIf          

      Else
      
         RuntimeError "File failed"
            
      EndIf

End Function


BMAXCODE
Code: [AUSKLAPPEN]


' SECUREDATA V1.0
'----------------

' author : C64

'----------------

Rem

' EXAMPLE
' -------

Local bank:TBank=CreateBank (10001)
For Local c:Int=1 To 10000
PokeByte (bank,c,Rand(255))
Next

saveSecure"testfile.ssc",bank,666
loadSecure"testfile.ssc",   666

EndRem
               
Function SaveSecure (filename:String,bank:TBank,securecode:Int=1)

   Local checksum      :Int            ..
      ,filelength   :Int            ..
      ,currentbyte   :Byte         ..
      ,file      :TStream         ..
      
      file=WriteFile (filename)

      filelength=BankSize (bank)
      
         WriteInt file,filelength
      
         For Local c:Int = 1 To filelength-1
      
            currentbyte=PeekByte (bank,c)
         
            WriteByte file,currentbyte
         
            checksum:+securecode*(currentbyte+c)
         
         Next
         
      WriteInt file,checksum
      Print checksum   
      CloseFile file
      
EndFunction


Function LoadSecure:TBank (filename:String,securecode:Int=1)
                        
   Local checksum      :Int            ..
      ,sum         :Int            ..
      ,filelength   :Int            ..
      ,currentbyte   :Byte         ..
      ,file      :TStream         ..
      ,bank      :TBank         ..
            
      file=OpenFile   (filename)

      If file
                     
      bank      =CreateBank ( ReadInt(File) )
                                 
         filelength=BankSize ( bank )
                              
         For Local c:Int = 1 To filelength-1
      
           If Eof (file) Exit
         
            currentbyte=ReadByte (file)
         
            PokeByte bank,c,currentbyte
         
            checksum:+securecode*(currentbyte+c)
         
         Next
      
         
      sum=ReadInt (file)
      
      If checksum = sum
         
         CloseFile file
         Return    bank
      
      Else
      
         CloseFile file

         Notify "Load failed "+sum
         
      EndIf          

      Else
      
         Notify "File failed"
   
      EndIf

EndFunction
         



SecureCode muss beim Speichern und laden gleich sein, deine Daten in eine Bank und aus dieser heraus zu bekommen musst du allein handeln.

mfg. C64
Betreten verboten! Kinder haften für ihre Eltern!

pile

BeitragSo, Feb 15, 2009 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Super, vielen Dank an Euch. Damit kann ich schon einiges Anfangen!
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Pummelie

BeitragMi, Feb 18, 2009 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Art daten zu sichern ist es sie an den komischsten orten abzuspeichern.

z.b.
C:\Windows\System32\user88.dat

ich schätze mal niemand ändert so gern was in dem ordner, und da muss man auch nichts verschlüsseln.
It's done when it's done.

BtbN

BeitragMi, Feb 18, 2009 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine sehr schlechte Idee, weil man normalerweise keinerlei rechte hat, dort irgendetwas zu schreiben, ausser wenn man mit Windows 98 arbeitet oder unter windows XP als administrator. Von beidem ist stark abzuraten, von deiner Lösung auch.

kog

BeitragMi, Feb 18, 2009 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu kommt, das man den System32 Ordner zumüllt oder nicht?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 18, 2009 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, und man kann ganz leicht mit Filemon oder anderen 'besseren' Tools ganz leicht feststellen, wohin ein Datenzugriff stattfindet.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group