Seite 4 von 4

Verfasst: 19.08.2008 12:44
von ts-soft
Für den durchschnittlechen Win-DAU genügt es, aber ansonsten:
Es gibt nichts sicheres!

Verfasst: 19.08.2008 13:14
von Batze
ts-soft hat geschrieben:Es gibt nichts sicheres!
Außer man verwendet ein passwort das genauso lang ist wie die daten...

Verfasst: 19.08.2008 13:15
von edel
X360 Andy hat geschrieben:Moin
Wie sicher ist das wenn man die zu "schütztende" datei in die exe "einpackt" und beim richtigen passwort diese "entpackt" wird.
eig 99,9% , eben bis auf die chanche das jemand das richtige passwort richtig eintippt oder ?
Wenn man es richtig macht, duerfte das ueberhaupt nicht zu knacken sein.
Allerdings sollte man dann auch das Passwort nicht mit in die Executable
packen und die Exe sollte dann auch mit dem Passwort verschluesselt werden.

Verfasst: 19.08.2008 14:53
von Kaeru Gaman
> Allerdings sollte man dann auch das Passwort nicht mit in die Executable packen

so zum Bleistift:

Code: Alles auswählen

w.s{32} = Space(32)

OpenConsole()

  Print("Enter Password: ")
  Inp.s = Input()
  PrintN("")
  PrintN("")

  w = Inp
  check.s = MD5Fingerprint(@w,32)

  If check = "0ac3091159924c1ffb5219e1ac46975b"
    PrintN("Password correct")
  Else
    PrintN("Password wrong")
  EndIf
  PrintN("")
  PrintN("Enter to End Program")
  Input()

CloseConsole()
... Ach wie gut dass niemand weiß, wie mein lustig Password heißt....

Verfasst: 19.08.2008 17:21
von X360 Andy
Ich kapiere die Befehle zum Packen / Entpacken nicht...
(http://www.purearea.net/pb/german/manua ... index.html)

Ich möchte =
Das die DateiXYZ von meinen Pc in die Exe gespeichert wird, und dann wenn Person X die Exe. öffnet und das Passwort richtig eingeben hat, die Datei auf seinen PC enpackt wird.

Hätte jemand vie. ein Beispiel Code ?

Verfasst: 19.08.2008 20:54
von Sicro
Kaeru Gaman hat geschrieben:

Code: Alles auswählen

If check = "0ac3091159924c1ffb5219e1ac46975b"
    PrintN("Password correct")
  Else
    PrintN("Password wrong")
  EndIf
Am besten wäre das Passwort überhaupt nicht (auch nicht indirekt, z.B. als MD5-Hash
wie du es hier machst) im Programm-Code einzufügen. So meinte es, denk ich, auch edel.

Ein Passwort zu ermitteln von dem nur ein Hash vorhanden ist, kann mit extrem
leistungsfähigen Computern erreicht werden, indem er alle Zeichenkombinationen
ausprobiert bis der Hash stimmt. Dies ist den Crackern bestimmt mit den vielen
Zombie-PCs mittlerweile möglich.

Verwendet man jedoch Hashes der verschlüsselten Dateien - noch besser: im unverschlüsselten
Zustand - ist die Kombinationsvielfalt natürlich extrem größer. Da würde es selbst mit den
Zombie-PCs viel zu lange dauern.

Zudem kommt noch dazu, dass Hash-Algorithmen nicht kollisionsfrei sind, was die
Findungszeit nochmals stark verlängert.

Um die Sache noch sicherer zu machen, könnte man überhaupt keine Hashes der Dateien beifügen.
So müssten die Cracker nach jedem Entschlüsselungsversuch die Header der Dateien mit einer
Header-Sammlung (Header von allen möglichen Dateiformaten) vergleichen lassen, um zu überprüfen,
ob sie mit dem aktuellen ermittelten Passwort richtig liegen. Sind Dateien ohne Header enthalten und
die Cracker haben auch kein Teil des Inhaltes der Datei, geben die Cracker mit höchster Wahrscheinlichkeit auf. :mrgreen:
X360 Andy hat geschrieben:Ich möchte =
Das die DateiXYZ von meinen Pc in die Exe gespeichert wird, und dann wenn Person X die Exe. öffnet und das Passwort richtig eingeben hat, die Datei auf seinen PC enpackt wird.
Ich habe dir schnell eine Procedure geschrieben, die Dateien mit einem Passwort ver- und entschlüsseln
kann. Die Verschlüsselung ist recht einfach, aber dennoch recht sicher, denk ich.

Code: Alles auswählen

Procedure EnDeCodeFile(InputFile.s,OutputFile.s,Password.s)
  Protected InputFileID, OutputFileID, PassLength
  Protected FileByte.b, PassByte.b
  
  InputFileID   = ReadFile(#PB_Any,InputFile)
  OutputFileID  = CreateFile(#PB_Any,OutputFile)
  PassLength    = Len(Password)
  
  If Not InputFileID Or Not OutputFileID
    If IsFile(InputFileID):  CloseFile(InputFileID):  EndIf
    If IsFile(OutputFileID): CloseFile(OutputFileID): EndIf
    ProcedureReturn #False
  EndIf
  
  RandomSeed(1)
  
  While Not Eof(InputFileID)
    FileByte.b = ReadByte(InputFileID)
    PassByte.b = Asc(Mid(Password,Random(PassLength - 1) + 1,1))
    WriteByte(OutputFileID,FileByte ! PassByte)
  Wend
  
  CloseFile(InputFileID)
  CloseFile(OutputFileID)
  
  ProcedureReturn #True
EndProcedure

; ------------------
; --  Verwendung  --
; ------------------

If EnDeCode("D:\MeineBankdaten.txt","D:\MeineBankdaten_encoded.txt","MeinPasswort")
  MessageRequester("Erfolgreich","Datei wurde verschlüsselt!")
Else
  MessageRequester("Fehler","Datei konnte nicht gelesen oder geschrieben werden!")
EndIf

If EnDeCode("D:\MeineBankdaten_encoded.txt","D:\MeineBankdaten_decoded.txt","MeinPasswort")
  MessageRequester("Erfolgreich","Datei wurde entschlüsselt!")
Else
  MessageRequester("Fehler","Datei konnte nicht gelesen oder geschrieben werden!")
EndIf
Der nachfolgende Code zeigt, wie du eine Datei in dein Programm integrieren kannst:

Code: Alles auswählen

DataSection
  FileStartPos:
  IncludeBinary "D:\MeineBankdaten.txt"
  FileEndPos:
EndDataSection
Und so kannst du die Datei wieder rausholen und abspeichern:

Code: Alles auswählen

FileID = CreateFile(#PB_Any,"MeineBankdaten.txt")
If FileID
  WriteData(FileID,?FileStartPos,?FileEndPos - ?FileStartPos)
  CloseFile(FileID)
EndIf
Datei packen: siehe Hilfe (Klick) - das bekommst du selbst hin :wink:
Datei entpacken:

Code: Alles auswählen

If OpenPack("D:\MeinPaket.pak")
  *FileData = NextPackFile()
  If *FileData
    FileID = CreateFile(#PB_Any,"D:\MeineBankdaten_entpackt.txt")
    If FileID
      WriteData(FileID,*FileData,PackFileSize())
      CloseFile(FileID)
    Else
      MessageRequester("Fehler","Datei konnte nicht entpackt werden!")
    EndIf
  Else
    MessageRequester("Fehler","Keine Datei zum Entpacken gefunden!")
  EndIf
  ClosePack()
Else
  MessageRequester("Fehler","Paket-Datei konnte nicht geöffnet werden!")
EndIf
Mfg Sicro

Verfasst: 27.09.2008 17:31
von Sicro
@X360 Andy:
Da schreibt man ausführliche Beispiel-Codes und bekommt nicht mal ein extrem schlichtes 3-Buchstaben Dankwort: Thx
Naja /:->

Mfg Sicro

Verfasst: 01.10.2008 21:06
von X360 Andy
Sicro hat geschrieben:@X360 Andy:
Da schreibt man ausführliche Beispiel-Codes und bekommt nicht mal ein extrem schlichtes 3-Buchstaben Dankwort: Thx
Naja /:->

Mfg Sicro
Ups hab den Thread gar nicht mehr gesehen ...
Danke (-:

Aber hab mir das damals als ich es gebraucht habe ( UND NICHT MEHR IN DEN THREAD GESCHAUT HABE ) so etwas selber zusammen gebastelt !(nur ohne verschlüsselung ... )

Aber trotzdem danke

(auch wenn das jetzt gezwungen rüber kommt warscheinlich)