NAME
unber - ASN.1 BER Decoder
SYNOPSIS
unber [-1] [-iindent] [-m] [-p] [-sskip] [-thex-string] [-] [infile...]
DESCRIPTION
unber presents the internal structure of BER-encoded files as human
readable text. A single dash denotes the standard input.
(The DER and CER formats are 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.
-m Generate shorter output while still preserving BER encoding
information.
-p Do not attempt pretty-printing of known ASN.1 types (BOOLEAN,
INTEGER, OBJECT IDENTIFIER, etc). By default, some ASN.1 types
are converted into the text representation. This option is
required for enber(1).
-s skip
Ignore the first skip bytes in the input stream; useful for
stripping off lower level protocol framing data.
-t hex-string
Interpret the hex-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 Encoding 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
will never appear in the output produced using -p command line
option.
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="6" A="SEQUENCE">
<P O="8" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER" F>832970823</P>
</C O="14" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
</I O="14" T="[UNIVERSAL 0]" TL="2" L="16">
EXAMPLES
Decode the given Tag/Length sequence specified in hexadecimal form:
unber -t "bf 20"
Decode the 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 and encode it back into an identical 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, invalid BER framing
directly causes invalid XML output.
The enber(1) utility understands such XML correctly.
SEE ALSO
enber(1), asn1c(1)
AUTHORS
Lev Walkin <vlm@lionet.info>