Có rất nhiều các phần mềm, tool hỗ trợ khoá thư mục trên internet, nhưng là một "vọc sĩ" thì ai cũng muốn tự tạo cho mình 1 tool nho nhỏ, vả lại việc tự chế tool theo hướng dẫn bài viết sau còn giúp thư mục bạn tránh khỏi sự tò mò của những người mượn máy.
Một chương trình tự chế |
Quan trọng là làm sao chúng ta tìm ra được cơ chế để khoá hoặc bảo mật hoặc giấu (đại loại vậy) thư mục của mình?
Ý TƯỞNG
Từ nhỏ, tôi đã nghĩ đến việc set attribute của 1 folder thành hidden (thuộc tính ẩn), nhưng dường như cách này đã quá lỗi khi mà chúng ta (và ngay cả những em nhỏ) thừa biết cách setting folder option để xem các file mang thuộc tính hidden.
Và tôi tìm trên mạng, một bản chỉ tôi cách thêm ".{20D04FE0-3AEA-1069-A2D8-08002B30309D}" (chỉ chọn chuỗi trong ngoặc kép, kể cả dấu chấm) vào sau tên thư mục như một phần mở rộng, và kết quả là:
Vậy chúng ta chỉ việc tạo 1 tool cơ chế chuyển đổi tên thư mục là đã có thể có 1 tool khoá thư mục tự chế.
Cách này vẫn chưa phải là cách hay |
Thư mục của tôi đã biến thành My Computer, và khi click vào đó nó chuyển tôi vào My Computer, nhưng dữ liệu bên trong mà tôi lưu không hề thay đổi.
Chuyện gì đã xảy ra và chuỗi trên là gì?
Chuỗi trên gọi là Windows sử dụng chuỗi trên để định danh cho một đối tượng, gọi là CLSID là một chuỗi giá trị 128bit, mỗi chuỗi như vậy rất khó trùng lặp lại nhau nên Windows định nghĩa nó là globally unique identifier (đơn vị định danh toàn cầu).
Có rất nhiều các CLSID trong Windows chứ không riêng gì CLSID của My Computer
Một số các CLSID thông dụng trên Windows [1]
CLSID | Mô tả |
---|---|
{d20ea4e1-3957-11d2-a40b-0c5020524153} | Administrative Tools |
{21ec2o2o-3aea-1o69-a2dd-08002b30309d} | Control Panel |
{d20ea4e1-3957-11d2-a40b-0c5020524152} | Fonts |
{20d04fe0-3aea-1069-a2d8-08002b30309d} | My Computer |
{450d8fba-ad25-11d0-98a8-0800361b1103} | My Documents |
{208d2c60-3aea-1069-a2d7-08002b30309d} | My Network Places |
{1f4de370-d627-11d1-ba4f-00a0c91eedba} | Network Computers |
{7007acc7-3202-11d1-aad2-00805fc1270e} | Network Connections |
{645ff040-5081-101b-9f08-00aa002f954e} | Recycle Bin |
Vậy chúng ta chỉ việc tạo 1 tool cơ chế chuyển đổi tên thư mục là đã có thể có 1 tool khoá thư mục tự chế.
HƯỚNG DẪN THỰC HÀNH (BẰNG CÁC LỆNH CMD)
1. Mở notepad bằng cách mở hộp thoại Run (Windows + R) và gõ notepad rồi Enter
2. Gõ các lệnh:
cls
@ECHO OFF
title MyFolder Locker - EckOp
pause>nul
Trong đó các lệnh:
- cls: viết tắt của clear screen, giúp xoá màn hình, làm tool của bạn thẫm mỹ hơn, có thể xoá
- @echo off: tắt các echo message, làm tool bạn thẫm mỹ hơn, có thể xoá
- title MyFolder Locker - EckOp: tạo tiêu đề cho thanh tiêu đề có thể thay đổi chữ MyFolder Locker - EckOp thành dòng chữ khác.
- pause >nul: để tạm dừng chương trình
3. Tiếp theo, mình tạo một vùng chạy (nói theo kiểu IT là func), tên Main để cho người dùng nhập dường dẫn thư mục muốn khoá), tên LOCK để lock file, UNLOCK để mở lock file và FAIL để báo lỗi nếu sai pass, sai đường dẫn chẳng hạn.
cls
@ECHO OFF
title MyFolder Locker - EckOp
:MAIN
set id={20d04fe0-3aea-1069-a2d8-08002b30309d}
echo Nhap duong dan thu muc:
set /p "tm=>"
if EXIST %tm% goto LOCK
if EXIST %tm%.%id% goto UNLOCK
goto FAIL
:LOCK
echo lock
pause>nul
exit
:UNLOCK
echo unlock
pause>nul
exit
:FAIL
echo Loi khong xac dinh
pause>nul
Ở đây tôi sẽ chọn CLSID là My Computer ({21ec2o2o-3aea-1o69-a2dd-08002b30309d}), nên nếu bạn muốn chọn CLSID, bạn có thể thay đổi giá trị trên ở dòng 7.
- (Dòng 7) set id=... : để tôi lưu clsid vào biến tên là id, có thể chỉnh clsid, không nên xoá
- (Dòng 9) set /p "tm=>": để cho người dùng nhập vào, không nên xoá
4. Bắt đầu tạo hàm Lock và Unlock.
Phần LOCK
Chúng ta sẽ bắt đầu cho user nhập pass, và xác nhận lại pass, nếu 2 lần nhập đều giống nhau thì tiến hành đổi tên thư mục theo cơ chế trên. Pass được lưu dưới dạng <tên_thư_mục>\eckop_<pass>.txt (có thể đổi cấu trúc lưu)
:LOCK
cls
echo KHOA THU MUC %tm%
:: Phần này để nhập và xác nhận pass
echo Nhap pass:
set /p "pass=>"
echo Nhap lai pass:
set /p "confpass=>"
:: Phần này để kiểm tra nếu sai pass thì cho fail
if NOT %confpass%==%pass% goto FAIL
:: Phần này để lock thư mục
echo mypass > %tm%\eckop_%pass%.txt
ren %tm% %tm%.%id%
:: Phần này để báo hoàn tất
cls
echo HOAN TAT
pause>nul
exit
Phần UNLOCK
Chúng ta sẽ kiểm tra pass bằng cách kiểm tra xem thư mục eckop_<pass>.txt có tồn tại không? Nếu có thì đúng pass và mở thư mục:UNLOCK
echo MO KHOA THU MUC %tm%
:: Phần này để nhập pass
echo Nhap pass:
set /p "pass=>"
:: Phần này để xác nhận pass
if NOT EXIST %tm%.%id%\eckop_%pass%.txt goto FAIL
:: Phần này để mở khoá
ren %tm%.%id% %tm%
del %tm%\eckop_%pass%.txt
:: Phần này để báo hoàn tất
echo HOAN TAT
pause>nul
exit
5. Chương trình hoàn chỉnh
Sau khi hoàn tất, chúng ta có chương trình hoàn chỉnh sau.
cls
@ECHO OFF
title MyFolder Locker - EckOp
:MAIN
set id={20d04fe0-3aea-1069-a2d8-08002b30309d}
echo Nhap duong dan thu muc:
set /p "tm=>"
if EXIST %tm% goto LOCK
if EXIST %tm%.%id% goto UNLOCK
goto FAIL
:LOCK
cls
echo KHOA THU MUC %tm%
echo Nhap pass:
set /p "pass=>"
echo Nhap lai pass:
set /p "confpass=>"
if NOT %confpass%==%pass% goto FAIL
echo mypass > %tm%\eckop_%pass%.txt
ren %tm% %tm%.%id%
cls
echo HOAN TAT
pause>nul
exit
echo MO KHOA THU MUC %tm%
echo Nhap pass:
set /p "pass=>"
if NOT EXIST %tm%.%id%\eckop_%pass%.txt goto FAIL
ren %tm%.%id% %tm%
del %tm%\eckop_%pass%.txt
echo HOAN TAT
pause>nul
exit
:FAIL
echo Loi khong xac dinh
pause>nul
Để xuất thành chương trình hoàn chỉnh, bạn chỉ cần lưu file dưới dạng file .bat, rồi dùng chương trình covert file bat thành file exe (tham khảo tại đây: http://www.f2ko.de/en/b2e.php)HỎI ĐÁP VẤN ĐỀ
Q. Cách làm trên liệu có an toàn tuyệt đối?
A: Dĩ nhiên là không rồi, vì đơn thuần trên thế giới này chẳng có cái gì an toàn tuyệt đối cả =)) Nhưng cách này vẫn an toàn khi bạn dùng để che giấu bạn bè, người thân chẳng hạn, trường hợp là dân IT kinh nghiệm thì họ biết tổng cách này và phá dễ dàng.
Q: Lỡ user khoá các thư mục hệ thống (như system, windows) thì sao.
A: chương trình vẫn báo hoàn tất nhưng không đổi được tên thư mục theo cơ chế trên. Phần này các bạn có thể hạn chế người dùng tọc mạch bằng cách thêm các lệnh kiểm tra đường dẫn
Q: Cách lưu pass như trên dễ bị phát hiện và mò ra.
A: Hiển nhiên là vậy, nhưng chỉ đối với số người biết thủ thuật này, vì suy cho cùng nếu họ mò vào được thư mục khoá thì đồng nghĩa không cần pass thì cũng đã vào được cửa thôi. Bạn vẫn có thể khắc phục vấn đề này bằng việc lưu cách khác, registry chẳng hạn, rồi mã hoá chúng ^^
A: Dĩ nhiên là không rồi, vì đơn thuần trên thế giới này chẳng có cái gì an toàn tuyệt đối cả =)) Nhưng cách này vẫn an toàn khi bạn dùng để che giấu bạn bè, người thân chẳng hạn, trường hợp là dân IT kinh nghiệm thì họ biết tổng cách này và phá dễ dàng.
Q: Lỡ user khoá các thư mục hệ thống (như system, windows) thì sao.
A: chương trình vẫn báo hoàn tất nhưng không đổi được tên thư mục theo cơ chế trên. Phần này các bạn có thể hạn chế người dùng tọc mạch bằng cách thêm các lệnh kiểm tra đường dẫn
Q: Cách lưu pass như trên dễ bị phát hiện và mò ra.
A: Hiển nhiên là vậy, nhưng chỉ đối với số người biết thủ thuật này, vì suy cho cùng nếu họ mò vào được thư mục khoá thì đồng nghĩa không cần pass thì cũng đã vào được cửa thôi. Bạn vẫn có thể khắc phục vấn đề này bằng việc lưu cách khác, registry chẳng hạn, rồi mã hoá chúng ^^
Tư liệu tham khảo
[1] Autohotkey - CLSID List: https://autohotkey.com/docs/misc/CLSID-List.htm
i'm opdo
Xin chào, mình là opdo - một đứa mê những dòng code vô tận. Rất cám ơn vì bạn đã ghé thăm blog của mình ^^. Hi vọng được bạn ủng hộ để blog mình phát triển hơn
1 nhận xét:
nhận xétTool rất tuyệt, ý tưởng này mình cũng đã từng có nhưng không đủ kiến thức để nghĩ tới giải pháp.
ReplyNhờ bài viết này mà mình không cần suy nghĩ nữa =)).
Nhưng mình nghĩ sẽ cần tối ưu để có thể khóa 1 danh sách các tập tin luôn.
Nhưng có 1 số trường hợp xảy ra là người lạ (bạn gái, em út) sử dụng máy tính thấy biểu tượng quen thuộc (Computer, notepad) lại ở sâu trong các thư mục sẽ xóa giùm.
Vì thế cần bổ sung thêm là cấm xóa luôn nếu chưa giải mã. :D