mirror of https://gerrit.osmocom.org/asn1c
116 lines
3.8 KiB
Groff
116 lines
3.8 KiB
Groff
.de Vb
|
|
.sp
|
|
.ft CW
|
|
.nf
|
|
..
|
|
.de Ve
|
|
.ft R
|
|
.fi
|
|
.sp
|
|
..
|
|
.TH UNBER 1 "\*(Dt" "ASN.1 BER Decoder" "ASN.1 BER Decoder"
|
|
.SH NAME
|
|
unber \- ASN.1 BER Decoder
|
|
.SH SYNOPSIS
|
|
unber [\fB-1\fR] [\fB-i\fRindent] [\fB-m\fR] [\fB-p\fR] [\fB\-s\fR\fIskip\fR] [\fB\-t\fR\fIhex-string\fR] [\fB-\fR] [\fIinfile\fR...]
|
|
.SH DESCRIPTION
|
|
unber takes the BER-encoded files and dumps their internal structure as human readable text.
|
|
A single dash represents the standard input.
|
|
.sp
|
|
(The DER and CER formats are both subsets of the BER, and are also supported.)
|
|
.SH OPTIONS
|
|
.TP
|
|
\fB\-1\fR
|
|
Do \fInot\fR 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).
|
|
.TP
|
|
\fB\-i\fR \fIindent\fR
|
|
Use the specified number of spaces for output indentation. Default is 4 spaces.
|
|
.TP
|
|
\fB\-m\fR
|
|
Generate minimum amount of output while still preserving BER encoding information.
|
|
.TP
|
|
\fB\-p\fR
|
|
Do \fInot\fR 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 \&\fIenber\fR\|(1).
|
|
.TP
|
|
\fB\-s\fR \fIskip\fR
|
|
Ignore the first \fIskip\fR bytes in the input stream; useful for stripping off
|
|
lower level protocol framing data.
|
|
.TP
|
|
\fB\-t\fR \fIhex-string\fR
|
|
Interpret the hex-string as a sequence of hexadecimal values representing
|
|
the start of BER TLV encoding. Print the human readable explanation.
|
|
.SH XML FORMAT
|
|
unber dumps the output in the regular XML format which preserves most of the
|
|
information from the underlying binary encoding.
|
|
.P
|
|
The XML opening tag format is as follows:
|
|
.Vb
|
|
\&<\fBtform\fR O="\fBoff\fR" T="\fBtag\fR" TL="\fBtl_len\fR" V="{Indefinite|\fBv_len\fR}" [A="\fBtype\fR"] [\fBF\fR]>
|
|
.Ve
|
|
Where:
|
|
.TP
|
|
\fBtform\fR
|
|
Which form the value is in: primitive ("P") or constructed ("C") or constructed with indefinite length ("I")
|
|
.TP
|
|
\fBoff\fR
|
|
Offset of the encoded element in the unber input stream.
|
|
.TP
|
|
\fBtag\fR
|
|
The tag class and value in human readable form.
|
|
.TP
|
|
\fBtl_len\fR
|
|
The length of the TL (BER Tag and Length) encoding.
|
|
.TP
|
|
\fBv_len\fR
|
|
The length of the value (V, encoded by the L), may be "Indefinite".
|
|
.TP
|
|
\fBtype\fR
|
|
Likely name of the underlying ASN.1 type (for UNIVERSAL tags).
|
|
.TP
|
|
[\fBF\fR]
|
|
Indicates that the value was reformatted (pretty-printed). This may only appear in the output as long \fB-p\fR command line option is \fInot\fR specified.
|
|
.P
|
|
Sample XML output:
|
|
.Vb
|
|
\&<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">
|
|
.Ve
|
|
.SH EXAMPLES
|
|
Decode the given Tag/Length sequence given in hexadecimal form:
|
|
.Vb
|
|
\& unber \fB-t\fR "\fIbf 20\fR"
|
|
.Ve
|
|
Decode the given DER file using two-spaces indentation:
|
|
.Vb
|
|
\& unber \fB-i\fR \fI2\fR \fIfilename.der\fR
|
|
.Ve
|
|
Decode the binary stream taken from the standard input:
|
|
.Vb
|
|
\& cat \fI...\fR | unber \fB-\fR
|
|
.Ve
|
|
Decode the binary stream into the same stream (see \&\fIenber\fR\|(1)):
|
|
.Vb
|
|
\& cat \fI...\fR | unber \fB-p\fR \fB-\fR | enber \fB-\fR > \fIfilename.ber\fR
|
|
.Ve
|
|
.SH FOOTNOTES
|
|
The constructed XML output is not necessarily well-formed.
|
|
.P
|
|
When indefinite length encoding is being used, the BER sequence, which is not
|
|
terminated with the end-of-content octets, will cause the terminating \fB</I>\fR
|
|
XML tag to disappear.
|
|
Thus, the invalid BER framing directly causes invalid XML output.
|
|
.P
|
|
The \&\fIenber\fR\|(1) utility understands this convention correctly.
|
|
.SH SEE ALSO
|
|
.TP
|
|
\&\fIenber\fR\|(1), \&\fIasn1c\fR\|(1)
|
|
.SH AUTHORS
|
|
Lev Walkin <vlm@lionet.info>
|