Czy istnieje sposób na złamanie hasła w projekcie Excel VBA?
Poproszono mnie o aktualizację niektórych makr Excela 2003, ale projekty VBA są chronione hasłem i wygląda na to, że brakuje dokumentacji... nikt nie zna haseł.
Czy Jest jakiś sposób na usunięcie lub złamanie hasła w projekcie VBA?
21 answers
Możesz wypróbować bezpośrednie podejście VBA
, które nie wymaga edycji szesnastkowej. Będzie działać dla dowolnych plików (*.xls,*.xlsm,*.xlam ...).
Testowane i działa na
Excel 2007
Excel 2010
Excel 2013 - wersja 32 bitowa .
Excel 2016 - wersja 32 bitowa .
Szukasz wersji 64 bitowej? Zobacz https://stackoverflow.com/a/31005696/4342479
Jak to działa
Postaram się jak najlepiej aby wyjaśnić, jak to działa-proszę wybaczyć mój angielski.
- VBE wywoła funkcję systemową, aby utworzyć okno dialogowe hasło.
- Jeśli użytkownik wprowadzi odpowiednie hasło i kliknie OK, funkcja zwróci 1. Jeśli użytkownik wprowadzi błędne hasło lub kliknie Anuluj, funkcja ta zwróci 0.
- po zamknięciu okna dialogowego VBE sprawdza zwracaną wartość funkcji systemowej
- Jeśli ta wartość wynosi 1, VBE "pomyśli" , że hasło jest prawidłowe, stąd zablokowany projekt VBA zostanie otwarty.
- poniższy kod zamienia pamięć oryginalnej funkcji użytej do wyświetlenia okna dialogowego hasła na zdefiniowaną przez użytkownika funkcję, która zawsze zwróci 1 podczas wywoływania.
korzystanie z kodu
- Otwórz plik(y), które zawierają zablokowane projekty VBA
-
Utwórz nowy plik xlsm i zapisz ten kod w Module1
code credited to Siwtom (nick name), a Vietnamese developer
Option Explicit Private Const PAGE_EXECUTE_READWRITE = &H40 Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Long, Source As Long, ByVal Length As Long) Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, _ ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _ ByVal lpProcName As String) As Long Private Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As Long, _ ByVal pTemplateName As Long, ByVal hWndParent As Long, _ ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer Dim HookBytes(0 To 5) As Byte Dim OriginBytes(0 To 5) As Byte Dim pFunc As Long Dim Flag As Boolean Private Function GetPtr(ByVal Value As Long) As Long GetPtr = Value End Function Public Sub RecoverBytes() If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6 End Sub Public Function Hook() As Boolean Dim TmpBytes(0 To 5) As Byte Dim p As Long Dim OriginProtect As Long Hook = False pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA") If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6 If TmpBytes(0) <> &H68 Then MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6 p = GetPtr(AddressOf MyDialogBoxParam) HookBytes(0) = &H68 MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4 HookBytes(5) = &HC3 MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6 Flag = True Hook = True End If End If End Function Private Function MyDialogBoxParam(ByVal hInstance As Long, _ ByVal pTemplateName As Long, ByVal hWndParent As Long, _ ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer If pTemplateName = 4070 Then MyDialogBoxParam = 1 Else RecoverBytes MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _ hWndParent, lpDialogFunc, dwInitParam) Hook End If End Function
-
Wklej ten kod w Module2 i uruchom go
Sub unprotected() If Hook Then MsgBox "VBA Project is unprotected!", vbInformation, "*****" End If End Sub
Wróć do swoich projektów VBA i ciesz się.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 18:34:40
Tak jest, o ile używasz arkusza kalkulacyjnego formatu .xls
(domyślnie dla Excela do 2003 roku). W przypadku programu Excel 2007 domyślną wartością jest .xlsx
, co jest dość bezpiecznym formatem i ta metoda nie będzie działać.
Jak mówi Treb, to proste porównanie. Jedną z metod jest po prostu zamiana hasła w pliku za pomocą edytora szesnastkowego (zobacz Hex editors for Windows). Przykład krok po kroku:
- Utwórz nowy prosty plik excel.
- w części VBA, Ustaw proste hasło (say-1234).
- Zapisz plik i zakończ. następnie sprawdź Rozmiar pliku-zobacz Stewbob ' s gotcha
- otwórz właśnie utworzony plik za pomocą edytora szesnastkowego.
-
Skopiuj linie zaczynające się od następujących klawiszy:
CMG=.... DPB=... GC=...
Najpierw wykonaj kopię zapasową pliku excel, dla którego nie znasz hasła VBA, a następnie otwórz go za pomocą edytora szesnastkowego i wklej powyższe skopiowane linie z pliku atrapy.
- Save the plik excel i wyjście.
- teraz otwórz plik excel, w którym musisz zobaczyć kod VBA. Hasło do kodu VBA będzie po prostu 1234(jak w przykładzie pokazuję tutaj).
Jeśli potrzebujesz pracować z programem Excel 2007 lub 2010, poniżej znajdziesz inne odpowiedzi, które mogą Ci pomóc, szczególnie te: 1, 2, 3.
EDIT Luty 2015: dla innej metody, która wygląda bardzo obiecująco, spójrz na ta nowa ODPOWIEDŹ Autor: Đức Thanh Nguyễn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:00
Istnieje inne (nieco łatwiejsze) rozwiązanie, bez problemów z rozmiarem. Zastosowałem dziś takie podejście (na pliku XLS z 2003 roku, używając Excela 2007) i odniosłem sukces.
- Kopia zapasowa pliku xls
- Otwórz plik w edytorze szesnastkowym i zlokalizuj
DPB=...
część - Zmień łańcuch
DPB=...
naDPx=...
- Otwórz plik xls w Excelu
- Otwórz Edytor VBA (ALT + F11 )
- Magia: Excel odkrywa nieprawidłowy klucz (DPx) i pyta czy chcesz kontynuować ładowanie projektu (w zasadzie ignorując ochronę)
- będziesz mógł nadpisać hasło, więc zmień je na coś, co zapamiętasz
- Zapisz plik xls*
- Zamknij i otwórz ponownie dokument i pracuj swoją magią VBA!
*Uwaga: Upewnij się, że zmieniłeś hasło na nową wartość, w przeciwnym razie przy następnym otwarciu arkusza kalkulacyjnego Excel zgłosi błędy( nieoczekiwany błąd), a następnie po uzyskaniu dostępu do listy modułów VBA zobaczysz teraz nazwy modułów źródłowych, ale otrzymasz kolejny błąd podczas próby otwarcia forms / code / etc. Aby temu zaradzić, wróć do Właściwości projektu VBA i ustaw hasło na nową wartość. Zapisz i ponownie otwórz dokument Excel i powinieneś być gotowy do pracy!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-03 16:01:48
Zbudowałem na fantastycznej odpowiedzi, aby ta metoda mogła pracować z 64-bitowymi wersjami Excela. Używam programu Excel 2010 64-Bit NA 64-bitowym systemie Windows 7.
- otwórz pliki zawierające zablokowane projekty VBA.
-
Utwórz nowy plik xlsm i zapisz ten kod w Module1
Option Explicit Private Const PAGE_EXECUTE_READWRITE = &H40 Private Declare PtrSafe Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As LongPtr, Source As LongPtr, ByVal Length As LongPtr) Private Declare PtrSafe Function VirtualProtect Lib "kernel32" (lpAddress As LongPtr, _ ByVal dwSize As LongPtr, ByVal flNewProtect As LongPtr, lpflOldProtect As LongPtr) As LongPtr Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal lpModuleName As String) As LongPtr Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, _ ByVal lpProcName As String) As LongPtr Private Declare PtrSafe Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" (ByVal hInstance As LongPtr, _ ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _ ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer Dim HookBytes(0 To 5) As Byte Dim OriginBytes(0 To 5) As Byte Dim pFunc As LongPtr Dim Flag As Boolean Private Function GetPtr(ByVal Value As LongPtr) As LongPtr GetPtr = Value End Function Public Sub RecoverBytes() If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes(0)), 6 End Sub Public Function Hook() As Boolean Dim TmpBytes(0 To 5) As Byte Dim p As LongPtr Dim OriginProtect As LongPtr Hook = False pFunc = GetProcAddress(GetModuleHandleA("user32.dll"), "DialogBoxParamA") If VirtualProtect(ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) <> 0 Then MoveMemory ByVal VarPtr(TmpBytes(0)), ByVal pFunc, 6 If TmpBytes(0) <> &H68 Then MoveMemory ByVal VarPtr(OriginBytes(0)), ByVal pFunc, 6 p = GetPtr(AddressOf MyDialogBoxParam) HookBytes(0) = &H68 MoveMemory ByVal VarPtr(HookBytes(1)), ByVal VarPtr(p), 4 HookBytes(5) = &HC3 MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes(0)), 6 Flag = True Hook = True End If End If End Function Private Function MyDialogBoxParam(ByVal hInstance As LongPtr, _ ByVal pTemplateName As LongPtr, ByVal hWndParent As LongPtr, _ ByVal lpDialogFunc As LongPtr, ByVal dwInitParam As LongPtr) As Integer If pTemplateName = 4070 Then MyDialogBoxParam = 1 Else RecoverBytes MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _ hWndParent, lpDialogFunc, dwInitParam) Hook End If End Function
-
Wklej ten kod w Module2 i uruchom go
Sub unprotected() If Hook Then MsgBox "VBA Project is unprotected!", vbInformation, "*****" End If End Sub
DISCLAIMER to działało dla mnie i udokumentowałem to mam nadzieję, że to komuś pomoże. nie Przetestowałem go w pełni. Pamiętaj, aby zapisać wszystkie otwarte pliki przed przejściem do tej opcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 15:15:27
Colin Pickard ma doskonałą odpowiedź, ale jest jeden "uważaj" z tym. Istnieją przypadki (jeszcze nie rozgryzłem przyczyny), w których całkowita długość " CMG=........GC=...."wpis w pliku różni się od jednego pliku excel do następnego. W niektórych przypadkach ten wpis będzie wynosił 137 bajtów, a w innych 143 bajty. Długość 137 bajtów jest nieparzysta, a jeśli tak się stanie, gdy utworzysz plik z hasłem '1234', po prostu utwórz inny plik i powinien przeskoczyć do długości 143 bajtów.
Jeśli spróbujesz wkleić niewłaściwą liczbę bajtów do pliku, utracisz swój projekt VBA podczas próby otwarcia pliku w programie Excel.
EDIT
To nie dotyczy plików Excel 2007/2010. Standard .format pliku xlsx jest w rzeczywistości .plik zip zawierający liczne podfoldery z formatowaniem, układem, zawartością itp., przechowywane jako dane xml. W przypadku niezabezpieczonego pliku Excel 2007 możesz po prostu zmienić .rozszerzenie xlsx do .zip, a następnie otwórz plik zip i przejrzeć wszystkie dane xml. To bardzo proste.
Jednak, gdy chronisz hasłem plik Excel 2007, cały .zip (.xlsx) plik jest faktycznie szyfrowany za pomocą szyfrowania RSA. Nie ma już możliwości zmiany rozszerzenia na .zip i przeglądaj zawartość pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 19:04:15
Dla typu pliku .xlsm
LUB .dotm
należy to zrobić w nieco inny sposób.
- zmień rozszerzenie pliku
.xlsm
na.zip
. - Otwórz .plik zip (z WinZip lub WinRar itp) i przejdź do folderu xl.
- rozpakuj plik
vbaProject.bin
i otwórz go w edytorze szesnastkowym (używam HxD, jest całkowicie darmowy i lekki.) - wyszukaj
DPB
i zamień naDPx
i zapisz plik. - Zastąp stary plik
vbaProject.bin
tym nowym w spakowany plik. - zmień rozszerzenie pliku z powrotem na
.xlsm
. - otwórz skoroszyt pomiń komunikaty ostrzegawcze.
- Otwórz Visual Basic w Excelu.
- przejdź do zakładki Narzędzia > właściwości VBAProject>Ochrona.
- wprowadź nowe hasło i zapisz plik
.xlsm
. - Zamknij i otwórz ponownie, a nowe hasło zadziała.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-15 07:47:19
Warto zauważyć, że jeśli posiadasz plik Excel 2007 (xlsm), możesz po prostu zapisać go jako plik Excel 2003 (xls) i użyć metod opisanych w innych odpowiedziach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-25 01:29:54
Czy próbowałeś po prostu otworzyć je w OpenOffice.org?
Jakiś czas temu miałem podobny problem i okazało się, że Excel i Calc nie rozumieją nawzajem szyfrowania, a więc umożliwiają bezpośredni dostęp do prawie wszystkiego.
To było jakiś czas temu, więc jeśli to nie był zwykły Fuks z mojej strony, to też mogło być łatane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 15:50:42
W programie Excel 2007 należy zmienić rozszerzenie pliku na .zip W archiwum znajduje się podfolder xl, w nim znajdziesz vbaProject.bin. Wykonaj powyższy krok za pomocą vbaProject.bin następnie zapisz go z powrotem w archiwum. Zmodyfikuj swoje rozszerzenie i voila! (czyli wykonaj powyższe kroki)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 18:11:07
Colin Pickard jest w większości poprawny, ale nie myl ochrony "hasło, aby otworzyć" dla całego pliku z ochroną hasłem VBA, która jest zupełnie inna niż poprzednia i jest taka sama dla Office 2003 i 2007 (dla Office 2007 Zmień nazwę pliku na .zip i poszukaj vbaProject.kosz wewnątrz zamka). I że technicznie poprawnym sposobem edycji pliku jest użycie Ole compound document viewer, takiej jak CFX, aby otworzyć poprawny strumień. Oczywiście, jeśli tylko wymieniasz bajtów, może działać zwykły stary edytor binarny.
BTW, jeśli zastanawiasz się nad dokładnym formatem tych pól, mają to udokumentowane teraz:
Http://msdn.microsoft.com/en-us/library/dd926151%28v=office.12%29.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-30 00:55:56
W przypadku, gdy twój blok
CMG="XXXX"\r\nDPB="XXXXX"\r\nGC="XXXXXX"
w pliku 'znane hasło' jest krótszy niż istniejący blok w pliku 'nieznane hasło', wprowadź ciąg szesnastkowy końcowymi zerami, aby osiągnąć odpowiednią długość.
Np.
CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"
W pliku nieznanego hasła należy ustawić na
CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000"
aby zachować długość pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-06 14:21:38
Hasła projektu VBA w dokumentach Access, Excel, Powerpoint lub Word (2007, 2010, 2013 or 2016
wersje z rozszerzeniami .ACCDB .XLSM .XLTM .DOCM .DOTM .POTM .PPSM
) mogą być łatwo usunąć.
Jest to po prostu kwestia zmiany rozszerzenia nazwy pliku na .ZIP
, rozpakowania pliku i użycia dowolnego podstawowego edytora szesnastkowego (takiego jak XVI32), aby "złamać" istniejące hasło, co" myli " biuro, więc prosi o nowe hasło przy następnym otwarciu pliku.
Podsumowanie kroki:
- Zmień nazwę pliku tak, aby miał rozszerzenie
.ZIP
. - Otwórz
ZIP
i przejdź do folderuXL
. - rozpakuj
vbaProject.bin
i otwórz go za pomocą edytora szesnastkowego - "Szukaj i zamień" na "Zamień wszystkie" zmieniając
DPB
naDPX
. - Zapisz zmiany, umieść plik
.bin
z powrotem w zip, przywróć go do normalnego rozszerzenia i otwórz plik jak zwykle. - ALT + F11, aby wejść do edytora VB i kliknij prawym przyciskiem myszy w Eksploratorze projektu, aby wybrać
VBA Project Properties
. - na karcie
Protection
Ustaw nowe hasło. - kliknij
OK
, zamknij plik, otwórz go ponownie, naciśnij ALT + F11. - wprowadź nowe hasło, które ustawiłeś.
W tym momencie możesz całkowicie usunąć hasło, jeśli chcesz.
Pełne instrukcje {[17] } z filmem krok po kroku, który zrobiłem "way back when" są na YouTube tutaj.
To trochę szokujące, że to obejście istnieje od lat, a Microsoft nie naprawił problemu.
Morał z tej historii?
Microsoft Office hasła projektu VBA są nie należy na nich polegać dla bezpieczeństwa wszelkie poufne informacje. Jeśli Bezpieczeństwo jest ważne, użyj oprogramowania szyfrującego innej firmy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-10 14:57:49
Jeśli plik jest prawidłowym plikiem zip (kilka pierwszych bajtów to 50 4B
-- używane w formatach takich jak .xlsm
), rozpakuj plik i poszukaj pliku podrzędnego xl/vbaProject.bin
. Jest to plik CFB, podobnie jak pliki .xls
. Postępuj zgodnie z instrukcjami dla formatu XLS (zastosowanego do pliku podrzędnego) , a następnie po prostu spakuj zawartość.
Dla formatu XLS, możesz śledzić niektóre z innych metod w tym poście. Osobiście wolę szukać bloku DPB=
i zastępować tekst
CMG="..."
DPB="..."
GC="..."
Z pustym miejsca. Eliminuje to problemy z rozmiarem kontenera CFB.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 02:32:30
Tom-na początku zrobiłem błąd bo nie oglądałem rozmiaru bajtu a zamiast tego skopiowałem i wkleiłem z" CMG " ustawiony do kolejnego wpisu. Były to jednak dwa różne rozmiary tekstu między tymi dwoma plikami i straciłem projekt VBA, tak jak ostrzegał Stewbob.
Używając HxD, licznik śledzi ilość wybranego pliku. Kopiuj zaczynając od CMG aż licznik odczyta 8F (hex dla 143) i podobnie przy wklejaniu do zablokowanego pliku-skończyło się na dwukrotnym liczba "..."na końcu pasty, która wyglądała dziwnie i wydawała się prawie nienaturalna, ale zadziałała.
Nie wiem, czy to ważne, ale upewniłem się, że zamknąłem zarówno edytor hex, jak i excel przed ponownym otwarciem pliku w Excelu. Następnie musiałem przejść przez menu, aby otworzyć Edytor VB, do Właściwości Vbproject i wprowadzić "nowe" hasło, aby odblokować kod.
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 15:35:20
ElcomSoft produkuje Advanced Office Password Breaker i Advanced Office Password Recovery produkty, które mogą mieć zastosowanie w tym przypadku, o ile dokument został utworzony w Office 2007 lub wcześniej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 15:44:18
Wypróbowałem niektóre z powyższych rozwiązań i Żadne z nich nie działa dla mnie (plik excel 2007 xlsm). Potem znalazłem inne rozwiązanie, które nawet odzyskać hasło, a nie tylko go złamać.
Wstaw ten kod do modułu, uruchom go i daj mu trochę czasu. Odzyska Twoje hasło brutalną siłą.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-20 11:52:39
Moje Narzędzie, VbaDiff, odczytuje VBA bezpośrednio z pliku, więc możesz go użyć do odzyskania chronionego kodu VBA z większości dokumentów office bez uciekania się do edytora szesnastkowego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-24 13:30:04
Ochrona jest prostym porównaniem tekstu w Excelu. Załaduj program Excel do swojego ulubionego debugera (Ollydbg jest moim ulubionym narzędziem), Znajdź kod, który robi porównanie i napraw go, aby zawsze zwracał true, powinno to pozwolić ci uzyskać dostęp do makr.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-22 10:54:40
Rozszerzenie pliku excel zmienia się na xml. I otwórz go w notatniku. tekst hasła Znajdź w pliku xml.
Widzisz jak poniżej;
Sheets("Sheet1").Unprotect Password:="blabla"
(sorry for my bad english)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-06 11:40:29
W Excelu 2016 64-bitowym na komputerze z systemem Windows 10 użyłem edytora szesnastkowego, aby móc zmienić hasło chronionego xla (nie testowałem tego Dla żadnych innych rozszerzeń). Wskazówka: Utwórz kopię zapasową zanim to zrobisz.
Kroki, które podjąłem:
- Otwórz vba w edytorze hex (na przykład XVI)
- Szukaj na tym DPB
- Zmień DPB na coś innego, na przykład DPX Daruj sobie! / Align = "left" / xla, pojawi się komunikat o błędzie, tylko Kontynuuj.
- możesz teraz zmienić hasło .xla otwierając właściwości i przejdź do zakładki hasło.
Mam nadzieję, że to pomogło niektórym z was!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 09:09:30
Jeśli pracujesz w Java
Możesz spróbować VBAMacroExtractor
. Po wypakowaniu skryptów VBA z .xlsm
znalazłem tam hasło w postaci zwykłego tekstu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-08 13:37:56