Jak złamać hasło do kodu VBA
2022-04-03Cześć :)
Po przeczytaniu mojego poprzedniego posta (konkretnie tego) wiecie już jak złamać hasło do pliku Excel. Dziś pokażę Wam jak złamać hasło do kodu VBA bez instalowania żadnych dodatkowych programów!
Tak, tak hasła do projektów Visual Basic też można złamać i wcale nie trzeba do tego jakichś tajemnych mocy :) Co prawda trzeba mieć Notepad++ 😉 ale nie musi on być zainstalowany na komputerze, można użyć wersji portable. Skąd ją pobrać? Wszystko Wam zaraz opiszę.
W tym krótkim poście wyjaśnię:
-
Jak dostać się do struktury plików Excela bez żadnych dodatkowych programów.
-
Gdzie w strukturze Excelowej przechowywany jest kod VBA.
-
Które elementy pliku vbaProject.bin odpowiadają za zabezpieczenie kodu.
-
Jak złamać hasło do kodu VBA.
-
Czy da się zabezpieczyć makra tak, żeby nie dało się złamać hasła?
No to jedziemy, post może się wydawać długi ale większość treści to obrazki także bez stresu 😉
1. Jak dostać się do struktury plików Excela bez żadnych dodatkowych programów?
Żeby pozbyć się hasła najpierw musimy wejść do środka pliku Excelowego i nie chodzi mi tu o otwarcie samego pliku tylko o wejście do jego wnętrza / struktury.
Żeby tego dokonać możesz skorzystać z różnych zewnętrznych programów np. z 7zipa (tak jak opisywałem to w poprzednim poście o łamaniu hasła do arkusza Excela) i wtedy przeskakujesz od razu do punktu nr 2 w tym artykule :)
Ale może się tak zdarzyć, że nie masz na swoim komputerze ani 7zipa ani żadnych innych tego typu programów. Dodatkowo przyjmijmy, że nie możesz ich zainstalować bo jest to Twój komputer firmowy i nie masz uprawnień do instalowania czegokolwiek. Sytuacja wydaje się beznadziejna? Spokojnie damy radę! :)
Po pierwsze sprawdź, czy Twój Windows pokazuje rozszerzenia w nazwach plików. Domyślnie jest to wyłączone, więc trzeba (dosłownie na chwilę) to sobie włączyć.
W tym celu wejdź w jakikolwiek katalog (lub w np. Mój Komputer) i kliknij w kartę Widok (screen poniżej).
Następnie na menu, które się pojawi zaznacz ptaszka po prawej stronie przy kratce „Rozszerzenia nazw plików” (znów screen poniżej). Później jak już złamiemy hasło można sobie to „odklikać” 😉
Teraz nasz plik z zahasłowanym kodem VBA ma na końcu po nazwie rozszerzenie „.xlsm” (lub „.xlsb” 😉 )
Kolejny krok to zmiana tego rozszerzenia „.xlsm” na „.zip”. Spowoduje to wyświetlenie komunikatu (jak poniżej) ale oczywiście klikamy na nim „TAK” i w efekcie nasz plik Excelowy zamienia się wyglądem w paczkę „.zip”
To był najbardziej skomplikowany etap, teraz już pójdzie z górki 😉
Miało być bez dodatkowych programów, dlatego naszą paczkę otwieramy za pomocą programu wbudowanego w Windowsa czyli, klikamy prawym przyciskiem myszki w plik, i z menu wybieramy opcję Otwórz za pomocą a następnie Explorator Windows
Po tych wszystkich operacjach naszym oczom ukarze się wreszcie wnętrze pliku Excela :)
2. Gdzie w strukturze Excelowej przechowywany jest kod VBA.
Sprawa jest bardzo prosta, wszystkie nasze makra przechowywane są w pliku vbaProject.bin, który znajduje się w katalogu „XL” dlatego tam właśnie wchodzimy :)
Kolejny krok, to złapanie pliku vbProject.bin i wyciągnięcie (czyli „wypakowanie”) go gdzieś obok (np. na pulpit).
UWAGA!
Nie zamykamy otwartych bebechów naszego Excela, bo za chwilę będziemy do nich z powrotem wrzucać zmodyfikowany (odbezpieczony) plik vbaProject.bin.
Ok to teraz możemy się zająć łamaniem hasła do projektu VBA czyli modyfikowaniem zawartości pliku vbaProject.bin :)
3. Które elementy pliku vbaProject.bin odpowiadają za zabezpieczenie kodu.
Plik vbaProject.bin, jest (jak wskazuje na to jego rozszerzenie) plikiem binarnym… Co to dla nas w praktyce oznacza? Ano to, że nie możemy łatwo przeczytać tego, co ten plik w sobie przechowuje. A to co ten plik w sobie przechowuje jest dla nas kluczowe, bo ma tam zapisaną informację o założonym na kod VBA haśle :)
Oczywiście można spróbować otworzyć plik vbaProject.bin za pomocą notatnika Windowsowego ale… hasła w ten sposób niestety nie złamiemy :/ Teoretycznie cały proces, który opiszę poniżej będzie w zwykłym notatniku przebiegał bez problemowo, ale finalnie złamany Notatnikiem plik niestety nie będzie działał :/ Czemu? Nie mam pojęcia :) Wydaje mi się że notatnik przy zapisywaniu modyfikacji kasujących hasło „dodaje” do pliku coś od siebie, jakiś niedrukowany znak/znaki, których nie widzimy ale one powodują, że struktura pliku nam się „psuje” przez co Excel nie może się poprawnie otworzyć :/
Dlatego tak jak wspominałem we wstępie, będziemy potrzebowali Notepad++. Jeżeli pracujesz na korpo-kompie i nie masz na nim uprawnień do instalowania czegokolwiek, to:
a) sprawdź bo może Notepad++ masz już zainstalowany (wiele firm go używa)
b) jeżeli go nie masz, zobacz czy Twoja firma nie udostępnia przypadkiem jakiegoś swojego wewnętrznego SoftwareCenterDistr z którego użytkownik bez żadnych dodatkowych uprawnień może sobie doinstalowywać proste aplikacje (np. Notepad ++ 😉 )
c) gdyby okazało się, że żaden z powyższych punktów nie odnosi się do Ciebie, pozostaje nam uruchomienie Notepada++ w wersji portable.
Można go znaleźć w wielu różnych lokalizacjach np. na:
– portableApps
https://portableapps.com/de/apps/development/notepadpp_portable
– portableInfo
https://portable.info.pl/notepad-plus-plus-portable/
– czy na moim Google Drive 😉
https://bit.ly/36N62jZ
4. Jak złamać hasło do projektu VBA.
Gdy już mamy w taki czy inny sposób dostęp do programu Notepad++ otwieramy w nim plik vbaProject.bin
Naszym oczom ukaże się całe stado różnych dziwnych znaczków…
Zjeżdżamy na sam dół pliku i lokalizujemy tam linię zaczynającą się od liter DPB
Ta właśnie linia przechowuje zaszyfrowane hasło do kodu VBA. Ale uwaga nie możemy tej linii skasować tak jak to robiliśmy przy łamaniu hasła do arkusza Excela. Jeżeli to zrobimy, nasz Excel niestety się nie otworzy (znaczy otworzy się ale podczas otwierania usunie cały kod VBA).
To co zrobimy to mała podmianka nazwy tego klucza DPB :) Ja najczęściej zmieniam jego ostatnią literę na jakąkolwiek inną np. na „a”.
Po dokonaniu zmiany zapisujemy plik vbaProject.bin i „wrzucamy” go z powrotem do naszego cały czas rozbebeszonego otwartego w Exploratorze Windows folderu :)
Oczywiście pojawi się komunikat, że taki plik już w paczce istnieje i czy chcemy go nadpisać. Klikamy „tak” :)
Uwaga, to jeszcze nie koniec naszej drogi :)
I wcale nie chodzi mi tylko o to, że musimy teraz:
1. Zamknąć nasz rozbebeczony w Exploratorze Windows plik.
2. Z powrotem zamienić rozszerzenie paczki z „.zip” na „.xlsm” (czy „.xlsb” jeżeli ktoś takie miał 😉 )
Ważne żeby pamiętać jeszcze o dosłownie dwóch ostatnich rzeczach.
Po pierwsze otwieramy jak gdyby nigdy nic plik Excela a tu naszym oczom ukazuje się błąd :) Spokojnie tak miało być
Zwróćcie uwagę jaka jest treść tego błędu:
Excel mówi, że w swoich „bebechach” znalazł jakiś klucz którego nie rozumie i pyta nas czy chcemy kontynuować ładowanie pliku. No pewnie, że chcemy bo my wiemy skąd ten „dziwny” klucz DPa się wziął 😉 Więc klikamy „tak”.
Jak już plik się otworzy, wchodzimy do edytora VBA i… tutaj znów błąd i znów tak ma być! Ten błąd wcale nie jest Unexpected 😉
Klikamy OK (czasem trzeba kliknąć kilka razy) i ta dam! Jesteśmy w edytorze VBA. ALE UWAGA !!! Kto oglądał choć jeden film o Indiana Jones wie, że jak widzimy skarb to nie wolno się na niego rzucać… 😉
Nasze czary w Notepadzie++, zniszczyły informację, o przechowywanym haśle, ale żeby plik działał poprawnie musimy jeszcze wyłączyć blokowanie wyświetlania kodu. Spokojnie to tylko jedno kliknięcie (no może dwa 😉 )
Najpierw musimy kliknąć prawym klikiem myszki w VBAProject –> VBAProject Properties i wejść w kartę Protection
Następnie na karcie Protection musimy odznaczyć ptaszka przy opcji Lock Project for Viewing
Po wykonaniu tych kroków nadal nie rzucamy się na kod tylko ze spokojem zapisujemy plik i zamykamy edytor VBA a następnie zamykamy też cały plik Excela!!!
I dopiero teraz otwieramy plik Excela ponownie, nie powinno być już żadnych błędów ani komunikatów a po przejściu do edytora VBA, naszym oczom ukarze się upragniony kod VBA :)
5. Czy da się zabezpieczyć makra tak, żeby nie dało się złamać hasła?
Jeżeli z powodzeniem przeszliście przez wszystkie powyższe kroki, macie plik VBA ze zdjętym / złamanym hasłem :) Z jednej strony to fajnie ale z drugiej… pewnie część z was zaczęła się zastanawiać czy da się w takim razie zabezpieczyć makro tak, żeby niepowołane osoby nie były w stanie dostać się do kodu?
Ja swoje pliki zabezpieczam w nieco inny sposób, który jak na razie (z tego co wiem) jest bezpieczny i niełamliwy 😉 Ale wiecie… każde zabezpieczenie pewnie ktoś kiedyś złamie.
Tak czy siak, jeżeli chcecie się dowiedzieć w jaki sposób zabezpieczyć kod VBA żeby nie dało się złamać hasła, zapraszam na prowadzone przeze mnie szkolenia VBA gdzie pokazuję swój sposób :)