versteckte Datei öffnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Für den durchschnittlechen Win-DAU genügt es, aber ansonsten:
Es gibt nichts sicheres!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

ts-soft hat geschrieben:Es gibt nichts sicheres!
Außer man verwendet ein passwort das genauso lang ist wie die daten...
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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 ?
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

Beitrag 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
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

Beitrag 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
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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)
Antworten