Kategorie powiązane:

Jak złamać hasło do kodu VBA

HintMine

Cześć :)

 

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ę:

  1. Jak dostać się do struktury plików Excela bez żadnych dodatkowych programów.

  2. Gdzie w strukturze Excelowej przechowywany jest kod VBA.

  3. Które elementy pliku vbaProject.bin odpowiadają za zabezpieczenie kodu.

  4. Jak złamać hasło do kodu VBA.

  5. 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).

karta widok

 

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ć” 😉

jak włączyć rozszerzenia nazw plików

 

Teraz nasz plik z zahasłowanym kodem VBA ma na końcu po nazwie rozszerzenie „.xlsm” (lub „.xlsb” 😉 )

zmień rozszerzenie na zip

 

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”

zamiana rozszerzeń pliku

 

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

otwieranie paczki zip w 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 :)

gdzie znaleźć plik vbaProject.bin

 

Kolejny krok, to złapanie pliku vbProject.bin i wyciągnięcie (czyli „wypakowanie”) go gdzieś obok (np. na pulpit).

wypakowanie pliku vbaProject.bin

 

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

otwieranie pliku vbaProject.bin w Notepad++

 

Naszym oczom ukaże się całe stado różnych dziwnych znaczków…

zawartość pliku vbaProject.bin

 

Zjeżdżamy na sam dół pliku i lokalizujemy tam linię zaczynającą się od liter DPB

klucz DPB w pliku vbaProject.bin

 

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”.

zamiana klucza DPB na DPa

 

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” :)

zamiana klucza potwierdzenie

 

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ł 😉 )

przywracanie rozszerzeń

 

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:

komunikat błąd klucza

 

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 😉

komunikat Unexpected error

 

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

jak wejść do VBAProject Properties

 

Następnie na karcie Protection musimy odznaczyć ptaszka przy opcji Lock Project for Viewing

odblokowanie projektu VBA

 

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 :)

Powrót do:
Blog VBA | Podstawy VBA |


Zobacz też: