내부 지원을 제공하고 있으며 사용자 중 한 명이 실수로 Excel 파일에 암호를 입력했을 때 사용자가 문서에 액세스 할 수 있는지 확인하기 위해 적절한 검사를 수행했으며 이제는 Excel 문서에서 암호를 제거하기위한 권장 사항.
그 가치에 대해 암호는 Excel이 열리면 Excel에서 데이터를 볼 수 있기 전에 나타납니다.
내부 지원을 제공하고 있으며 사용자 중 한 명이 실수로 Excel 파일에 암호를 입력했을 때 사용자가 문서에 액세스 할 수 있는지 확인하기 위해 적절한 검사를 수행했으며 이제는 Excel 문서에서 암호를 제거하기위한 권장 사항.
그 가치에 대해 암호는 Excel이 열리면 Excel에서 데이터를 볼 수 있기 전에 나타납니다.
답변:
Elcomsoft는 Advanced Office Password Recovery 라는 매우 유용한 프로그램을 만들었습니다.이 프로그램은 내가 사용한 것보다 더 잘 할 수 있습니다.
시도하기 전에 복구하려는 데이터에 가치를 두는 것이 좋습니다. 때로는 사용자가 문서를 처음부터 다시 만들도록하는 것이 더 저렴합니다 (그리고 가치있는 교훈을 가르치는 ;-)). AOPR은 무료가 아니며 암호는 때로는 시간이 오래 걸릴 수있는 무차별 대입 (가능한 모든 문자 조합 시도)으로 만 해결 될 수 있습니다.
이 같은의가 엑셀 비밀 번호 리무버 XLA 추가 기능에, 당신이 후 무엇입니까?
편집 : 생각할 수도 있고 아닐 수도 있습니다-보호 된 워크 시트 / 통합 문서에서 암호를 제거하는 데 사용됩니다.
암호가 무엇인지 알고 있다면 계속해서 Excel 문서를여십시오. 그런 다음 파일> 다른 이름으로 저장을 클릭하십시오. 저장 버튼의 왼쪽에는 도구라고 표시된 작은 드롭 다운 메뉴가 있습니다. 해당 항목을 클릭 한 다음 일반 옵션을 클릭하십시오. 암호 항목을 삭제하고 확인을 클릭하십시오. 문서를 저장하십시오.
암호가 무엇인지 모르면 VBA를 사용하여 찾을 수 있습니다. 추측해야 할 경우 사용자가 매우 강력한 암호를 사용하지 않았기 때문에 무차별 강제 유형 방법을 사용하여 찾을 수 있습니다. 아래 코드는 거칠지 만 일부 사용자 문서에서 약하고 분실 된 암호를 찾는 데 도움이되었습니다. 1에서 z까지의 ASCII 문자로 모든 길이의 비밀번호를 확인합니다. 직접 실행 창에서 호출하고 몇 분 정도 기다리십시오.
? 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
이 SO 기사에서 설명한 후크 접근 방식은 항상 작동합니다.
https://stackoverflow.com/a/27508116/5757159
16 진 편집기, 다운로드, 설치 프로그램이 없습니다. 순수한 VBA 솔루션 일뿐입니다.
decrypt xls
이나 비슷한 것입니다.