asn1parse
来源:互联网 发布:cms监控软件登录超时 编辑:程序博客网 时间:2024/06/03 08:55
用途
asn1parse - 一种用来解析ASN.1的工具。
用法
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [-oid filename] [-dump] [-dlimit num] [-strparse offset] [-genstr string] [-genconf file]
描述
asn1parse是一个有效的诊断工具,可以解析ASN.1结构。也可用来从ASN.1格式的数据中提取数据。
选项
-inform DER|PEM
指定输入内容的格式。DER是二进制格式的,PEM是base64编码格式,默认是PEM。
-in filename
指定输入文件的文件名,默认为标准输入。
-out filename
指定输出文件名,用于放置DER编码数据信息。如果这个选项未指定,则没有数据会被输出。这个选项和-strparse选项结合使用是非常有用的。
-noout
不输出输入文件的解析版本。
-offset number
指定开始解析的位置,默认的解析从文件的开头开始。
-length number
指定要解析的字节数,默认一直解析到文件的结尾。
-i
标记实体,输出缩进标识。
-oid filename
一个包含了OBJECT IDENTIFIERs(OIDs)附加信息的文件。下面的“注意”部分描述了文件的格式。
-dump
以十六进制转出未知数据
-dlimit num
和-dump选项类似,但只会输出第一个大小为num个字节的内容。
-strparse offset
从ASN.1对象的offset处开始解析长度为八位组的内容。这个选项可以在一个嵌套结构中多次使用。
-genstr string,-genconf file
生成基于字符串,文件或使用ASN1_generate_nconf格式的编码数据。如果只提供了文件,那么字符串可以从默认的asn1字段获取。被编码的数据就像来自一个文件一样,被传递给ASN1解析器,这些内容也因此可以通过输出选项对其检查或写到一个文件中。
输出
输出通常包含类似如下的这些行:
0:d=0 hl=4 l= 681 cons: SEQUENCE
...
229:d=3 hl=3 l= 141 prim: BIT STRING
373:d=2 hl=3 l= 162 cons: cont [ 3 ]
376:d=3 hl=3 l= 159 cons: SEQUENCE
379:d=4 hl=2 l= 29 cons: SEQUENCE
381:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Identifier
386:d=5 hl=2 l= 22 prim: OCTET STRING
410:d=4 hl=2 l= 112 cons: SEQUENCE
412:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Identifier
417:d=5 hl=2 l= 105 prim: OCTET STRING
524:d=4 hl=2 l= 12 cons: SEQUENCE
...
这个示例是自签名证书的一部分。每一行都以一个十进制的数开始。d=XX指定了当前的深度。深度是根据SET或SEQUENCE的范围来递增的。h=XX给定了当前类型头部的长度(标记和长度八位组)。l=XX给出了内容八位组的长度。
使用-i选项可以使输出更具可读性。
一些ASN.1结构的知识需要在输出中解释。
在这个示例中,BIT STRING在偏移为229的位置是证书的公钥。这个八位组的内容包含公钥的信息。这个信息可以使用-strparse 229选项来检查:
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
135:d=1 hl=2 l= 3 prim: INTEGER :010001
注意
如果一个OID不是OpenSSL的内部表中一部分,它将会在数值列表中提出异议(例如1.2.3.4)。传过来的文件通过-oid选项,允许附加的OIDs被包含。每一行由3列组成,第一列是数值格式的OID,必须用空格隔开。第二列是一个“short name”,也应该用空格隔开。最后一列是一个“long name”。asn1parse显示那个长名字。例如:
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
配置文件示例
asn1=SEQUENCE:seq_sect
[seq_sect]
field1=BOOL:TRUE
field2=EXP:0, UTF8:some random string
- asn1parse
- OpenSSL命令---asn1parse
- openssl简介-指令asn1parse
- 25个让Java程序员更高效的Eclipse插件
- Sicily 1041. Pushing Boxes
- [转]css样式加载顺序及覆盖顺序深入理解
- 扩展KMP详解
- C++ learning notes - const
- asn1parse
- MFC-- 在串口通信中的应用
- vps搭建vpn
- 简单c语言小游戏实现原理
- MYSQL数据库编码设置相关
- Swift,函数,枚举
- 僵尸进程是如何产生的?怎样避免僵尸进程的产生
- TextView实现跑马灯效果(文字滚动)
- 【笨木头Unity】入门之旅006:Demo之四处找死(一)_场景和主角