Mã VBA trong tệp Excel 2007 định dạng xlsm an toàn đến mức nào?

Chào. Tôi muốn hỏi, liệu những cải tiến về bảo mật trong Excel 2007 có hiệu quả đối với mật khẩu VBA không?

Tôi không biết liệu mình có đang tìm kiếm sai chỗ hay không, nhưng tôi đã dành vài giờ để nghiên cứu mà vẫn không tìm được câu trả lời thỏa đáng.

Tóm lại:

- Cách an toàn nhất để bảo vệ mã VBA của bạn khỏi bị người khác xem là gì?

- Cơ chế bảo vệ hoạt động như thế nào?

- Có phần mềm nào có thể phá vỡ/thay thế mật khẩu/tạo cửa hậu cho nó không? Có rất nhiều phần mềm miễn phí để phá mật khẩu Office 2003. Tôi cũng thấy một bài báo nói rằng bạn có thể mở tệp Excel 2007 bằng trình chỉnh sửa hex và dễ dàng tìm ra mật khẩu.

- Office 2010 có những cải tiến nào không?

Cảm ơn!


hydrogonium


Trả lời:

CHÀO,

Sau khi nghỉ hưu, tôi kiếm được một khoản thu nhập kha khá từ việc khôi phục mật khẩu bị mất cho mọi loại tập tin. Trong số những mật khẩu dễ nhất là mật khẩu MS Office, và theo thứ tự độ khó:

Mật khẩu để mở khóa --- khó đối với người dùng máy tính nhưng thường có thể được gỡ bỏ ngay lập tức bằng cách giải mã. Xem

http://www.decryptum.com/

Một khi đã đưa vào sổ tay thì hãy quên nó đi, bạn có thể làm được với Google và ý chí quyết tâm.

Tôi không có ý định tiết lộ bí mật ở đây nhưng mật khẩu nội bộ cực kỳ yếu và trong một số trường hợp, mật khẩu thậm chí không được lưu trữ, thay vào đó mật khẩu được mã hóa thành một chuỗi 12 ký tự, trong đó 11 ký tự đầu tiên là A hoặc B và ký tự cuối cùng là một trong 95 ký tự khác, vì vậy công thức

95*2^11 = 194.560

Đây là tổng số mật khẩu bảo vệ sổ làm việc và bất kể bạn sử dụng mật khẩu nào, một trong những chuỗi ký tự đó sẽ mở được sổ.

- Office 2010 có những cải tiến nào không?

Mật khẩu để mở vẫn không thay đổi và tôi chưa gặp bất kỳ khó khăn nào với mật khẩu nội bộ.

Nếu bạn không muốn chi mạnh tay thì phần mềm tôi đang dùng rất nguy hiểm.

http://www.lostpassword.com/kit-enterprise.htm

- Cách an toàn nhất để bảo vệ mã VBA của bạn khỏi bị người khác xem là gì?

Đừng để ai khác có bản sao <g>


Nếu bài viết này giải đáp được thắc mắc của bạn, vui lòng đánh dấu nó là câu trả lời.
Mike H

Trả lời:

Cảm ơn câu trả lời của bạn. Sau khi đăng bài, tôi mới nhận ra mình đáng lẽ phải nói là XLAM, mặc dù tôi không chắc điều đó có tạo ra sự khác biệt hay không.

Điều khiến tôi bối rối là Office 2010 được cho là sử dụng mã hóa 128 bit cho ít nhất một số mật khẩu (tôi cho rằng là để mở khóa) và điều đó yêu cầu mật khẩu mạnh. Một mật khẩu mạnh về cơ bản là không thể khôi phục được. Tôi nghĩ rằng mã băm chỉ được sử dụng để bảo vệ cấu trúc bảng tính/sổ làm việc, điều mà tôi không quan tâm.

Ví dụ, phần mềm bạn đã liên kết đảm bảo khôi phục mật khẩu CHO ĐẾN phiên bản 2003. Tôi cho rằng phiên bản 2003 được bao gồm, nhưng ngay cả khi vậy, tôi nghĩ phiên bản 2007 lại khác. Tôi chỉ không thể hiểu chính xác lý do tại sao.

Tôi không nghĩ mình nhất thiết cần mật khẩu trực tiếp để mở, vì XLAM cần phải được mở để sử dụng... bạn có thông tin chi tiết hơn về từng loại mật khẩu và sự khác biệt giữa các phiên bản 2003, 2007 và 2010 không? Vì lý do nào đó tôi không tìm thấy câu trả lời thỏa đáng trên Technet.


hydrogonium

Trả lời:

Tôi không nghĩ mình nhất thiết cần mật khẩu trực tiếp để mở, vì XLAM cần phải được mở để sử dụng... bạn có thông tin chi tiết hơn về từng loại mật khẩu và sự khác biệt giữa các phiên bản 2003, 2007 và 2010 không? Vì lý do nào đó tôi không tìm thấy câu trả lời thỏa đáng trên Technet.

Việc bảo vệ bằng mật khẩu cho VBA trong Excel 2007 cũng giống như trong Excel 2003. Quá trình gỡ bỏ mật khẩu VBA cũng (gần như) tương tự (.xls, .xlam, .xlsm). Excel không an toàn ở bất kỳ phiên bản nào.


Mauro Gamberini - Microsoft© MVP(Excel)
http://www.maurogsc.eu/

Trả lời:

Bạn đã đề cập đến loại tệp .xlam ở phần sau của cuộc thảo luận, và tôi sẽ đưa ra một phương pháp để thực sự thắt chặt quyền truy cập vào một tiện ích bổ sung đến từ Jan Karel Pieterse trong một bài đăng trên nhóm người dùng cũ. Có vẻ như anh ấy đã tìm thấy nó ở một nơi khác, nhưng không nhớ nguồn gốc. Thực tế, nó được cung cấp như một phương pháp để bảo vệ mã bên trong một sổ làm việc (.xlsm) thay vì tệp .xlam, nhưng nó cũng sẽ hoạt động với trường hợp đó.

Quá trình thiết lập hơi phức tạp và tôi chưa thử nghiệm trên Excel 2007/2010 nhưng tôi không thấy lý do gì mà nó không hoạt động được với cả hai phiên bản này. Tôi chỉ khuyên bạn nên chắc chắn làm việc với bản sao của các bảng tính chứ không phải bản gốc. Ngoài ra, khi nó hoạt động, mã gốc cũng sẽ bị ẩn đi, vì vậy hãy giữ một bản sao khác của mã đó trong suốt quá trình thực hiện. Sau đây là các bước thực hiện:

1. Lưu tệp Excel (.xls) vào một tiện ích bổ sung (Tệp > Lưu dưới dạng.....)
2. Sau khi đã lưu tệp bổ sung (.xla), hãy đóng sổ làm việc Excel (.xls).
3. Nhấp đúp vào tiện ích bổ sung để mở nó.
4. Nhấn Alt+F11 để truy cập dự án VBA của tiện ích bổ sung.
5. Khóa dự án VBA bằng mật khẩu.
6. Nhấp đúp vào mô-đun mã "ThisWorkbook".
7. Nhấn phím F4 để mở cửa sổ Thuộc tính.
8. Thay đổi trạng thái "IsAddin" thành FALSE
9. Quay lại Excel bằng cách nhấn Alt+Q (hoặc đóng cửa sổ vbe)
10. Vào Công cụ > Chia sẻ Sổ làm việc
11. Khi hộp thoại xuất hiện, hãy chọn ô: (Cho phép thay đổi bởi.....)
12. Nhấn OK để đóng hộp thoại.
13. Khi được yêu cầu lưu, hãy nhấn OK.
14. Nhấn OK để chấp nhận rằng "không thể truy cập macro".
15. Lúc này bạn sẽ cảm thấy lâng lâng vì vừa nhận ra những gì mình đang có.
Đã biến mất ngay trước mắt bạn mà!
16. Xác minh rằng [SHARED] xuất hiện trên thanh tiêu đề của ứng dụng.
17. Bây giờ hãy lưu lại sổ làm việc dưới dạng Add-in (Tệp > Lưu dưới dạng...) và ghi đè lên tệp trước đó.
cái trước đó
18. Đóng sổ làm việc Excel này mà không lưu các thay đổi (bạn không cần nó).
19. Hãy thử nghiệm tiện ích bổ sung vừa lưu (mở nó, truy cập vbe, thử mở rộng).
Trong cửa sổ dự án, bạn sẽ nhận được thông báo mới "Dự án không thể xem được".
20. Bạn đã hoàn thành

Trân trọng,

Jan Karel Pieterse
Chuyên gia xuất sắc về Excel (Excel MVP)
http://www.jkp-ads.com
Thành viên của:
Hiệp hội các nhà phát triển văn phòng chuyên nghiệp
www.proofficedev.com


Tôi tự do vì tôi biết rằng chỉ mình tôi phải chịu trách nhiệm về mặt đạo đức cho mọi việc mình làm. (RA Heinlein)

Trả lời:

JLLatham, cảm ơn bạn về kỹ thuật đó. Có lẽ đó là thứ tôi đang tìm kiếm, nhưng tôi không chắc lắm, vì tôi không hiểu rõ nó đang làm gì? Liệu nó có thực sự khóa hoàn toàn các macro, không cho phép sử dụng nữa, hay chúng vẫn có thể chạy được, chỉ là mã nguồn không thể truy cập được?

Ngoài ra, mức độ bảo mật cho thông báo "không thể truy cập macro" từ sổ làm việc được chia sẻ là gì?

Cuối cùng: Tôi thấy một thủ thuật rất đơn giản để vượt qua hàng loạt lỗi trong Excel 2007, đó là tìm ra dự án VBA bằng cách mở tệp Excel đó trong trình chỉnh sửa hex. Bạn có quen thuộc với kỹ thuật này không?


hydrogonium

Trả lời:

Tôi chưa bao giờ dùng trình chỉnh sửa hex để kiểm tra bất kỳ loại tệp Excel nào; nhưng vì đã từng sử dụng các công cụ cấp thấp như vậy trước đây, tôi không nghi ngờ gì rằng bạn có thể xem bất cứ thứ gì có trong tệp và chỉnh sửa từng byte một nếu muốn. Có rất nhiều công cụ dành cho cả những người điều tra pháp y "không chuyên": Knoppix cho phép bạn làm việc với các tệp đĩa do Windows tạo ra ngay cả khi chính Windows không thể tìm thấy bất kỳ nội dung nào của ổ đĩa! Trình chỉnh sửa hex chỉ là một công cụ khác như vậy.

Theo tôi thấy, phương pháp mà Jan Karel Pieterse đã trình bày ở đây khá giống với cách hoạt động của nhiều tiện ích bổ sung đến từ các nguồn thương mại. Mặc dù tôi tin rằng mình đã từng tiếp cận được một số tiện ích đó thông qua việc bẻ khóa mật khẩu bằng một số công cụ như công cụ mà Mike H. đã đề cập.

Trong "giải pháp" này, tôi nghĩ bạn phải tách mã của mình ra khỏi sổ làm việc thực tế và sau đó tạo một tệp .xla từ đó, tệp này bạn sẽ tải cùng với sổ làm việc không chứa mã. Điều này có thể gây ra một số vấn đề, tôi chắc chắn nếu bạn đã sử dụng các tham chiếu đối tượng như "Me." hoặc "ThisWorkbook.", nhưng ActiveSheet. thì có lẽ sẽ ổn. Bởi vì mã của bạn sẽ nằm trong một sổ làm việc khác. Nhưng tôi có thể sai. Tôi chỉ lưu lại hướng dẫn này vì bạn không thể tìm thấy bất cứ thứ gì tương tự ở bất cứ nơi nào khác, và khi bạn làm theo chúng đến cùng, bạn sẽ có mã không thể truy cập được bằng các phương pháp "tiêu chuẩn" như cố gắng xem Dự án VBA trong Trình chỉnh sửa VBA, ngay cả khi bạn thành công trong việc bẻ khóa mật khẩu. Nhưng tôi chưa bao giờ thực hiện bước tiếp theo: tạo một "gói" để sử dụng tiện ích bổ sung đã tạo.

Nếu tôi hiểu đúng thì đây sẽ là một tiện ích bổ sung, do đó bạn sẽ phải sửa đổi mã bên trong để cung cấp quyền truy cập vào các Sub và Function nếu trước đây bạn phụ thuộc vào các nút hoặc sự kiện trên trang tính để kích hoạt chúng. Chính những sửa đổi kiểu đó mà tôi cho là cần thiết đã khiến tôi không tiến thêm bước nào nữa. Bạn có thể thử liên hệ với Jan Karel để xem liệu ông ấy có thể cung cấp thêm thông tin gì không. Bạn có thể tìm trang web của ông ấy bằng cách tìm kiếm tên đầy đủ của ông ấy trên web, hoặc truy cập danh sách thành viên Microsoft Excel MVP và tìm ông ấy ở đó: https://mvp.support.microsoft.com/communities/mvp.aspx


Tôi tự do vì tôi biết rằng chỉ mình tôi phải chịu trách nhiệm về mặt đạo đức cho mọi việc mình làm. (RA Heinlein)

Trả lời:

Bạn có thể bảo vệ mã nguồn bằng một ứng dụng nhỏ có tên "Protect VBA Code". Tôi đã mua ứng dụng này từ Dombaj Soft với giá 15 hoặc 20 đô la - một khoản đầu tư rẻ.

Nếu bạn quên mật khẩu và không muốn nhập mã để mở khóa dự án, bạn có thể sử dụng một chương trình khác có tên là PasswordTools từ PasswordTools.com; tôi chỉ mua mô-đun VBA vì đó là thứ duy nhất tôi sẽ sử dụng.

Không, tôi không nhận được bất cứ thứ gì cho việc này - tôi phải tự tìm kiếm/kiểm tra/trả tiền cho những thứ này.

Hai công cụ này đã giúp ích rất nhiều cho tôi, nhưng trước khi sử dụng Protect VBA Code để khóa dự án, hãy đảm bảo rằng bạn có một bản sao đã được mở khóa ở đâu đó (tôi dùng USB có mật khẩu bảo vệ) vì PasswordTools hoặc phần mềm khác sẽ không thể xóa hoặc đặt lại mật khẩu - tôi đã học được điều đó một cách khó khăn.

Điều này chỉ còn lại vấn đề cuối cùng là chứng chỉ số mà bạn sẽ sử dụng để ký dự án. Mặc dù mã nguồn được bảo vệ khỏi việc bị xem hoặc thay đổi, người dùng vẫn có thể thay đổi chứng chỉ số và phân phối lại mã nguồn như thể đó là chứng chỉ số của riêng họ.



Trả lời:

Vô nghĩa. Chỉ một dòng mã thôi.
Sổ làm việc ("test.xla").Lưu dưới dạng "c:\test.xla", Chế độ truy cập:=xlShared
Điều này khiến cho "lớp bảo vệ bổ sung" trở nên không hiệu quả.

Andreas.



Trả lời:
Bạn có thể bảo vệ mã nguồn bằng một ứng dụng nhỏ có tên "Protect VBA Code". Tôi đã mua ứng dụng này từ Dombaj Soft với giá 15 hoặc 20 đô la - một khoản đầu tư rẻ.

Vui lòng xem trang cá nhân của tôi và gửi cho tôi một tập tin được bảo vệ có chứa địa chỉ email của bạn trong mã VBA. Tôi sẽ gửi lại cho bạn tập tin đó mà không cần bảo vệ.

Andreas.



Trả lời:
Andreas, thật thú vị khi xem Kala Shan Jahan có chấp nhận lời đề nghị của anh hay không. Nếu có, kết quả của việc anh thao túng mọi thứ sẽ rất đáng quan tâm. Tôi gần như muốn mua phần mềm đó và tự mình thử nghiệm, nhưng chưa sẵn sàng bỏ ra 15 hay 20 đô la.

Comments

Popular posts from this blog

Xử lý hàng loạt các tệp Excel được bảo vệ bằng mật khẩu

Thu hẹp và mở rộng cột trong Excel

Excel: Tìm và trả về "số cuối cùng" trong một cột, trong đó cột chứa: cả ô trống và số dương tùy ý (lớn hơn 0).