it-swarm.com.de

Was sind gute Techniken, um binäre Unterschiede zu visualisieren?

Ich interessiere mich besonders für diff-basierte Visualisierungen. Code-Diffs sind am einfachsten und einfachsten, da sie lange Zeit verwendet werden und viele Beispiele für Ansichten mit 1, 2 und 3 Fenstern enthalten. In dieser Ansicht mit zwei Fenstern wird beispielsweise ein Zusatz angezeigt: Code Diff


Eine andere Art der Diff-Visualisierung ist das Graph-Diffing, das häufig in Graph-Ansichten des Assembly-Codes verwendet wird. Hier ein Beispiel: Graph Diff


Und am wenigsten ausgefeilt ist das binäre Diffing (Diffing beliebiger Binärdateien, um Änderungen in einzelnen Bytes zu sehen). Dies ist der Bereich, der am wenigsten Liebe bekommt. Hier einige typische Beispiele:

Binary Diff 1Binary Diff 2


Beide sind ziemlich schlecht. Ich möchte sie erweitern und einen etwas brauchbaren Unterschied zwischen großen Binärdateien machen, die ein paar Gigabyte groß sind. Um dies ins rechte Licht zu rücken, kann ich ungefähr 1696 Bytes auf einen Bildschirm passen. Wir sprechen von 633.102 Bildschirmen mit einer lesbaren Schriftgröße. Es ist also nicht praktisch, nur die Schriftgröße zu verkleinern.

Ich frage mich, welche Ideen Menschen haben, um binäre Unterschiede auf leicht navigierbare Weise zu visualisieren. Ich denke, es muss eine Art Zoomfunktion geben, die in einen Standard-Binärdiff hineinzoomen kann, an den die Leute gewöhnt sind. Ich würde gerne die Gedanken anderer Leute sehen.

10
Tom Ritter

Ich würde mir eine ähnliche Benutzeroberfläche vorstellen

http://learn.genetics.utah.edu/content/begin/cells/scale/

Hier können Sie die gesamte Datei auf einer großen Ebene sehen und dann in bestimmte Abschnitte scrollen, die als unterschiedlich gekennzeichnet sind. Ich würde mir das eher wie Google Maps vorstellen, jedoch in Bearbeitung, aber inhaltlich zu diesem Link.

Außerdem sehen Sie in diesem Link ein Raster mit einem Größenvergleich zu Ihrem Standort. Dies kann ein farbcodierter Bereich sein, um zu sehen, dass Sie in verschiedene Bereiche zoomen, und die anderen unterschiedlichen Bereiche befinden sich dort in Beziehung.

Es klingt sehr schwierig, sich ein Bild zu machen, da die Binärdarstellung schier skaliert und nicht konsistent ist.

4
James Wilkinson

Der Vergleich von willkürlichen Binärdateien ist ein schwieriges Problem - diese Schwierigkeit wird hauptsächlich dadurch verursacht, dass der Differenzierungsalgorithmus nur sehr wenige Informationen über die Semantik der Bytes enthält.

Im Vergleich (kein Wortspiel beabsichtigt) ist das Vergleichen von Quellcodedateien viel einfacher, da die Semantik der Dateien viel komplexer ist - Unicode- (oder ASCII-) Codepunkte, die in einer Folge von Zeilen angeordnet sind.

Ebenso bin ich sicher, dass Ihre Binärdateien eine Art Struktur enthalten. Durch die Nutzung dieser Struktur wird es viel einfacher, sowohl sinnvolle Unterschiede zu finden als auch diese Unterschiede zu visualisieren.

Stellen Sie sich als Analogie zu Ihrem Problem vor, Sie versuchen, einen binären Vergleich von Zip-Dateien durchzuführen, ohne dem Tool die Struktur der Datei beizubringen. Es ist sehr schwer, etwas Sinnvolles zu finden. Wenn das Tool jedoch die Struktur von Zip-Dateien versteht, werden große Teile des Problems viel einfacher, da Sie dieses Wissen über die Struktur nutzen können, um auf einer höheren Abstraktionsebene zu arbeiten.

Beispiele beinhalten:

  • Wenn Mitgliedsdateien einfach in einer anderen Reihenfolge gespeichert wurden
  • Einfache Umbenennung von Dateien
  • Dateien, die identisch sind, aber mit unterschiedlichen Einstellungen komprimiert wurden

Mit einigen Informationen zur Semantik Ihrer Binärdateien können wir sicher (gemeinsam) einige gute Visualisierungen vorschlagen.

3
Bevan