man unber (Commandes) - ASN.1 BER Decoder

NAME

unber - ASN.1 BER Decoder

SYNOPSIS

unber [-1] [-iindent] [-p] [-tdata-string] [-] [infile...]

DESCRIPTION

unber takes the BER-encoded files and dumps their internal structure as human readable text. A single dash represents the standard input. (The DER and CER formats are both subsets of the BER, and are also supported.)

OPTIONS

-1
Do not attempt to read the next BER structure after the first one. This may be useful if the input contains garbage past the single BER sequence. By default, unber continues decoding until the end of file (input stream).
-i indent
Use the specified number of spaces for output indentation. Default is 4 spaces.
-p
Do not attempt pretty-printing of known ASN.1 types (OBJECT IDENTIFIER, INTEGER, BOOLEAN, etc). By default, some ASN.1 types are converted into the text representation. This option is required for enber(1).
-t data-string
Interpret the data-string as a sequence of hexadecimal values representing the start of BER TLV encoding. Print the human readable explanation.

XML FORMAT

unber dumps the output in the regular XML format which preserves most of the information from the underlying binary encoding.

The XML opening tag format is as follows:

<tform O="off" T="tag" TL="tl_len" V="{Indefinite|v_len}" [A="type"] [F]>
Where:
tform
Which form the value is in: primitive ("P") or constructed ("C") or constructed with indefinite length ("I")
off
Offset of the encoded element in the unber input stream.
tag
The tag class and value in human readable form.
tl_len
The length of the TL (BER Tag and Length) encoding.
v_len
The length of the value (V, encoded by the L), may be "Indefinite".
type
Likely name of the underlying ASN.1 type (for UNIVERSAL tags).
[F]
Indicates that the value was reformatted (pretty-printed). This may only appear in the output as long -p command line option is not specified.

Sample XML output:

<I O="0" T="[UNIVERSAL 16]" TL="2" V="Indefinite" A="SEQUENCE">
  <P O="2" T="[UNIVERSAL 19]" TL="2" V="2" A="PrintableString">US</P>
  <C O="6" T="[UNIVERSAL 16]" TL="2" V="11" A="SEQUENCE">
    <P O="8" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER" F>832970823</P>
  </C T="[UNIVERSAL 16]" A="SEQUENCE">
</I O="14" T="[UNIVERSAL 16]" A="SEQUENCE">

EXAMPLES

Decode the given Tag/Length sequence given in hexadecimal form:

    unber  -t "bf 20"
Decode the given DER file using two-spaces indentation:
    unber  -i 2   filename.der
Decode the binary stream taken from the standard input:
    cat ... | unber -
Decode the binary stream into the same stream (see enber(1)):
    cat ... | unber -p - | enber - > filename.ber

FOOTNOTES

The constructed XML output is not necessarily well-formed.

When indefinite length encoding is being used, the BER sequence, which is not terminated with the end-of-content octets, will cause the terminating </I> XML tag to disappear. Thus, the invalid BER framing directly causes invalid XML output.

The enber(1) utility understands this convention correctly.

SEE ALSO

AUTHORS

Lev Walkin <vlm@lionet.info>