پاورشل برای برنامه‌نویسان

پاورشل برای برنامه‌نویسان

@programming_tips

درسنامه: رمزنگاری و هش کردن (ConvertTo-SecureString, Get-FileHash)

این درسنامه به بررسی رمزنگاری و امنیت داده‌ها در PowerShell می‌پردازد و تمرکز آن روی دو ابزار کلیدی ConvertTo-SecureString و Get-FileHash است. این ابزارها به برنامه‌نویسان و مدیران سیستم کمک می‌کنند اطلاعات حساس مثل رمز عبور و فایل‌ها را امن نگه دارند و صحت داده‌ها را بررسی کنند.


۱. روش ConvertTo-SecureString

روش ConvertTo-SecureString روشی برای تبدیل رشته‌های متنی به SecureString است که در حافظه به شکل امن نگهداری می‌شوند و به صورت متن ساده قابل خواندن نیستند. این ابزار برای مدیریت رمز عبور و اطلاعات حساس کاربرد دارد.

مثال ساده:

$securePassword = ConvertTo-SecureString "MyP@ssw0rd" -AsPlainText -Force
  • -AsPlainText مشخص می‌کند که متن ورودی به صورت ساده وارد شده است.
  • -Force اجازه می‌دهد که PowerShell این متن ساده را بپذیرد و به SecureString تبدیل کند.

استفاده با Credential:

$cred = New-Object System.Management.Automation.PSCredential ("username", $securePassword)

با این روش می‌توان رمز عبور را امن نگه داشت و آن را به دستورات نیازمند Credential منتقل کرد، بدون اینکه رمز به صورت متن ساده ذخیره شود.


۲. روش Get-FileHash

Get-FileHash ابزاری برای محاسبه هش فایل‌ها است. هش کردن به معنای تولید یک مقدار کوتاه و یکتا از محتویات فایل است که برای بررسی صحت و یکسان بودن فایل‌ها استفاده می‌شود.

مثال:

Get-FileHash "C:\path\to\file.txt" -Algorithm SHA256
  • -Algorithm مشخص می‌کند از کدام الگوریتم هش استفاده شود (مثل SHA256، SHA1، MD5).
  • خروجی شامل مقدار هش و مسیر فایل است.

کاربردها:

  • بررسی اینکه فایل دانلود شده سالم است و تغییر نکرده است.
  • تطبیق نسخه فایل‌ها بین سیستم‌ها.
  • استفاده در اسکریپت‌های امنیتی برای شناسایی تغییر غیرمجاز در فایل‌ها.

۳. ترکیب رمزنگاری و Credential

با ترکیب ConvertTo-SecureString و Get-Credential می‌توان رمزهای کاربری را امن نگه داشت و به سرویس‌های راه دور یا اسکریپت‌ها منتقل کرد:

$securePassword = ConvertTo-SecureString "MyP@ssw0rd" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("username", $securePassword)
Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock {
    Get-Process
}

با این روش، رمز عبور در حافظه رمزنگاری شده و امنیت داده‌ها افزایش می‌یابد.


۴. نکات امنیتی

  1. هیچگاه رمز عبور را به صورت متن ساده در اسکریپت‌های تولید شده برای محیط واقعی نگهدارید.
  2. استفاده از SecureString باعث می‌شود که اطلاعات حساس حتی در متغیرهای PowerShell به شکل رمزنگاری شده نگهداری شوند.
  3. الگوریتم‌های هش قوی مثل SHA256 یا SHA512 امنیت بالاتری نسبت به MD5 دارند و برای کاربردهای حساس توصیه می‌شوند.
  4. Get-FileHash برای اعتبارسنجی فایل‌های دانلود شده یا بررسی یکسان بودن فایل‌ها بین سیستم‌ها بسیار مفید است.

۵. نمونه عملی

هش کردن فایل و بررسی تغییرات:

$hashOriginal = Get-FileHash "C:\temp\myapp.exe" -Algorithm SHA256
# بعد از تغییر یا انتقال فایل
$hashNew = Get-FileHash "D:\backup\myapp.exe" -Algorithm SHA256

if ($hashOriginal.Hash -eq $hashNew.Hash) {
    Write-Host "File is intact"
} else {
    Write-Host "File has been modified"
}

رمزنگاری رمز عبور و اتصال امن:

$securePass = ConvertTo-SecureString "Secret123" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("admin", $securePass)
Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock { Get-Service }

جمع‌بندی

در نهایت ConvertTo-SecureString و Get-FileHash ابزارهای مهم PowerShell برای امنیت و یکپارچگی داده‌ها هستند. استفاده صحیح از آن‌ها باعث می‌شود اطلاعات حساس امن نگه داشته شوند و فایل‌ها قابل اعتماد باشند. برنامه‌نویسان حرفه‌ای با ترکیب این ابزارها می‌توانند اسکریپت‌هایی امن و قابل اعتماد برای مدیریت سیستم و توسعه نرم‌افزار ایجاد کنند.

Report Page