OPENSSL-ASN1PARSE(1SSL) OpenSSL OPENSSL-ASN1PARSE(1SSL)

openssl-asn1parse - دستور تجزیه ساختارهای داده‌ای ASN.1

openssl asn1parse [-help] [-inform DER|PEM|B64] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [-oid filename] [-dump] [-dlimit num] [-strparse offset] [-genstr string] [-genconf file] [-strictpem] [-item name]

این دستور یک ابزار تشخیصی است که می‌تواند ساختارهای ASN.1 را تجزیه کند. همچنین می‌توان از آن برای استخراج داده از داده‌های قالب‌بندی‌شده با ASN.1 استفاده کرد.

نمایش پیام راهنمای نحوه استفاده.
قالب ورودی؛ مقدار پیش‌فرض PEM است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
فایل ورودی؛ پیش‌فرض ورودی استاندارد است.
فایل خروجی برای قرار دادن داده‌های کدگذاری‌شده با DER در آن. اگر این گزینه مشخص نشود، هیچ داده‌ای به خروجی ارسال نخواهد شد. این گزینه بیشترین کاربرد را در ترکیب با گزینه -strparse دارد.
از خروجی دادن نسخه تجزیه‌شده فایل ورودی خودداری می‌کند.
آفست شروع برای آغاز تجزیه؛ مقدار پیش‌فرض ابتدای فایل است.
تعداد بایت‌ها برای تجزیه؛ مقدار پیش‌فرض تا پایان فایل است.
دندانه‌دار کردن خروجی متناسب با «عمق» ساختارها.
فایلی حاوی شناسه‌های شیء (OID) اضافی. قالب این فایل در بخش «نکات» در ادامه توضیح داده شده است.
تخلیه و نمایش داده‌های ناشناخته در قالب هگزادسیمال (hex).
مشابه -dump، اما تنها num بایت اول به خروجی ارسال می‌شوند.
بایت‌های محتوای شیء ASN.1 را با شروع از offset تجزیه می‌کند. این گزینه می‌تواند چندین بار برای کاوش درون یک ساختار تودرتو استفاده شود.
تولید داده‌های کدگذاری‌شده بر اساس string، file یا هر دو با استفاده از قالب ASN1_generate_nconf(3). اگر تنها file وجود داشته باشد، رشته از بخش پیش‌فرض با استفاده از نام asn1 به دست می‌آید. داده‌های کدگذاری‌شده از تجزیه‌کننده ASN1 عبور داده شده و به گونه‌ای چاپ می‌شوند که گویی از یک فایل آمده‌اند؛ بنابراین محتویات را می‌توان بررسی کرد و با استفاده از گزینه -out درون یک فایل نوشت.
در صورت استفاده از این گزینه، گزینه -inform نادیده گرفته می‌شود. بدون این گزینه، هرگونه داده در یک فایل ورودی با قالب PEM به صورت کدگذاری‌شده base64 در نظر گرفته می‌شود و چه دارای نشانگرهای معمول BEGIN و END در PEM باشد و چه نباشد، پردازش می‌شود. این گزینه هر داده‌ای را که قبل از شروع نشانگر BEGIN یا پس از یک نشانگر END در فایل PEM قرار دارد، نادیده می‌گیرد.
تلاش برای رمزگشایی و چاپ داده‌ها به عنوان یک ASN1_ITEM با نام name. این گزینه می‌تواند برای چاپ فیلدهای هر ساختار پشتیبانی‌شده ASN.1 در صورت مشخص بودن نوع آن استفاده شود.

خروجی به طور معمول شامل خطوطی مانند زیر خواهد بود:

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

.....

این مثال بخشی از یک گواهی خودامضاشده (self-signed) است. هر خط با آفست در مبنای ده‌دهی (decimal) آغاز می‌شود. عبارت "d=XX" عمق فعلی را مشخص می‌کند. عمق در محدوده هر SET یا SEQUENCE افزایش می‌یابد. عبارت "hl=XX" طول سرآیند (بایت‌های برچسب و طول) نوع فعلی را نشان می‌دهد. عبارت "l=XX" طول بایت‌های محتوا را مشخص می‌کند.

گزینه -i می‌تواند برای خواناتر کردن خروجی استفاده شود.

برای تفسیر خروجی، مقداری آگاهی از ساختار ASN.1 لازم است.

در این مثال، مقدار BIT STRING در آفست ۲۲۹ کلید عمومی گواهی است. بایت‌های محتوای آن حاوی اطلاعات کلید عمومی خواهد بود. این مورد می‌تواند با استفاده از گزینه "-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 ارسال می‌شود، امکان گنجاندن OIDهای اضافی را فراهم می‌کند. هر خط از سه ستون تشکیل شده است: ستون نخست OID در قالب عددی است و باید پس از آن فاصله (whitespace) قرار گیرد. ستون دوم «نام کوتاه» (short name) است که یک کلمه منفرد بوده و پس از آن فاصله قرار می‌گیرد. ستون پایانی ادامه خط و نشان‌دهنده «نام طولانی» (long name) است. به عنوان مثال:

"1.2.3.4 shortName A long name"

برای هر OID که دارای یک نام کوتاه و طولانی مرتبط باشد، این دستور نام طولانی را نمایش خواهد داد.

تجزیه یک فایل:

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

باید گزینه‌هایی برای تغییر قالب خطوط خروجی وجود داشته باشد. خروجی برخی از انواع ASN.1 به خوبی پردازش نمی‌شود (اگر اصلاً پردازش شود).

openssl(1), ASN1_generate_nconf(3)

حق نشر 2000-2023 نویسندگان پروژه OpenSSL. کلیه حقوق محفوظ است.

تحت مجوز آپاچی نسخه 2.0 ("مجوز") ارائه شده است. شما مجاز به استفاده از این فایل نیستید مگر با رعایت کامل شرایط مجوز. می‌توانید یک نسخه از مجوز را در فایل LICENSE در بسته توزیع منبع یا در نشانی https://www.openssl.org/source/license.html بیابید.

2026-06-09 3.5.7