OATHTOOL(1) User Commands OATHTOOL(1)

oathtool - ابزار رمز عبور یک‌بار مصرف احراز هویت باز (OATH)

oathtool [OPTION]... [KEY [OTP]]...

تولید و اعتبارسنجی رمزهای عبور یک‌بار مصرف OATH. مقادیر KEY و OTP می‌توانند رشته‌ی '-' برای خواندن از ورودی استاندارد، '@'FILE برای خواندن از نام فایل مشخص‌شده، یا یک مقدار با کدگذاری هگزادسیمال باشند (استفاده از هگز در سیستم‌های چندکاربره توصیه نمی‌شود).

نمایش پیام راهنما و خروج
نمایش نسخه برنامه و خروج
استفاده از حالت مبتنی بر رویداد HOTP (پیش‌فرض=روشن)
استفاده از حالت متغیر با زمان TOTP (مقادیر "SHA1"، "SHA256" یا "SHA512") (پیش‌فرض=`SHA1`)
استفاده از کدگذاری Base32 برای KEY به‌جای هگز (پیش‌فرض=خاموش)
مقدار شمارنده HOTP
مدت‌زمان گام زمانی TOTP (پیش‌فرض=`30s`)
زمان شروع شمارش گام‌های زمانی برای TOTP (پیش‌فرض=`1970-01-01 00:00:00 UTC`)
استفاده از این زمان به‌عنوان زمان فعلی برای TOTP (پیش‌فرض=`now`)
تعداد ارقام در رمز عبور یک‌بار مصرف
تعداد OTPهای اضافی برای تولید یا اعتبارسنجی در برابر آن‌ها
توضیح عملیات در حال انجام (پیش‌فرض=خاموش)

برای تولید یک رمز عبور یک‌بار مصرف مبتنی بر زمان (TOTP) از کلیدی که با GnuPG محافظت شده است:

$ gpg --decrypt --quiet ~/.my-totp-secret.asc | oathtool --totp -

نحوه ساخت فایل رمزنگاری‌شده خارج از محدوده این راهنما است؛ به gpg(1) مراجعه کنید. با این وجود، دو دستور زیر می‌توانند به شما کمک کنند تا کلید مخفی را به ترتیب به‌صورت متقارن (با استفاده از گذرواژه) یا نامتقارن (در صورت ساخت کلید خصوصی) رمزنگاری کنید. پس از اجرای دستورات، باید کلید مخفی را از طریق ترمینال وارد کنید:

$ gpg --symmetric > ~/.my-totp-secret.asc
$ gpg --encrypt --default-recipient-self > ~/.my-totp-secret.asc

برای خوانایی بهتر، در ادامه این صفحه راهنما مقادیر KEY و OTP در خط فرمان قرار داده شده‌اند. به یاد داشته باشید که این شیوه استفاده توصیه نمی‌شود؛ زیرا در بیشتر سیستم‌های چندکاربره، پارامترهای خط فرمان فرایندهای در حال اجرا توسط سایر کاربران قابل مشاهده است.

برای تولید اولین رمز عبور یک‌بار مصرف مبتنی بر رویداد (HOTP) برای یک کلید سراسر صفر:

$ echo 00 | oathtool -
328482
$

گاهی ممکن است بخواهید بیش از یک OTP تولید کنید. برای تولید ۱۰ رمز عبور یک‌بار مصرف مبتنی بر رویداد دیگر، با کلید مخفی استفاده‌شده در مثال‌های RFC 4226، از پارامتر -w (--window) استفاده کنید:

$ oathtool -w 10 3132333435363738393031323334353637383930
755224
287082
359152
969429
338314
254676
287922
162583
399871
520489
403154
$

در خروجی بالا، شمارنده برای اولین OTP برابر ۰، برای دومین OTP برابر ۱ و به همین ترتیب تا ۱۰ بود.

به منظور استفاده از کلیدهای کدگذاری‌شده با Base32 به‌جای هگز، می‌توانید پارامتر -b (--base32) را مشخص کنید:

$ oathtool --base32 -w 3 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
755224
287082
359152
969429
$

این ابزار فاصله‌های خالی (whitespace) در داده‌های Base32 را نادیده می‌گیرد و در صورت نیاز پدینگ (padding) را مجدداً اضافه می‌کند؛ بنابراین می‌توانید کلیدهایی با قالبی مشابه زیر ارائه دهید:

$ oathtool --base32 --totp "gr6d 5br7 25s6 vnck v4vl hlao re"
977872
$

برای تولید یک OTP خاص، از پارامتر -c (--counter) استفاده کنید تا موقعیت دقیق را مستقیماً تعیین کنید:

$ oathtool -c 5 3132333435363738393031323334353637383930
254676
$

برای اعتبارسنجی یک رمز عبور یک‌بار مصرف HOTP، مقدار OTP را در انتهای خط فرمان وارد کنید:

$ oathtool -w 10 3132333435363738393031323334353637383930 969429
3
$

خروجی نشان‌دهنده شمارنده‌ای است که استفاده شده است. این روش با شروع از شمارنده ۰ و افزایش آن تا زمان یافتن تطابق (یا نیافتن آن)، درون پنجره ۱۰ تاییِ تعیین‌شده از OTPها کار می‌کند.

این ابزار از رمزهای عبور یک‌بار مصرف متغیر با زمان در حالت موسوم به TOTP پشتیبانی می‌کند. شیوه استفاده مشابه است، اما گزینه --totp باید ارائه شود:

$ oathtool --totp 00
943388
$

اگر خروجی یکسانی دریافت نکردید نگران نباشید؛ زیرا خروجی به زمان فعلی بستگی دارد. برای تولید یک TOTP برای یک زمان ثابت مشخص، از پارامتر -N (--now) استفاده کنید:

$ oathtool --totp --now "2008-04-23 17:42:17 UTC" 00
974945
$

قالب آن اغلب یک رشته تاریخ متنی و خوانا برای انسان است، مانند Sun, 29 Feb 2004 16:21:42 -0800 یا 2004-02-29 16:21:42 یا حتی next Thursday. این قالب مشابه قالبی است که برای پارامتر --date در ابزار date(1) استفاده می‌شود.

الگوریتم MAC پیش‌فرض برای استفاده با TOTP الگوریتم HMAC-SHA1 است و معمولاً از همین استفاده می‌شود. این ابزار از دو الگوریتم MAC دیگر یعنی HMAC-SHA256 و HMAC-SHA512 نیز پشتیبانی می‌کند. برای استفاده از هر یک از آن‌ها، به پارامتر --totp یک مقدار اختصاص دهید. برای HMAC-SHA256 از "SHA256" و برای HMAC-SHA512 از "SHA512" استفاده کنید. دستور زیر تولید یکی از بردارهای آزمایشی RFC 6238 را نشان می‌دهد:

$ oathtool --totp=SHA256 --digits=8 --now "2009-02-13 23:31:30 UTC" 3132333435363738393031323334353637383930313233343536373839303132
91819424
$

می‌توانید با مشخص کردن پارامتر --window، مشابه نحوه عملکرد آن در HOTP، چندین TOTP تولید کنید. رمزهای تولیدشده در اینجا برای زمان اولیه (معمولاً زمان فعلی) و سپس برای هر گام زمانی پس از آن خواهند بود (برای نمونه، یک پنجره زمانی ۳۰ ثانیه‌ای):

$ oathtool --totp 00 -w5
815120
003818
814756
184042
582326
733842
$

می‌توانید یک رمز عبور یک‌بار مصرف TOTP را با مشخص کردن کلید مخفی و پارامتر پنجره (تعداد گام‌های زمانی قبل یا بعد از زمان فعلی) اعتبارسنجی کنید:

$ oathtool --totp -w 5 00 `oathtool --totp 00`
0
$

مشابه هنگام تولید TOTP، می‌توانید از پارامتر -N (--now) استفاده کنید تا زمان مورد استفاده به‌جای زمان فعلی مشخص شود:

$ oathtool --totp --now="2005-03-18 01:58:29 UTC" -w 10000000 3132333435363738393031323334353637383930 89005924
4115227
$

آزمون قبلی از مقادیر مشخصات استاندارد TOTP استفاده می‌کند و ابزار را تحت آزمون فشار قرار می‌دهد؛ زیرا پنجره مورد انتظار حدود ۴ میلیون گام زمانی است.

دو پارامتر سیستمی برای TOTP وجود دارد: اندازه گام زمانی و زمان شروع.

به‌طور پیش‌فرض اندازه گام زمانی ۳۰ ثانیه است، به این معنی که هر ۳۰ ثانیه یک OTP جدید دریافت می‌کنید. می‌توانید این مقدار را با پارامتر -s (--time-step-size) تغییر دهید:

$ oathtool --totp --time-step-size=45s 00
109841
$

مقادیر، مدت‌زمان‌های معتبر طبق استاندارد ISO-8601 هستند؛ ببینید: https://en.wikipedia.org/wiki/ISO_8601#Durations

زمان شروع معمولاً 1970-01-01 00:00:00 UTC است اما می‌توانید آن را با استفاده از پارامتر -S (--start-time) تغییر دهید:

$ oathtool --totp --start-time "1980-01-01 00:00:00 UTC" 00
273884
$

برای دریافت اطلاعات بیشتر در مورد آنچه ابزار استفاده می‌کند، از پارامتر -v (--verbose) استفاده کنید. در نهایت، برای تولید آخرین TOTP (برای SHA-1) در جدول بردارهای آزمایشی RFC 6238 می‌توانید ابزار را به این صورت فراخوانی کنید:

$ oathtool --totp -v -N "2033-05-18 03:33:20 UTC" -d8 3132333435363738393031323334353637383930
Hex secret: 3132333435363738393031323334353637383930
Base32 secret: GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
Digits: 8
Window size: 0
TOTP mode: SHA1
Step size (seconds): 30
Start time: 1970-01-01 00:00:00 UTC (0)
Time now: 2033-05-18 03:33:20 UTC (2000000000)
Counter: 0x3F940AA (66666666)
69279037
$

نوشته‌شده توسط Simon Josefsson.

گزارش باگ‌ها به: oath-toolkit-help@nongnu.org
صفحه اصلی OATH Toolkit: https://oath-toolkit.codeberg.page

حق نشر © 2009-2026 Simon Josefsson.
مجوز GPLv3+: گنو GPL نسخه ۳ یا بالاتر https://gnu.org/licenses/gpl.html.
این یک نرم‌افزار آزاد است: شما مجاز به تغییر و بازتوزیع آن هستید. هیچ‌گونه ضمانتی وجود ندارد، تا حدی که قانون اجازه می‌دهد.

January 2026 OATH Toolkit 2.6.14