Eigene Dateieindungen, die nur vom Programm lesbar sind

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

Eigene Dateieindungen, die nur vom Programm lesbar sind

Beitragvon Techno » 19. Mär 2020, 10:30 Eigene Dateieindungen, die nur vom Programm lesbar sind

Guten Tag,

ich programmiere ein Chatprogramm und speichere einige Daten in Dateien. Momentan sind es .txt-Dateien, die von jedem Benutzer gelesen werden können. Wie kann ich eine eigene Dateiendung erstellen, die nur von meinem Programm und nicht von anderen Nutzern auf dem PC gelesen werden kann?

Vielen Dank im Voraus für Antworten!
Grüße,

Techno
Techno
 
Beiträge: 12
Registriert: 14. Okt 2019, 09:24
OS, Lazarus, FPC: Windows 10 (L 2.0.0 FPC 3.0.4) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Ich934 » 19. Mär 2020, 10:51 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Ähm, ich glaub du hast hier ein grundlegendes Verständnisproblem. Eine Dateiendung verhindert nicht, dass ein anderes Programm den Inhalt lesen kann.

Das geht dann nur über eine entsprechend hochwertige Verschlüsselung.
Tipp für PostgreSQL: www.pg-forum.de
Ich934
Lazarusforum e. V.
 
Beiträge: 64
Registriert: 5. Mai 2019, 15:52
Wohnort: Bayreuth
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.0.4) | 
CPU-Target: x86_64, i386
Nach oben

Beitragvon wp_xyz » 19. Mär 2020, 10:55 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Dafür musst du ein binäres Dateiformat wählen, das heißt, du musst z.B. den Integer 253 in die Datei schreiben, nicht aber den String '253'.

Ich würde dir unbedingt davon abraten. Denn irgendwann wirst du Probleme mit der Datei haben, und da wirst du dankbar sein, dass es andere Programme gibt, die deine Datei lesen können. Auch wirst du irgendwann das Dateiformat erweitern - ein einziges eingefügtes Byte macht die ganze Datei unlesbar, und du musst den Reader entsprechend anpassen.

Daher würde ich unbedingt dazu raten, bei irgendwie text-basierten Datein zu bleiben. In der Regel sind das einfache txt-Dateien, die du nach eigenen Regeln erstellst, xml-Dateien oder meinetwegen auch sowas wie die ini-Dateien von Windows. Lazarus stellt gute Tools bereit, um diese zu lesen. Bei Problemen kannst du die Dateien auch in den System-Texteditor laden und kannst immer noch erkennen, was in der Datei steht.

Sinnvoller erscheint mir die Frage: Wie kann ich mein Programm dazu bringen, dass es nur eigne Dateien öffnet? Dafür kannst du einfach eine eigene Endung vergeben. Eine einfache Text-Datei wird dann nicht mehr automatisch mit dem System-Text-Editor geöffnet, bloß weil sie die Endung .txt hat. Du kannst auch daran denken, an den Anfang der Datei eine Kennung zu schreiben, die für dein Programm spezifisch ist. Beim Lesen wird zuerst die Kennung geprüft, und wenn diese nicht vorhanden ist, handelt es sich um eine Datei eines anderen Programms. Genauso kannst du so eine Versionsnummer unterbringen, denn das Problem mit verschiednen Versionen gibt es natürlich auch bei Text-Dateien.
wp_xyz
 
Beiträge: 3123
Registriert: 8. Apr 2011, 08:01

Beitragvon m.fuchs » 19. Mär 2020, 11:47 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Techno hat geschrieben:ich programmiere ein Chatprogramm und speichere einige Daten in Dateien. Momentan sind es .txt-Dateien, die von jedem Benutzer gelesen werden können. Wie kann ich eine eigene Dateiendung erstellen, die nur von meinem Programm und nicht von anderen Nutzern auf dem PC gelesen werden kann?

Hier wäre es interessant etwas über den Hintergrund zu erfahren. Warum willst du das machen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2184
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Timm Thaler » 19. Mär 2020, 22:51 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Techno hat geschrieben:ich programmiere ein Chatprogramm und speichere einige Daten in Dateien. Momentan sind es .txt-Dateien, die von jedem Benutzer gelesen werden können. Wie kann ich eine eigene Dateiendung erstellen, die nur von meinem Programm und nicht von anderen Nutzern auf dem PC gelesen werden kann?


Gar nicht. Man kann jede Datei lesen, egal welche Endung die hat, wenn man will. Man kann auch Binärformat lesen, wenns denn unbedingt sein muß bekommt man die Dateistruktur raus.

Eine sinnvolle Möglichkeit Daten für andere unlesbar zu speichern: Du musst die Daten verschlüsseln. Freepascal bietet dazu schon einige Möglichkeiten.
Timm Thaler
 
Beiträge: 1021
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Techno » 19. Mär 2020, 23:03 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Erst einmal vielen Dank für eure Antworten!

wp_xyz hat geschrieben:Sinnvoller erscheint mir die Frage: Wie kann ich mein Programm dazu bringen, dass es nur eigne Dateien öffnet? Dafür kannst du einfach eine eigene Endung vergeben. Eine einfache Text-Datei wird dann nicht mehr automatisch mit dem System-Text-Editor geöffnet, bloß weil sie die Endung .txt hat. Du kannst auch daran denken, an den Anfang der Datei eine Kennung zu schreiben, die für dein Programm spezifisch ist. Beim Lesen wird zuerst die Kennung geprüft, und wenn diese nicht vorhanden ist, handelt es sich um eine Datei eines anderen Programms. Genauso kannst du so eine Versionsnummer unterbringen, denn das Problem mit verschiednen Versionen gibt es natürlich auch bei Text-Dateien.


Das werde ich auf jeden Fall mal bei einigen meiner Dateien machen.

m.fuchs hat geschrieben:Hier wäre es interessant etwas über den Hintergrund zu erfahren. Warum willst du das machen?


Ich speichere momentan beispielsweise Chatverläufe in Dateien. So können sie allerdings vom Benutzer einfach verändert werden. Ich kenne mich nicht gut mit Datenbanken aus und weiß nicht, ob ich die Daten besser dort speichern sollte. Allerdings ist das Programm noch in der Anfangsphase, sodass es bis jetzt noch nicht zwingend notwendig war, die Daten anders zu speichern.
Grüße,

Techno
Techno
 
Beiträge: 12
Registriert: 14. Okt 2019, 09:24
OS, Lazarus, FPC: Windows 10 (L 2.0.0 FPC 3.0.4) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 19. Mär 2020, 23:12 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Techno hat geschrieben:
m.fuchs hat geschrieben:Hier wäre es interessant etwas über den Hintergrund zu erfahren. Warum willst du das machen?

Ich speichere momentan beispielsweise Chatverläufe in Dateien. So können sie allerdings vom Benutzer einfach verändert werden.

Ok, aber warum sollen sie das nicht dürfen? Datenmanipulation ist in vielen Fällen möglich.
Um das wirksam zu verhindern könntest du die Protokolle auf dem Server ablegen. Oder in einer Datei und diese dann signieren. Oder gleich in eine Blockchain.

Ist aber alles mit Aufwand verbunden. Lohnt sich dieser wirklich?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2184
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon af0815 » 20. Mär 2020, 06:54 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Techno hat geschrieben:Ich speichere momentan beispielsweise Chatverläufe in Dateien. So können sie allerdings vom Benutzer einfach verändert werden.

Die Frage ist, willst du nur Änderungen erkennen oder die Änderung verhindern. Bei ersteren könnten die Prüfsummen dazu gespeichert reichen, bei letzteres nur dann wenn du die Daten verschlüsselt. Letztlich ist es immer so, wieviel Aufwand willst du Treiben ? Letztlich ist alles knackbar, die Frage ist immer nur wieviel Aufwand von beiden Seiten investiert wird.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3924
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon Techno » 22. Mär 2020, 20:41 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

m.fuchs hat geschrieben:Ist aber alles mit Aufwand verbunden. Lohnt sich dieser wirklich?

Wahrscheinlich nicht, wenn ich so überlege. Das hört sich wirklich alles ziemlich aufwendig an...

Vielen Dank allerdings für eure Antworten!
Grüße,

Techno
Techno
 
Beiträge: 12
Registriert: 14. Okt 2019, 09:24
OS, Lazarus, FPC: Windows 10 (L 2.0.0 FPC 3.0.4) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Warf » 22. Mär 2020, 20:45 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

Also grundsätzlich macht es bei nem chat definitiv sinn seine Nachrichten zu verschlüsseln (Beispiel, man teilt sich den PC mit jemand anderem, dann möchte man nicht unbedingt das der ungefragt die chatnachrichen lesen kann).

Daher würde ich dir empfehlen: Lass den nutzer ein Passwort festlegen und verschlüssel die daten dann mit dem Passwort. Ganz einfach zu benutzen ist dafür DCPCrypt und als Cipher (Verschlüsselungsalgorithmus) würde ich dir Rijandael (AES) empfehlen. Ist schnell und Sicher.
Warf
 
Beiträge: 1369
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: MacOS | Win 10 | Linux | 
CPU-Target: x86_64
Nach oben

Beitragvon Techno » 27. Mär 2020, 22:38 Re: Eigene Dateieindungen, die nur vom Programm lesbar sind

@Warf

Danke! Das werde ich ausprobieren!
Grüße,

Techno
Techno
 
Beiträge: 12
Registriert: 14. Okt 2019, 09:24
OS, Lazarus, FPC: Windows 10 (L 2.0.0 FPC 3.0.4) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste

porpoises-institution
accuracy-worried