Xóa mật khẩu khỏi Tài liệu Excel


11

Tôi đang cung cấp hỗ trợ nội bộ và một trong những người dùng của chúng tôi đã vô tình đặt mật khẩu vào tệp excel, tôi đã thực hiện kiểm tra thích hợp để đảm bảo rằng người dùng sẽ có quyền truy cập vào tài liệu và bây giờ muốn biết những gì đề nghị xóa mật khẩu khỏi tài liệu Excel.

Để biết giá trị của nó, mật khẩu xuất hiện sau khi Excel mở nhưng trước khi bạn có thể thấy bất kỳ dữ liệu nào trong excel.


Ừm, bạn đang bị nhồi. Trừ khi bạn muốn thực hiện công cụ mã hóa phức tạp ... (Tôi không biết về bất kỳ chương trình nào để thực hiện việc này trên .xls). Không có cách tự động, bình thường để làm điều này trong Excel - điều đó sẽ đánh bại điểm có mật khẩu ngay từ đầu ... hy vọng duy nhất của bạn sẽ là một chương trình bẻ khóa mật mã đặc biệt cho các tệp như vậy (có thể khó thực hiện tìm thấy). Có thể Google decrypt xlshoặc một cái gì đó tương tự.
Samuel Jaeschke

tệp excel .xlsx thực sự chỉ là một tệp zip. giải nén và làm theo hướng dẫn như thế này. đã cố gắng trong quá khứ không chắc chắn nếu nó hoạt động nếu toàn bộ tập tin được bảo vệ bằng mật khẩu. nileshkumar83.blogspot.com/2012/05/...
Joop

1
@SamuelJaeschke Phương thức hook tại stackoverflow.com/a/27508116/5757159 hoạt động mọi lúc. Không cần bẻ khóa.
ThunderFrame

Câu trả lời:


11

Elcomsoft tạo ra một chương trình khá hữu ích có tên Advanced Office Password Recovery , có thể thực hiện công việc tốt hơn bất kỳ thứ gì khác mà tôi đã sử dụng.

Có thể đáng để đặt một giá trị cho dữ liệu bạn đang cố khôi phục trước khi thử điều này, đôi khi sẽ ít tốn kém hơn khi cho phép người dùng tạo lại tài liệu từ đầu (và dạy cho họ một bài học quý giá ;-)). AOPR không miễn phí và đôi khi mật khẩu chỉ có thể được xử lý bằng vũ lực (thử mọi cách kết hợp các chữ cái có thể) có thể mất nhiều thời gian.


Các chương trình của Elmcomsoft rất tốt, trước đây tôi đã thành công với việc mở tệp Excel mà tôi đã gửi mà không cần mật khẩu. Nhận một danh sách từ tốt, và thử đầu tiên (cái được bao gồm trong Cain và Abel là một cái 3MB đẹp). Nếu thất bại, hãy thử dùng vũ lực, nhưng nếu đó là mật khẩu mạnh, bạn sẽ không bao giờ vào được.
Dentrasi

Tôi không phải là người thích giới thiệu phần mềm thương mại trên trang web này, nhưng trong trường hợp này, đây là sự lựa chọn tốt nhất. Đề nghị. +1.
bất cứ lúc nào

1

Là một cái gì đó như thế này, bổ trợ XLA của Công cụ xóa mật khẩu Excel , bạn sẽ làm gì sau đây?

EDIT: Suy nghĩ về nó, có thể không - điều này được sử dụng để xóa mật khẩu khỏi bảng tính / sổ làm việc được bảo vệ.


liệu về mặt đạo đức chúng ta có thể giải quyết bằng cách sử dụng công cụ này?
joe

1

Nếu bạn biết mật khẩu là gì, hãy tiếp tục và mở tài liệu Excel. Sau đó bấm vào Tệp> Lưu dưới dạng. Ở bên trái của nút Lưu là một công cụ nhỏ có nhãn thả xuống. Bấm vào đó, và sau đó bấm vào Tùy chọn chung. Xóa các mục nhập mật khẩu ở đó, và bấm OK. Lưu tài liệu.

Nếu bạn không biết mật khẩu là gì, bạn có thể sử dụng VBA để tìm mật khẩu. Nếu tôi phải đoán, người dùng của bạn có thể đã không sử dụng mật khẩu siêu mạnh, vì vậy chúng tôi có thể sử dụng phương pháp loại vũ phu để tìm ra nó. Mã dưới đây là thô, nhưng nó đã giúp tôi tìm thấy một mật khẩu yếu, bị mất trên một số tài liệu của người dùng. Nó kiểm tra mật khẩu có độ dài bất kỳ với các ký tự ASCII từ 1 đến z. Bạn sẽ gọi nó từ Cửa sổ ngay lập tức và đợi vài phút như vậy:

? GetPassword("D:\mywkbk.xlsx")

-

Public Function GetPassword(ByRef sFileName As String) As String
On Error Resume Next
    Dim pw As String
    pw = ""
    Do
        VBA.Err.Clear
        pw = GenerateNextPassword(pw)            
        Application.Workbooks.Open sFileName, False, True, , pw, pw
        VBA.DoEvents
    Loop While VBA.Err.Number = 5408
    GetPassword = pw
End Function

Public Function GenerateNextPassword(ByRef sCurrentPassword As String) As String
    Const MAX_CHAR = 122
    Const MIN_CHAR = 49

    Dim sCurrentPasswordMax As String
    Dim sNewPassword As String
    Dim i As Long

    sCurrentPasswordMax = String(Len(sCurrentPassword), Chr(MAX_CHAR))
    If sCurrentPassword = sCurrentPasswordMax Then
        'do an increment that changes the length
        sNewPassword = String(Len(sCurrentPassword) + 1, Chr(MIN_CHAR))
        Debug.Print Now(); ": "; sNewPassword
    ElseIf Asc(Right(sCurrentPassword, 1)) = MAX_CHAR Then
        'do an increment that changes multiple characters
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(MIN_CHAR)
        For i = Len(sCurrentPassword) - 1 To 1 Step -1
            sNewPassword = Left(sNewPassword, i - 1) & Chr(Asc(Mid(sNewPassword, i, 1)) + 1) & Mid(sNewPassword, i + 1)
            If Asc(Mid(sCurrentPassword, i, 1)) <> MAX_CHAR Then
                Exit For
            End If
        Next i
    Else
        'do an increment on the rightmost character
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(Asc(Right(sCurrentPassword, 1)) + 1)
    End If

    GenerateNextPassword = sNewPassword
End Function

Nó ngầm hiểu rằng mật khẩu đã bị mất và bị lãng quên, vì vậy đoạn đầu tiên của bạn không liên quan. Nếu bạn tìm thấy thói quen VBA của mình để xóa mật khẩu không xác định, vui lòng cho chúng tôi biết, nhưng tôi nghi ngờ rằng điều đó là không thể.
Scott

1
Sau khi đọc lại OP, tôi sẽ lập luận mạnh mẽ rằng không rõ mật khẩu đã bị mất, vì vậy tôi giữ đoạn đầu tiên ở đó. Tôi đã cập nhật câu trả lời với một số mã VBA có thể được sử dụng để tìm mật khẩu trong vòng vài phút hoặc lâu hơn nếu không biết mật khẩu.
Bobort

0

Cách tiếp cận Hook thể hiện trong bài viết SO này hoạt động MERYI LẦN.

/programming//a/27508116/5757159

Không có trình soạn thảo Hex, không tải xuống, không có trình cài đặt. Chỉ là một giải pháp VBA thuần túy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.