Gói lisp khóa bản vẽ cad trên trang là một tệp AutoLISP nhỏ, chạy bằng lệnh KHOA. Bài này nói đúng tên lệnh và đúng cơ chế mà nó dùng. Quan trọng hơn, bài nói thẳng một điều ít người viết ra: cách khóa này không phải là bảo mật thật.
Tóm tắt. Mật khẩu giải nén gói tải là autocad123. Bên trong là tệp KHOABV.LSP nặng 2,5 KB, định nghĩa đúng một lệnh tên KHOA. Chạy KHOA, lisp dồn mọi nét vẽ sang lớp DEFPOINTS không in được, rồi gói chúng vào các khối MINSERT không tách rời được. Không có mã hóa, không có mật khẩu mở file. Đây là mẹo sắp xếp lại bản vẽ, không phải bảo mật, và người rành AutoCAD gỡ được.
Tải tệp và mật khẩu giải nén
Tệp nằm trên Google Drive, mật khẩu giải nén là autocad123, tất cả viết thường. Gói có kèm một ảnh chỉ đường sang trang khác để lấy mật khẩu, bạn không cần đi vòng như vậy nữa.
Lisp khóa bản vẽ CAD (lệnh KHOA)
Tệp AutoLISP dồn nét vẽ sang lớp DEFPOINTS không in được rồi gói vào khối MINSERT không tách được, dùng để hạn chế người khác in và sửa lại bản vẽ.
- Định dạng AutoLISP (.lsp)
- Dung lượng 2,5 KB khi giải nén, gói tải 525 KB
- Đóng gói RAR, một tệp lisp
Mật khẩu giải nén: autocad123
Một điểm nhỏ để bạn khỏi tìm nhầm. Thư mục trong gói đặt tên là n028.KHOABV - Thicongphanthotphcm, nhưng gói chỉ chứa đúng một tệp lisp khóa bản vẽ. Tên thư mục là dấu vết một lần gom tệp cũ, không phải nội dung công trình nào. Các lisp khác của trang gom ở bài tổng hợp lisp cad.
Lệnh KHOA thực sự làm gì với bản vẽ
Lisp định nghĩa lệnh KHOA bằng dòng (defun c:khoa ...). Bài cũ ghi đúng tên lệnh này. Khi chạy, lisp làm ba việc với toàn bộ nét vẽ trong bản vẽ.
Ba việc lisp làm khi bạn gõ KHOA
Việc thứ nhất, dồn nét vẽ lên lớp DEFPOINTS. Lisp tạo lớp tên DEFPOINTS rồi đưa mọi đối tượng sang đó. DEFPOINTS là lớp đặc biệt của AutoCAD, sinh ra để chứa điểm gốc của kích thước. Lớp này không bao giờ in ra giấy, dù bạn có bật in cho nó hay không. Đưa nét vẽ lên đây chính là cách chặn in.
Việc thứ hai, gói từng nét vào khối MINSERT. Lisp biến mỗi nét thành một block rồi chèn lại bằng lệnh MINSERT. MINSERT là kiểu chèn block xếp theo hàng và cột. Điểm mấu chốt nằm ở đây: AutoCAD không cho explode một khối MINSERT. Tài liệu của Autodesk ghi rõ khối tạo bằng MINSERT không thể phá thành nét rời. Đây là cách chặn sửa, vì bạn không tách được nét đơn ra để chỉnh.
Việc thứ ba, gói cả bản vẽ rồi nhân bốn. Cuối cùng lisp gom tất cả thành một block lớn, rồi lại MINSERT một lần nữa với hai hàng hai cột và khoảng cách bằng không. Nghĩa là mỗi thứ bị nhân thành bốn bản chồng khít lên nhau. Bản vẽ trông y như cũ nhưng nặng gấp mấy lần. Đây là lý do bài cũ nói khóa xong file rất nặng và quá trình có thể lâu tới nửa giờ.
Hình 1. Ba việc lệnh KHOA làm khi chạy. Cả ba đều là thao tác sắp xếp lại bản vẽ, không phải mã hóa.
Vì sao chính bạn cũng không dùng được nữa
Sau khi chạy, nét vẽ nằm trên DEFPOINTS nên chính bạn cũng không in được. Chúng lại nằm trong khối MINSERT nên chính bạn cũng không sửa được. Vì thế bài cũ dặn phải tạo bản sao trước khi khóa, và dặn đúng. Khóa đè lên tệp duy nhất là tự làm mất bản vẽ của mình. Luôn giữ một bản gốc chưa khóa ở nơi khác trước khi gõ KHOA.
Vì sao lisp khóa bản vẽ cad không phải bảo mật thật
Cần nói thẳng để bạn khỏi giao nhầm file cho khách. Cách khóa này không mã hóa dữ liệu và không đặt mật khẩu mở file. Nó chỉ lợi dụng hai hành vi có sẵn của AutoCAD: lớp DEFPOINTS không in, và khối MINSERT không explode. Cả hai đều là tính năng bình thường mà người rành AutoCAD đều biết. Vì thế người có nghề gỡ được dễ dàng, và trên mạng có sẵn cả lisp gỡ khóa kiểu này. Bài này không hướng dẫn cách gỡ khóa bản vẽ của người khác. Điều cần nhớ chỉ là đừng tin file đã khóa là an toàn rồi yên tâm gửi đi.
Chống được ai, không chống được ai. Cách khóa bằng lisp chặn được người dùng phổ thông tò mò, không chặn được người có nghề. Nếu bản vẽ thật sự cần giữ kín, hãy kiểm soát ai được nhận file, đừng đặt hết niềm tin vào một đoạn lisp.
Nạp lisp an toàn và cảnh báo hai chiều
Nạp lisp thì gõ APPLOAD, trỏ tới tệp KHOABV.LSP, bấm Load. AutoCAD đời mới không cho tệp lisp chưa ký nằm ngoài thư mục tin cậy chạy tự do. Nó dừng lại và bật hộp thoại Security - Unsigned Executable File.
Hình 2. Hộp thoại chặn tệp lisp chưa ký. Ba nút ở đáy quyết định lisp có chạy hay không.
Ba nút có nghĩa khác nhau. Load Once cho chạy đúng lần này. Do Not Load là không nạp. Always Load thì AutoCAD nhớ và thôi hỏi. Hành vi này do biến SECURELOAD điều khiển. Mặc định là 1, tức hỏi mỗi khi nạp tệp từ ngoài thư mục tin cậy. Đặt 2 thì chỉ nạp được từ thư mục tin cậy và không hỏi nữa. Đặt 0 thì tắt kiểm tra và không nên dùng.
Lisp tự chạy khi mở file là dấu hiệu đáng ngại
Đây là mặt còn lại của chuyện khóa bằng lisp, và là mặt nguy hiểm. Một tệp lisp tự chạy ngay khi mở bản vẽ chính là cơ chế mà mã độc CAD dùng. Họ mã độc ACAD/Medre từng lây qua các tệp tự nạp như acad.lsp, acad.fas và acaddoc.lsp. Nó âm thầm gửi bản vẽ của nạn nhân ra ngoài, một vụ nghi là gián điệp công nghiệp. Tệp KHOABV.LSP ở bài này là lệnh chạy tay, bạn phải gõ KHOA nó mới chạy, nên bản thân nó không tự lây. Nhưng nhận một bản vẽ lạ mà vừa mở đã thấy lisp chạy thì phải cảnh giác ngay.
Hai biến giúp bạn tự bảo vệ. Giữ SECURELOAD ở mức mặc định để AutoCAD chặn tệp chưa ký từ nơi lạ. Đặt ACADLSPASDOC ở mức 0 thì tệp acad.lsp chỉ nạp một lần lúc mở chương trình, không nạp lại vào từng bản vẽ. Cần nhớ tệp acaddoc.lsp thì luôn nạp theo mỗi bản vẽ bất kể biến này. Vì thế acaddoc.lsp lạ là nơi cần soi đầu tiên khi nghi máy nhiễm.
Cách gửi bản vẽ đúng hơn khóa lisp
Nếu mục tiêu là để người khác xem chứ không sửa, có mấy đường chính quy và chắc hơn khóa lisp.
Chỉ cần cho xem và in thì xuất ra PDF hoặc DWF. Người nhận xem, đo và in được, nhưng không có nét CAD để sửa. Đây là cách gửi bản vẽ tham khảo an toàn và nhẹ nhất, cũng là cách nhiều công ty dùng khi giao hồ sơ cho bên ngoài.
Buộc phải gửi tệp DWG thì dùng WBLOCK rồi PURGE. Lệnh WBLOCK ghi ra một tệp mới chỉ gồm phần bạn muốn gửi. Sau đó PURGE bỏ các block, layer, kiểu chữ không dùng. Gõ tay -PURGE còn bỏ được vài thứ mà PURGE thường sót. Cách này không giấu được nét vẽ, nhưng cắt bớt dữ liệu bạn không muốn lộ ra theo file.
Đừng trông vào mật khẩu bản vẽ dựng sẵn, vì nó không còn. AutoCAD từng cho đặt mật khẩu ngay trong tệp DWG, nhưng tính năng đó bị bỏ từ bản 2016 do mã hóa quá yếu. Nay AutoCAD không còn mật khẩu bản vẽ dựng sẵn. Muốn bí mật thật thì kiểm soát khâu phát file, hoặc dùng một phần mềm mã hóa riêng đạt chuẩn hiện hành.
Hình 3. Chọn cách gửi theo nhu cầu thật. Khóa bằng lisp không nằm trong ba đường này vì nó không bảo vệ chắc.
Lỗi thường gặp khi dùng lisp này
| Tình huống | Vì sao | Cách xử lý |
|---|---|---|
| Gõ KHOA báo Unknown command | Lisp chưa nạp, hoặc bạn lỡ bấm Do Not Load ở hộp thoại bảo mật | Nạp lại bằng APPLOAD, lần này chọn Load Once |
| Khóa xong không in được nữa | Nét vẽ nằm trên lớp DEFPOINTS, lớp này không in | Đó là mục đích của lisp; muốn in phải dùng bản gốc đã sao lưu |
| Chính mình cũng không sửa được | Mọi nét đã gói trong khối MINSERT, không explode được | Sửa trên bản sao chưa khóa; đừng khóa lên file duy nhất |
| Khóa chạy rất lâu, file phình to | Mỗi nét bị nhân thành bốn bản chồng khít | Chờ, hoặc chỉ khóa bản vẽ đã dọn gọn trước |
| File lạ tự chạy lisp ngay khi mở | Có thể là mã độc CAD kiểu ACAD/Medre lây qua tệp tự nạp | Giữ SECURELOAD mặc định, quét file trước khi mở |
Câu hỏi thường gặp
Lệnh của lisp khóa bản vẽ cad tên là gì?
Tên lệnh là KHOA. Đọc trong mã nguồn thấy dòng khai báo (defun c:khoa ...), đúng như bài cũ ghi. Nạp lisp rồi gõ KHOA là chạy, không có tham số nào phải nhập thêm.
Khóa bằng lisp này có phải mã hóa bản vẽ không?
Không. Lisp không mã hóa và không đặt mật khẩu mở file. Nó chỉ dời nét vẽ sang lớp DEFPOINTS không in và gói vào khối MINSERT không tách. File vẫn mở bình thường trên mọi máy, chỉ là khó in và khó sửa.
Người khác có gỡ khóa được không?
Có. Người rành AutoCAD gỡ được vì đây không phải bảo mật thật, chỉ là hai hành vi có sẵn của phần mềm. Bài này không nêu cách gỡ. Ý cần nhớ là đừng coi file đã khóa như một file được bảo vệ chắc chắn.
Có nên khóa file rồi gửi cho khách không?
Nếu khách chỉ cần xem thì gửi PDF hoặc DWF gọn và an toàn hơn. Nếu buộc gửi DWG thì dùng WBLOCK rồi PURGE để bớt dữ liệu. Dù chọn cách nào cũng phải giữ lại bản gốc chưa khóa cho mình.
Mở file người lạ có bị lisp tự chạy hại máy không?
Có thể, nếu file đi kèm tệp tự nạp như acaddoc.lsp chứa mã xấu. Đó là cách họ mã độc ACAD/Medre lây. Giữ SECURELOAD ở mặc định, để mắt biến ACADLSPASDOC, và quét file trước khi mở là cách phòng.
AutoCAD có sẵn cách đặt mật khẩu bản vẽ không?
Không còn. Tính năng mật khẩu trong tệp DWG bị bỏ từ AutoCAD 2016 vì mã hóa quá yếu. Muốn giữ kín thật thì kiểm soát người nhận hoặc dùng phần mềm mã hóa riêng.













