Table of Contents
Opening a file with this FileHandler will display a three pane window as shown below:
The upper pane contains a hierarchical representation of the decoded data in its “Data” tab and a trace of the decoding process in the “Trace” tab. Both tabs provide the same information while the former is more user friendly and the latter is better suited for text based comparison for example.
The lower left pane contains a HEX dump with the associated ASCII representation of the full loaded data. Selecting an item in the top pane will highlight the correponding octets (bytes) in the left part of this pane. The highlighted section includes the full item, e.g. its tag and all its data.
The lower right pane contains a textual representation of the item selected in the hierarchy tree in the top pane. It is empty if no item is currently selected. In case of a decoding error, this displays the full error message of the first encountered error (often there are following errors after the first one) and will never display anything else.
The columns in the hierarchy table have the following meanings:
Type | Shows the type of the item as far as it can be determined. In case of data items with standardized tag numbers, this will give the name of the found type such as INTEGER, BOOLEAN or the like. In case of custom tags (CONTEXT SPECIFIC, APPLICATION or PRIVATE) the type will either be UNKNOWN STRUCTURE or UNKNOWN VALUE, depending on whether it is a constructed or primitive value. |
Status | This is normally empty and will show an error icon in case decoding of this item failed for some reason. |
Tag class | States the class of the tag which introduces this item. This can be one of UNIVERSAL, CONTEXT SPECIFIC, APPLICATION or PRIVATE. |
Tag # | The tag number of the item. In case of UNIVERSAL (standardized) tags, this allows to determine the exact type of the item. Otherwise the type cannot be known without the corresponding ASN.1 syntax definition (not yet supported) and thus has to be guessed by the user. |
Encoding | States whether the item is encoded in a primitive (more compact) way or in the more verbose constructed way. Certain types only allow one of the two while others allow both. |
Offset | The zero based offset from the beginning of the file, where the first octet (byte) of the item occurs. E.g. this will be zero for the first top most item (the first PDU in the file). |
Length | The length of the items data not including its tag, e.g. the length of the value data for primitive types or the combined length of all contained items if it is constructed. In case the tag is encoded with an indefinite length, this will display EOC (for End-Of-Content marker). |
Name | The name of the item. This will state [PDU] for top most items (e.g. which have no parent in the hierarchy) and the index within its parent for all child (e.g. non-PDU) items in brackets. |
Value | A text representation of the items value. The exact content of this depends on the items type. E.g. for string based types this will be the contained text, for numerical types the numbers value, etc. In case the items type is not known, a HEX dump of the contained octets will be displayed here. Container types such as SEQUENCE and SET will just state the number of contained child items here. |
Double clicking on an items value (in the Value column of the hierarchical tree table) will attempt to decode that value in a new dialog as if it would have been loaded as a file of its own. The appearing dialog provides the same user interface as the main FileHandler window and can open other dialogs recursively. It has to be closed however to return to its parent (it's a modal dialog).
Double clicking on an items type (in the Type column of the hierarchical tree table) will open or close the tree node if it is a constructed item, thus showing/hiding the items child items. It has no effect on primitive items.
Right clicking on an items type (in the Type column of the hierarchical tree table) will display a context menu to reinterpret that item as a different type. This allows to perform some kind of educated guessing on values of unknown type or of values which are encoded as OCTET or BIT STRINGs but which are known to contain another ASN.1 encoding.