Рискую нарваться на грубость)), т.к эта тема уже много раз тут обсуждалась. Но вдруг данный аспект в ней еще не затрагивался (поиском не нашел). В общем, есть такой несложный код (ниже). Удивительно хорошо работает (по-крайней мере, то, что нужно было, освободил от защиты). Но никак не могу понять, как он работает. Опишите кто-нибудь, плиз.
Sub PasswordBreaker() 'Author unknown '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
> Но никак не могу понять, как он работает. Простой перебор 12-символьных строк, причем первые 11 букв могут быть A или B, а 12-я буква - символы с кодом от 32 до 126.
{quote}{login=Казанский}{date=18.11.2010 01:51}{thema=}{post}> Но никак не могу понять, как он работает. Простой перебор 12-символьных строк, причем первые 11 букв могут быть A или B, а 12-я буква - символы с кодом от 32 до 126.{/post}{/quote}
Я разделяю непонимание автора, так как этот макрос скинул пароль "555" строкой AABBABBAAAAG
{quote}{login=The_Prist}{date=18.11.2010 02:06}{thema=Re: Re: }{post}{quote}{login=webley}{date=18.11.2010 02:03}{thema=Re: }{post}Я разделяю непонимание автора, так как этот макрос скинул пароль "555" строкой AABBABBAAAAG{/post}{/quote}Не надо потому что воспринимать пароли, как нечто буквенное. Это шифрованные символы в виде байтов. И подбор ведется изсходя из этого.{/post}{/quote} Я понимаю функцию for... next. Вопрос глубже) Пример с 555 и AABBABBAAAAG. По идее тут зашифрована одна и та же комбинация байтов. Но какая? Почему автор кода написал его именно так? и почему отличается последний символ? загадка...
Кое-что тут: http://faqs.org.ru/softw/editors/office_pwd.htm Цитата: "Хеш (hash) - однонаправленная функция, при помощи которой для произвольного блока данных вычисляется уникальный идентификатор фиксированной длины. В FAQ мы будем говорить в основном о хеше пароля, который представляет набор байт, полученных из пароля по определенному алгоритму. Использование хешей позволяет осуществить проверку правильности пароля, не храня его в документе."
{quote}{login=Казанский}{date=18.11.2010 01:51}{thema=}{post}> Но никак не могу понять, как он работает. Простой перебор 12-символьных строк, причем первые 11 букв могут быть A или B, а 12-я буква - символы с кодом от 32 до 126.{/post}{/quote} таблица символов ascii http://techonthenet.com/ascii/chart.php я вот недогоняю, почему перебор от 64 до 65? почему не от 0 до 126? (поставил у себя значения для всех 32-126: думает уже минут 10))
{quote}{login=Казанский}{date=18.11.2010 02:53}{thema=}{post}Кое-что тут: http://faqs.org.ru/softw/editors/office_pwd.htm Цитата: "Хеш (hash) - однонаправленная функция, при помощи которой для произвольного блока данных вычисляется уникальный идентификатор фиксированной длины. В FAQ мы будем говорить в основном о хеше пароля, который представляет набор байт, полученных из пароля по определенному алгоритму. Использование хешей позволяет осуществить проверку правильности пароля, не храня его в документе."{/post}{/quote} VelvetSweatshop что-то не сработал))