Tự động mã hóa tệp tin trong Windows bằng Powershell

Mã hóa tập tin và giải mã tập tin có thể là một công việc hơi khó khăn. Tuy nhiên, bằng cách sử dụng PowerShell, bạn có thể tối giản quá trình này chỉ với một lệnh một dòng. Để làm điều này, chúng ta cần phải cài đặt Gpg4win và một module Powershell. Sử dụng các script để có thể tự động hoá quá trình mã hóa và giải mã. Bài viết này sẽ hướng dẫn các bạn cách tự động mã hóa tập tin trong Windows 10 bằng một script.

Trước khi bắt đầu, người dùng cần cài đặt và cấu hình các công cụ GPG4Win. Bạn sẽ sử dụng chức năng mật mã đối xứng của GPG4Win trong module này.

Module Powershell này xử lý mã hóa tập tin bằng mật khẩu chứ không phải là một keypair. Độ mạnh của mã hóa phụ thuộc vào độ mạnh mật khẩu. Người dùng nên chọn mật khẩu phức tạp, có thể sử dụng công cụ LastPass hoặc một trình quản lý mật khẩu khác. Cuối cùng, hoàn thành cài đặt và chuyển sang Module Powershell.

Cài đặt GPG4Win

Powershell Modules là bộ các chức năng được đóng gói, sử dụng định dạng tệp PSM1. Bạn có thể lưu các tệp này trong thư mục Modules trong hồ sơ, sau đó thêm Module vào phiên làm việc/script bằng cách sử dụng Import-Module.

Tất cả các lệnh cmdlet của module đều có sẵn. Khi nâng cao kỹ năng Powershell, bạn thậm chí có thể tạo các module của riêng mình. Để cài đặt module mã hóa tệp, tải module từ TechNet. Tiếp theo, bạn cần sao chép nó vào một trong các thư mục Modules. Nếu muốn tự cài đặt, hãy sao chép vào PowershellModules trong thư mục người dùng của bạn. Sao chép dòng dưới đây vào Explorer để tạo một phím tắt:

%UserProfile%\Documents\WindowsPowerShell\Modules

Nếu muốn cài đặt module cho tất cả người dùng, hãy sử dụng thư mục Program Files\Windows PowerShell\Modules. Dán dòng sau vào Explorer để tạo phím tắt:

%ProgramFiles%\Windows PowerShell\Modules

Tạo một thư mục mới có tên là GNUPG trong thư mục Modules và dán tệp PSM1 vào đó.

Chạy lệnh Set-ExecutionPolicy RemoteSigned.

Bạn cần phải nhập module mỗi lần sử dụng: Import-Module GnuPG. Tuy nhiên, bạn có thể điều chỉnh Execution thành Unrestricted bằng cách chạy lệnh cmdlet Set-ExecutionPolicy RemoteSigned.

Chọn Unblock

Vì đã tải Module này, nên bạn cần phải đánh dấu nó như là một tệp cục bộ. Nhấp chuột phải vào tệp và chọn Properties. Tiếp theo, trong hộp thoại, check vào Unblock. Xác nhận thao tác trong hộp thoại UAC và bạn đã thiết lập để sử dụng module.

Các lệnh Cmdlet

Bỏ qua lệnh Cmdlet đầu tiên, được sử dụng để cài đặt GPG4Win. Nếu chưa hoàn thành bước này, bạn có thể sử dụng lệnh cmdlet này để cài đặt và cấu hình chương trình. Cmdlet tải nó vào một thư mục bạn chọn và chạy trình cài đặt. Hai lệnh cmdlet khác là bổ sung: Add-EncryptionRemove-Encryption. Cả hai đều có ba tham số.

Tham số -FolderPath

Tham số đầu tiên là một thư mục: -FolderPath. Module này sẽ đi qua từng tập tin trong một thư mục để mã hóa hoặc giải mã tập tin. Nếu không muốn chỉ nó vào thư mục Documents, bạn nên tạo một cặp thư mục con để làm việc với script này. Nếu nhìn vào mã nguồn của Module, nó sử dụng Get-ChildItem để lấy mọi thứ trong thư mục. Chức năng giải mã hạn chế việc tìm kiếm các tập tin kết thúc bằng .GPG.

Tham số -Password

Tham số tiếp theo là mật khẩu được sử dụng cho mã hóa tệp: -Password. Hãy chắc chắn rằng mật khẩu này phức tạp, vì nó bảo vệ tập tin của bạn. Hàm này sẽ đi qua từng tập tin với một vòng lặp ForEach. Tệp và mật khẩu kết hợp làm đối số trong Start-Process cho GPG4Win.

Tham số cuối cùng, -GPGPath không bắt buộc. Nó được cài đặt làm vị trí mặc định cho GPG4Win. Nếu cài đặt nó trên ổ đĩa khác, bạn có thể cập nhật bằng cách sử dụng tham số này để thay đổi mục tiêu cho Start-Process .

Viết script

Bây giờ là lúc thiết lập tự động quá trình. Script này sẽ mã hóa các tập tin trong một thư mục, di chuyển các tập tin được giải mã vào một thư mục mới và xóa tệp gốc.

Đầu tiên, nhập module bằng cách sử dụng mport-Module GnuPG. Bạn cần phải thiết lập một vài biến. Biến đầu tiên $EncryptionTarget là thư mục đích. (Ví dụ, một biến môi trường được sử dụng để trỏ đến thư mục tài liệu của người dùng hiện tại). Đặt biến thứ hai làm cụm mật khẩu, bước này khiến việc thay đổi mật khẩu dễ dàng hơn.

Import-Module GnuPG

$EncryptionTarget = "$($env:USERPROFILE)\Documents\Files-ToEncrypt"

$Passphrase = "MakeAVeryLongSecurePhrase"

Add-Encryption $EncryptionTarget -Password $Passphrase

Start-Sleep -Seconds 60

$EcnryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -like "*.gpg"

foreach ($gpg in $EcnryptedFiles){

Move-Item -Path $gpg.FullName -Destination "$($env:USERPROFILE)\Documents\$($gpg.Name)"

}

$UnEncryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -notlike "*.gpg"

foreach ($nongpg in $UnEcnryptedFiles){

Remove-Item -Path $nongpg.FullName -Confirm $false

}

Các biến này đi đến Add-Encryption như là các tham số. Người dùng sử dụng một Start-Sleep để thiết lập thời gian hoàn thành mã hóa tập tin, ví dụ thời gian là ba phút. thời gian này có thể thay đổi dựa trên kích cỡ và số lượng tệp đang làm việc.

Bạn nhận được tệp .GPG bằng cách kết hợp Get-ChildItem với Where-Object. Sử dụng một vòng lặp ForEach để mỗi một tệp tin được sao chép vào một thư mục mới. Bạn có thể lặp lại các bước này, nhưng chuyển đổi -like thành -notlike để một vòng lặp thứ hai ForEach dọn dẹp các tập tin gốc.

Thiết lập công việc định kỳ

Giờ đã có script bạn cần phải tạo ra một nhiệm vụ theo lịch trình. Mở Task Scheduler và nhấp vào Create Task.

Chọn Create Task

Đặt tên nó thành AutoEncrypt. Nếu chỉ muốn chạy nhiệm vụ khi đăng nhập, hãy để thiết lập như mặc định. Nếu thiết lập chạy kể cả khi đăng nhập hoặc không, chọn "Run whether user is logged on or not", nó chỉ có thể truy cập thư mục trên máy tính. Tuy nhiên, nếu đích đến của bạn ở trên một máy tính từ xa, bạn cần phải lưu trữ mật khẩu. Ngoài ra, bạn có thể thiết lập tài khoản phụ để bảo vệ tài khoản chính.

Thiết lập trong cửa sổ New Triggers

Click vào tab Triggers và thiết lập các điều kiện. Tiếp theo, nhấp vào New mở cửa sổ lên lịch trình. Bạn có thể để cài đặt như mặc định, sau đó click vào hộp cạnh Repeat Task Every và đặt nó là 5 Minutes. Bạn có thể chọn thời gian nhiều lên nếu nhu cầu sử dụng không gấp. Trong trình đơn thả xuống bên cạnh for the duration of: chọn Indefinitely, nhấn OK để trở lại cửa sổ Create Task.

Nhấn OK để trở về cửa sổ Create Task

Trên tab Actions, nhấn New, trong cửa sổ bật lên, đặt đường dẫn đến Powershell trong hộp Program:

%SystemRoot%/system32/Windows PowerShell/v1.0/powershell.exe

Trong hộp đối số, đặt ./ và đường dẫn tới script. Nhấp OK hai lần và script được thiết lập để chạy như là một tác vụ đã lên lịch trình.

Xem thêm:

Thứ Tư, 24/01/2018 08:48
31 👨 401
0 Bình luận
Sắp xếp theo