Как работает этот взломщик паролей? Может ли он быть адаптирован к другим вещам?
Мне пришлось использовать этот код для удаления паролей из защищенных листов, к которым никто не знает пароль, мне интересно узнать, как он на самом деле работает и можно ли его настроить для удаления паролей из других битов Excel, например, структуры книги или пароли к книгам?
Sub PasswordBreaker()
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
1 ответ
Да, его можно использовать для взлома чего угодно, кроме пароля, используемого для открытия файла.
Причина, по которой он работает, заключается в том, что в Excel хэшируются пароли, поэтому на самом деле существует всего 194K различных хеш-значений.
Подробное обсуждение:
Причина в том, что введенные вами пароли (т. Е. С помощью Tools/Protect/Protect Worksheet или /Protect Workbook) не используются непосредственно в защите. Вместо этого они хешируются (математически преобразуются) в гораздо менее безопасный код. Фактически любой пароль любой длины преобразуется в строку из 12 символов, первые 11 из которых имеют одно из двух возможных значений. Оставшийся символ может иметь до 95 возможных значений, что приводит только к
2^11 * 95 = 194,560
потенциальные пароли. Это может показаться большим, но современному компьютеру требуется всего несколько секунд, чтобы попробовать их все. Для сравнения: 4-значный пароль, содержащий только 26 букв нижнего регистра, имеет 456 976 комбинаций, а 3-значный пароль, состоящий из нижнего регистра, верхнего регистра и цифр 0-9, будет иметь 238 328 комбинаций.
Опять же, не имеет значения, какой у вас исходный пароль, одна из этих строк 194K разблокирует ваш лист или рабочую книгу.