من تعدادی از اسکریپت های اتوماتیک را اجرا می کنم که در یک محیط رمزگذاری شده (رمزگذاری کامل دیسک) اجرا می شوند.
بسیاری از دستورات در ویندوز و nix دو راه برای ورود اطلاعات حساس مانند کلمات عبور دارند. در یک حالت، برنامه کاربر را برای گذرواژه فراخوانی می کند و از سوی دیگر، رمز عبور با استفاده از یک آرگومان گزینه مشخص می شود.
هنگام نوشتن یک اسکریپت پوسته، فرمان می تواند به صورت خودکار با استفاده از هر یک از این فرآیندها خودکار شود. در اولین مورد، فرمان اجرا می شود، سپس استاندارد در (stdin) هدایت می شود و پسورد در صورت درخواست، رمز عبور وارد برنامه می شود. در مورد دوم، رمز عبور به عنوان یک استدلال به برنامه مشخص شده است.
آیا یکی از این موارد ذاتا بیشتر از دیگران خطرناک است؟ آیا آگاهی از مواردی وجود دارد؟ در هر دو مورد، من به طور خاص درباره نحوه تأمین گذرواژه، و نه احتمال خطر یا آسیب پذیری مرتبط با ذخیره رمز عبور روی دیسک، از شما خواهم پرسید.
در مثال زیر در Python با استفاده از نسخه CLI از VeraCrypt:
هدایت stdin:
cmd = ['veracrypt', "--text", partition, mount_point]
input_file = open_file ()
vc_call = subprocess.run (cmd، stdin = input_file)
vc_call.wait ()
عبور گذرواژه به عنوان یک استدلال:
password = get_password_from_file ():
cmd = ['veracrypt', "--text", "--non-interactive", "--password", password, partition, mount_point]
vc_call = subprocess.run (cmd)
توجه:
من مطمئن نیستم که اگر مهم باشد، اما در * nix، دستورات می توانند به طور مستقیم به عنوان فراخوانی های سیستم اجرا شوند. در کد بالا هیچکدام از تماسهای زیر subprocess.run ()
یک گزینه shell = True
داده نشد، که باعث می شود دستور در پوسته پیشفرضی اجرا شود. درک من این است که در ویندوز تمام دستورات باید از طریق shell cmd
اجرا شود. این می تواند بین دو گزینه تفاوت ایجاد کند، اما من مطمئن نیستم که چگونه