‏نمایش پست‌ها با برچسب PowerShell. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب PowerShell. نمایش همه پست‌ها

Calculate MD5, SHA1 and other hashes of files

احتمالا شده که بخواهید کد های MD5 یا SHA1 و یا بقیه کدهای Hash یک فایل، دیسک ایمیج یا هر مدیایی رو چک کنید تا از سالم بودن و دست نخورده بودن اون اطمینان حاصل کنید. برنامه های زیادی هستند که این کار رو برای ما انجام میدن، و یا حتی میشه خودمون برنامه ای بنویسیم که این کار رو برای ما انجام بده. البته در این پست من نمیخوام  آموزش نوشتن چنین برنامه هایی رو بدم، چون یک جستجوی ساده در اینترنت، میتونه کدهای بسیاری رو برای شما بیاره که دیگه لازم نباشه خودتون از ابتدا برنامه Hash بنویسید.
در زیر چند راه حل برای به دست آوردن کدهای Hash در خط فرمان ها را براتون مینویسم:

محاسبه کدهای Hash یک فایل در Command Line ویندوز

برای چک کردن MD5 یا SHA1 و ... در ویندوز میتونید از File Checksum Integrity Verifier استفاده کنید. نحوه استفاده از این برنامه خیلی راحت هستش و شما با نوشتن دستور زیر در Command Line ویندوز میتونید مقدار MD5 و SHA1 فایل مورد نظرتون رو بدست بیارید:

FCIV -md5 -sha1 path\filename.ext

البته FCIV به طور پیش فرض توی ویندوز نیست و شما باید اونو دانلود و نصب کنید. این نکته را هم باید بگم که در پیج دانلود برنامه گفته شده که شرکت مایکروسافت از این فایل پشتیبانی نمیکنه و ریسک نصب و اجرای اون رو باید به جون بخرید.

محاسبه MD5 یک فایل در PowerShell

اگر از PowerShell به عنوان خط فرمان پیش فرض ویندوز استفاده می کنید، برای محاسبه کد MD5 میتونید از دستورات زیر استفاده کنید:

$someFilePath = "C:\foo.txt"
$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($someFilePath)))

در این کد کافیه آدرس فایل خود را در متغیر someFilePath  بریزید و بعد از اجرای دستورات، کد MD5 فایل خود رو میتونید مشاهده کنید.
البته در اینجا قطعه کدی به همراه مثال نوشته شده که با استفاده از اون میتونید به سادگی کدهای SHA1 و MD5 یک فایل را حساب کنید.

محاسبه کدهای Hash یک فایل در Shell های لینوکس

خوشبختانه به دست آوردن کدهای Hash تو لینوکس خیلی راحت هستش و دیگه نیازی به دانلود پکیج خاصی نیست و به طور پیش فرض، این دستورات در لینوکس وجود دارن. و یا حداقل در توزیع هایی که من استفاده کردم اینطور بوده.
برای محاسبه MD5 یک فایل از دستور md5sum filename استفاده می کنیم و به جای filename اسم فایل را قرار میدهیم.
و همینطور برای SHA1 از دستور sha1sum filename استفاده می کنیم.
- برای دیدن بقیه دستوراتی که با sha شروع میشن، حروف sha رو در Shell بنویسید و دو بار کلید Tab را بزنید تا دستورات بقیه کدها Hash که با sha  شروع میشن نمایش داده بشن.

در آخر باید بگم که خود من دستورهای لینوکس رو ترجیح میدم، و برای همین، همیشه Cygwin رو در ویندوزم نصب می کنم. و برای به دست آوردن کد های Hash از دستورات لینوکس در ترمینال Cygwin استفاده می کنم.

\.Chehre

Change files Attribute with Powershell

قبل از نوروز، فایلی را روی گوشیم کپی کردم تا در دانشگاه به یکی از دوستان بدم.از شانس من لپتاپی که ایشون همراه داشتن ویروسی بود و فایل ها و فولدر های گوشیم بعد از اتصال به لپتاپ مخفی شده بودن. منم که حوصله نداشتم که صفت فايل ها و فولدر ها را يکي يکي از System و Hidden خارج کنم به سراغ Powershell رفتم!
توضیح خلاصه ای که میتونم بدم اینه که: PowerShell خط فرمان (command-line) و زبان اسکریپتی برای مدیریت سیستم است که در چارچوب دات نت ساخته شده.
برای اطلاعات بیشتر درمورد Powershell به لینک های زیر مراجعه کنید.
Windows PowerShell

قبل از هرکاری باید از نصب بودن PowerShell اطمینان حاصل می کردم! من دو تا دستگاه دارم که روی یکیش Windows 7 نصب هست و رو ی دیگری Windows XP. به طور پیش فرض PowerShell در سیستم عامل Windows 7 نصب هست و نیاز به کاری نیست. برای سیستم عامل Windows XP هم باید سرویس پک سه را به همراه دات نت فریم ورک نصب می کردم.

خوب برای اینکه صفت تمامی فایل ها و فولدرهای گوشیم را از System , Hidden دربیارم، اسکریپت زیر رو نوشتم.



$AllFiles = Get-Childitem -force -recurse
Foreach ($file in $AllFiles)
{
$file$file.Attributes = 'Normal'
}
Write-host "Number of files and directories: " $Counter.Count
Write-Host "Press any key to continue ..."
$Key=$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
به 2 طریق میشه اسکریپت بالا را اجرا کرد:
روش اول اینه که باید اسکریپت رو در Powershell کپی می کردم تا اجرا بشه. البته چون من می خواستم بازم بتونم از اسکریپتم استفاده کنم پس این روش، روش خوبی برای من نبود.
برای مشاهده خط فرمان، عبارت PowerShell را در Run بنويسيد و OK را بزنيد.
روش دوم اینکه باید یک فایل با پسوند ps1 در Root گوشیم ایجاد می کردم و اسکریپت رو در اون کپی می کردم. و در ویندوز روی فایل راست کلیک می کردم و منوی Run with PowerShell را کلیک می کردم. (مراحلی که گفتم مربوط میشه به Windows 7)
خوب من این کار رو انجام دادم و با پیغام خطای زیر مواجه شدم:
File J:\ShowFolders.ps1 cannot be loaded because the execution of scripts 
is disabled on this system. Please see "get-help about_signing" for more details.At line:1 char:19

به طور پيش فرض مجوز بر روی Restricted قرار دارد و برای ديدن مجوز بايد از دستور Get-ExecutionPolicy در خط فرمان PowerShell استفاده کرد.

برای اینکه بتونم فایل اسکریپت رو اجرا کنم دستور
Set-ExecutionPolicy RemoteSigned
را در خط فرمان PowerShell نوشتم و اجرا کردم.
بعد از اجرای دستور خط فرمان يک کاراکتر از ما می خواد که Y را ميزنيم تا دستور را تاييد کنيم. 
برای اطلاعات بيشتر درباره مجوز Policy  به لينک زير مراجعه کنيد:
Running Windows PowerShell Scripts  
 
فایل اسکریپت را میتونید از اینجا دانلود کنید. 
 
شاد باشید.

جستجو