AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Datei auf Indikatoren für Binärdatei testen?
Thema durchsuchen
Ansicht
Themen-Optionen

Datei auf Indikatoren für Binärdatei testen?

Ein Thema von PeterPanino · begonnen am 9. Mai 2015 · letzter Beitrag vom 13. Mai 2015
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#11

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 16:50
Kann man davon ausgehen, dass UTF-16- und UTF-32-Dateien statistisch signifikant so gut wie immer einen BOM enthalten?
Auf keinen Fall! zB. für XML ist es nicht erforderlich.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 17:03
Wie ich schon zu Anfang sagte: Ich bin mir der Problematik dieser Unterscheidung bewusst. Letztlich wird es wohl darauf hinauslaufen, für welchen speziellen Zweck man die Unterscheidung benötigt. Denn man könnte den Aufwand auf die Spitze treiben, indem man z.B. eine semantische Prüfung für alle existierenden Sprachen einbaut usw.

Könnt ihr aber die heuristische Prüfung etwas näher spezifizieren, vielleicht sogar mit etwas Code unterlegen (bezogen auf die obige Funktion).
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 17:21
Mir ist gerade ein Gedanke gekommen, wie man eine Heuristik abseits von BOM & Co. implementieren könnte: Es müsste doch möglich sein, eine Art statistischen "Streuungs"-Faktor (oder grob gesagt "statistischer Fingerabdruck") der Bytes zu berechnen, der bei "Binärdateien" signifikant von "Textdateien" abweichen sollte. Was haltet ihr davon?

Geändert von PeterPanino ( 9. Mai 2015 um 17:23 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#14

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 18:37
@PeterPanino

Dein Problem zeigt gewisse Ähnlichkeiten zu diesem dort
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 21:43
Ich glaube, dass du einiges missverstehst ... vielleicht ist es die Perspektive?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#16

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 22:00
Mir ist gerade ein Gedanke gekommen...eine Art statistischen "Streuungs"-Faktor (oder grob gesagt "statistischer Fingerabdruck") der Bytes zu berechnen, der bei "Binärdateien" signifikant von "Textdateien" abweichen sollte. Was haltet ihr davon?
Ist viel zu aufwendig und unsicher. Meine bisherigen Tests haben gezeigt, ..
Das ist genau das, was ich vorgeschlagen habe: Einige Zeichen können in Textdateien nicht vorkommen, aber auf der anderen Seite müsste man noch etwas genauer analysieren, was der Unterschied zwischen einer Datei ist, die einen Text enthält, und einer 'Binärdatei', die zufällig nur Buchstaben enthält.
Aber deine Idee ist natürlich viel besser. Klar.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#17

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 22:18
Ich glaube, dass du einiges missverstehst ... vielleicht ist es die Perspektive?
Was meinst du damit, ich würde einiges, insbesondere die Perspektive, mißverstehen? Welche Perspektive meinst du? Könntest du vielleicht etwas genauer bezeichnen, was ich deiner Ansicht nach mißverstehe? Wie sonst sollte ich mein Mißverständnis nachvollziehen und auflösen können?

Die Menge der verschiedenen Dateiformate in Verbindung mit verschiedenen Sprachen ist so zahlreich, daß mir dein Ansinnen schier unmöglich sicher zu lösen scheint. Ist eine gezippte Textdatei noch eine Textdatei? Oder eine verschlüsselte Textdatei? Ist eine RTF-Datei mit Grafiken und Ole-Objekten eine gemischte Datei? Oder eine Exe-Datei mit zahlreichen lesbaren Textabschnitten?

Gehe ich richtig in der Annahme, daß du eigentlich herausfinden möchtest, ob eine Datei binär übertragen werden soll oder nicht?

Was man wirklich einigermaßen sicher herausfinden kann ist, ob eine Datei einem bekannten Format entspricht, z.B. JPEG oder ASCII oder eben auch Executables oder XML etc., wie das z.B. das Programm OpenWith macht. Erst dann, wenn eine Datei keiner der bekannten Dateiformate zugeordnet werden kann, sollte man tiefergehende Analysemethoden einsetzen. Meines Wissens nach gibt es bislang keine Software und keinen bekannten Algorithmus, um Binärdateien zuverlässig von Textdateien unterscheiden zu können.

Mir scheint es daher sinnvoll, dich auf die im Zusammenhang mit deinem Projekt auftretenden Dateiformate zu konzentrieren bzw. zu beschränken, falls das irgendwie möglich ist und nicht potentiell alle bekannten und unbekannten Dateiformate auftreten könnten. Der entsprechende Wikipedia-Artikel bietet eine gute Einstiegsseite zu diesem Thema, insbesondere der Link zur Liste der Dateinamenserweiterungen ist zu empfehlen. Wenn du dann alle denkbaren Dateiformate in deine Prüfung integriert hast, wird kaum noch was übrigbleiben, das keinem bekannten Dateiformat entspricht. Weitere Links:

Informationstechnische Grundlagen (ITG)/ Dateiformate
Übliche Dateitypen
Dateiformate für das elektronische Publizieren
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 22:56
Aber deine Idee ist natürlich viel besser. Klar.
Kinder, es ist doch genug Sand für alle zum Spielen da ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 23:10
Nur um das Ganze nochmal kurz zu erklären:

* man kann nicht prüfen "ist das eine Textdatei"
* man kann nur prüfen "ist das keine Datei eines/mehrerer bestimmter Textformate" (vermutlich ungültige Zeichen/Kodierungen enthalten)
* Kodierungen ala UTF-8 haben den Vorteil, daß sie erkennbare/prüfbare Strukturen besitzen (solange Nicht-ASCII-Zeichen enthalten sind)
* soll es genauer sein, dann muß man eine linguistische Analyse vornehmen (also auf den Inhalt, ob der einem erlaubten Format entspricht)
* 100%ig sicher kann aber niemals etwas werden

Man muß also zuerst versuchen die Kodierung zu erkennen und kann sich nach Dekodierung den Inhalt ansehn.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Mai 2015 um 23:15 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Datei auf Indikatoren für Binärdatei testen?

  Alt 9. Mai 2015, 23:11
Vielleicht sollte ich das, was ich in der Eingangsfrage gesagt habe, nochmals wiederholen, um Missverständnisse wie jenes von "perlsau" aufzuklären: Ich habe nicht gesagt, dass ich den Anspruch habe, ein perfektes Unterscheidungskriterium für Text- und Binärdateien zu schaffen. (Denn das kann es nicht geben). Ich habe ausdrücklich danach gefragt, welche weiteren Indikatoren für Binärdateien es noch geben könnte. Nichts anderes. Da kam der nützliche Hinweis zu den ControlBytes und zu den Doppel-NullBytes, was ich auch umgesetzt habe. Nochmals danke dafür. Auch für alle anderen sachlichen Anregungen vielen Dank! Aber bitte sachlich und erwachsen bleiben ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz