asn1parse命令
一、简介
asn1parse命令是一种用来诊断ASN.1结构的工具,也能用于从ASN1.1数据中提取数据。
二、语法
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [- structure filename] [-strparse offset]
选项说明
Usage: asn1parse [options]
Valid options are:
-help Display this summary
-inform PEM|DER input format - one of DER PEM
-in infile input file
-out outfile output file (output format is always DER)
-i indents the output
-noout do not produce any output
-offset +int offset into file
-length +int length of section in file
-oid infile file of extra oid definitions
-dump unknown data in hex form
-dlimit +int dump the first arg bytes of unknown data in hex form
-strparse val offset; a series of these can be used to ‘dig‘
into multiple ASN1 blob wrappings
-genstr val string to generate ASN1 structure from
-genconf val file to generate ASN1 structure from
(-inform will be ignored)
-strictpem do not attempt base64 decode outside PEM markers
-inform PEM|DER:输入内容的格式,一般为PEM(base64编码格式)和DER(是二进制格式)两种,默认为PEM。
-in filename:输入文件名,默认为标准输入。
-out filename:输出文件名,默认为标准输出。如果这个选项没有被提出,则没有数据输出。和B<-strparse>选项合并使用时,这个选项非常有用。给定一个PEM文件,采用此选项可用生成一个DER编码的文件。
-noout:不打印参数编码的版本信息。
-offset number:开始数据分析的字节偏移量,分析数据时,不一定从头开始分析,可用指定偏移量,默认从头开始分析。
-length number:需要分析数据的长度值,默认为分析到文件结束。
-i:标记实体,输出缩进标记,将一个ASN1实体下的其他对象缩进显示。此选项非默认选项,加上此选项后,显示更易看懂。
-dump:所有数据以十六进制格式显示。
dlimit number:与-dump不同,-dump显示所有的数据,而此选项只能显示由number指定数目的十六进制数据。
-oid filename:一个文件包含的附加的oids标记值。
-strparse offset:此选项也用于从一个偏移量开始来分析数据,不过,与-offset不一样。-offset分析偏移量之后的所有数据,而-strparse只用于分析一段数据,并且这种数据必须是SET或者SEQUENCE,它只分析本SET或者SEQUENCE范围的数据。
-genstr string、-genconf file:根据string、file或者用L<ASN1_generate_nconf(3)|ASN1_generate_nconf(3)>格式来产生编码数据的字符串。如果仅仅file被提供,字符串将会从默认的name字段中获取。编码后的数据通过ASN1分析来传输。
三、输出——ASN.1结构
0: d = 0 hl = 4 l = 710 cons: SEQUENCE
0 表示节点在整个文件中的偏移长度
d=0 表示节点深度
hl=4 表示节点头字节长度
l=710 表示节点数据字节长度
cons 表示该节点为结构节点,表示包含子节点或者子结构数据
prim 表示该节点为原始节点,包含数据
SEQUENCE、OCTETSTRING等都是ASN.1中定义的数据类型,具体可以参考ASN.1格式说明。
最后一个节点OCTET STRING [HEX DUMP],就是加密后的私钥数据。
四、实例
代表性的输出内容为:
此命令 读取并显示root.crt证书(证书格式为pem)里面的内容值:
这个实例是一个自签名的证书中的一部分。每行的开始代表偏移量,为小数。B<d=XX>表示的是此项的深度,深度是根据SET或 SEQUENCE的范围来递增的。B<hl=XX>给出的是目前ASN.1类型的头长度(标记和长度八位组)。B<l=XX>给出了内容长度。B<prim>表示的是OBJECT表示的是ASN1类型;:sha1WithRSAEncryption表示oid。
B<-i>选项可以被用于设置输出的可读性操作。
一些ASN.1结构的知识需要在输出中翻译。
在这个实例中,BIT STRING在第229列中代表证书公钥值。可以用选项B<-strparse 229>来检查值:
注意:
如果一个OID不是OpenSSL的内部表中一部分,它将会在数值列表中提出异议(例如1.2.3.4)。传过来的文件OID选项允许包含附加的OIDs。每一行由3列组成,第一列是数值型的OID,必须用空格隔开。第二列式一个“short name”,也要用空格隔开;最后一列依赖于这一行,他是“long time”。B<asn1parse>显示长名字。实例如下:
C<1.2.3.4 shortName A long name>
使用实例:
分析一个文件:
openssl asn1parse -in file.pem
分析一个DER文件:
openssl asn1parse -inform DER -in file.der
产生一个简单的UTF8String:
openssl asn1parse -genstr ‘UTF8:Hello World‘
产生并输出一个简单的UTF8String,不打印分析结果:
openssl asn1parse -genstr ‘UTF8:Hello World‘ -noout -out utf8.der
用一个配置文件产生数据:
openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
此命令除了显示上面内容外,并生成一个der编码的文件。
openssl asn1parse –in c:\server.pem –out c:\server.cer
此命令显示上面的内容,但是有缩进。
openssl.exe asn1parse –in c:\server.pem –i
此命令从偏移量26开始分析,到结束。注意,26从前面命令的结果得到。
openssl.exe asn1parse –in c:\server.pem –i –offset 26
此命令从偏移量13进行分析,分析长度为11。
openssl.exe asn1parse –in c:\server.pem –i –offset 13 –length 11
原文:https://www.cnblogs.com/regina1st/p/13945867.html