Skip to content
bjornstahl edited this page Jun 24, 2015 · 4 revisions

Multiple-File Sensor

This sensor works on multiple input files in a tiled based output format, that permits you to quickly compare files of similar original and look for slight deviations. This is a useful feature when, for instance, you are looking into reversing unknown file formats where you have multiple samples of the same format.

mfile_ss

The primary window here is the one used for navigating, stepping etc. and shares most options and controls with the regular file sensor. The key difference and limitation is that there is no curve mapping or similar features, you are locked to the tile format used (although the size of tiles, and the border between tiles are both configurable).

Meta + number- keys can also be used to quick-zoom to/from a specific tile.

The secondary window here highlights common or deviating parts of each tile. Using the cycle- mode button, colors can be inverting from highlighting common values (bright green equals a 100% match between tiles) and deviating (bright green is a complete mismatch)

Lock- stepping

By doubleclicking a tile, its right-side border turns yellow. This means that step-lock is enabled. This means that stepping operations will only apply to the locked tile(s), double-click again to toggle off.

This feature helps to re-align tiles that have deviated due to length- fields or other file-format dependent variable datablock.

Meta- tiles

During sensor launch, it is also possible to specify comparison tiles that show the effect of some binary operations (ADD/DEC/XOR/etc.). The format looks like this:

      ./sense_mfile -c0,1,XOR -c0,3,AND file1 file2 file3 file4

This will compare 4 different files, and add two more tiles that are generated based on the contents of the (first and second) and (first and fourth) files, applying the XOR and AND operators respectively.

Comparison Model

There is also a custom 3D view for this sensor, right-click the data window to normal popup, and select Comparison Model. The view looks like this:

mview_comp

Where each cell gets its own XZ layer spaced out along the Y axis. The first cell is drawn as normal (using the last global LUT that has been set) and the others are drawn to show if they match or deviate from the correspondin.

This is to complement the secondary window to help pin-point which bytes that differ in which file. The mode toggle (default-key: m) switches between showing match or mismatch while the point-sz (default-keys: o, p) increase or decrease the active point size.

Caveats

  • Mapping to translators is fairly unreliable as the border and tile- format mapping into eachother makes the useful data window rather small.

  • This sensor works best in 1byte per pixel packing mode on rather small input sets.

Planned Changes

  • Add support for scriptable stateful meta- tiles.
Clone this wiki locally