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 1 von 2  1 2      
Dejan Vu
(Gast)

n/a Beiträge
 
#1

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

  Alt 9. Mai 2015, 16:38
Wieso findest Du meine Heuristik denn unsicher? Wie willst du denn sonst Text-Dateien von irgendwelchen anderen Dateien unterscheiden? Genau genommen müsstest Du auch noch prüfen, ob die Datei Wörter enthält, oder zählst Du eine Base-64 Codierung auch zu Textdateien? Also, 'FXYyya678pphr'.. ist das jetzt eine Textdatei?

Und die paar Bytes an BOM können ja auch in jeder Binärdatei am Anfang stehen, ergo solltest du noch die nächsten paar Bytes analysieren. Meinst du nicht auch?
  Mit Zitat antworten Zitat
PeterPanino

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

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
 
#3

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
 
#4

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
 
#5

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
Perlsau
(Gast)

n/a Beiträge
 
#6

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
Dejan Vu
(Gast)

n/a Beiträge
 
#7

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
PeterPanino

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

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.326 Beiträge
 
Delphi 12 Athens
 
#9

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.
Ein Therapeut entspricht 1024 Gigapeut.

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
 
#10

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

  Alt 9. Mai 2015, 23:18
* man kann nur prüfen "ist das keine Datei eines/mehrerer bestimmter Textformate" (vermutlich ungültige Zeichen/Kodierungen enthalten)
* 100%ig sicher kann aber niemals etwas werden
GENAU. Deshalb habe ich meine Funktion auch so angelegt, dass auf Indikatoren für Binärdateien geprüft wird (und nicht auf Indikatoren für Textdateien). Und das Verfahren an sich kann immer nur eine ANNÄHERUNG sein. Außerhalb dieser Funktion wird in meinem Programm natürlich noch anderes wie etwa Datei-Endungen usw. geprüft.

Geändert von PeterPanino ( 9. Mai 2015 um 23:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 08:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz