Przejdź do głównej treści

Zabawa z zabezpieczonymi plikami Microsoft Excel

Zawartość

Ostatnio w pracy napotkaliśmy problem związany z koniecznością przywrócenia jednego ze starych plików Excel. Okazało się, że choć sam plik można było otworzyć bez problemu, niektóre opcje, takie jak Struktura skoroszytu lub indywidualne arkusze, były chronione hasłem.

Problem polegał na tym, że osoba, która pierwotnie stworzyła ten plik, nie pracowała już w firmie, a nikt inny nie znał użytego hasła. Ponieważ mogłem otworzyć sam plik, gdyż nie był chroniony, a wiedziałem, jak są skonstruowane pliki XLSX (i XLSM), postanowiłem użyć metody siłowej, aby usunąć te ograniczenia.

Oto jak to wyglądało…

Zanim przejdziemy dalej, nie omawiam tutaj usuwania haseł z plików, które są zaszyfrowane i wymagają hasła do otwarcia, ponieważ to nie jest takie proste.

Pliki XLSX (i XLSM) są tworzone w specyficznej strukturze, którą, mówiąc w skrócie, możemy traktować jako skompresowany plik ZIP zawierający pliki XML.

Możemy je rozpakować jak plik ZIP i przejrzeć strukturę w zwykłych plikach XML. Dzięki temu, manipulując plikami XML, możemy usunąć odpowiednie ciągi haseł, skompresować pliki z powrotem w jeden plik i otworzyć go bez zabezpieczeń.

Do tego potrzebne będzie narzędzie takie jak 7-Zip.

Na potrzeby tego artykułu przygotowałem 4 pliki.

4 pliki testowe przygotowane do celów ćwiczeń

Klikając prawym przyciskiem myszy na pliku, będziemy używać podmenu 7-Zip (w Windows 11 musimy kliknąć na dole, aby wyświetlić więcej opcji i odkryć 7-Zip), aby wybrać opcje Otwórz archiwum, Wypakuj do…, a po zakończonej pracy Dodaj do archiwum….

Rozpoczynając od wypakowania naszego pliku XLSX, przechodzimy do utworzonego folderu i widzimy następującą strukturę.

Struktura plików wypakowanego pliku XLSX

Każdy folder zawiera więcej plików XML. To są pliki, które będziemy modyfikować.

Do celów modyfikacji użyję Microsoft Visual Studio Code, a klikając prawym przyciskiem myszy na folder z wypakowaną zawartością pliku, wybiorę opcję Otwórz za pomocą Code.

Usuwanie hasła — Ochrona arkusza

\Book1-protected sheet.xlsx

Rozpakujmy nasz plik, klikając na nim prawym przyciskiem myszy i wybierając z menu 7-Zip opcję Wypakuj do Book1-protected sheet, a następnie klikając prawym przyciskiem na folder Book1-protected sheet i wybierając Otwórz za pomocą Code.

Z górnego menu VS Code wybierz Edycja > Znajdź w plikach i w polu wyszukiwania wpisz słowo protect.

To odnajdzie plik zawierający zabezpieczenie, takie jak (<sheetProtection ...).

Plik XML ze stringiem sheetProtection w VS Code

Usuń cały ciąg od <sheetProtection ... aż do jego zamykającego znacznika /> i zapisz plik.

Wracając do eksploratora plików, przechodzimy do folderu Book1-protected sheet, zaznaczamy wszystkie pliki i foldery, klikamy prawym przyciskiem myszy na zaznaczenie i wybieramy z menu 7-Zip opcję Dodaj do archiwum….

Kompresowanie z powrotem do pliku XLSX

Jeśli nie jest to już zaznaczone, w oknie 7-Zip wybierz format archiwum zip, a na górze zmień nazwę pliku z Book1-protected sheet.zip na Book1-protected sheet.xlsx i naciśnij OK, aby skompresować.

Teraz możesz otworzyć nowo utworzony plik XLSX w Excelu, a Twój wcześniej chroniony arkusz będzie pozbawiony hasła.

Dosyć proste, ale nasuwające pytanie: czy ta metoda ochrony powinna być tak łatwa do obejścia w pierwszej kolejności?

Usuwanie hasła — Ochrona struktury skoroszytu

\Book1-protected workbook structure.xlsx

Podobnie jak powyżej, rozpakujmy plik, klikając na nim prawym przyciskiem myszy i wybierając z menu 7-Zip opcję Wypakuj do Book1-protected workbook structure, a następnie klikając prawym przyciskiem na folder Book1-protected workbook structure i wybierając Otwórz za pomocą Code.

Z górnego menu VS Code wybierz Edycja > Znajdź w plikach i w polu wyszukiwania wpisz ponownie słowo protect.

To odnajdzie plik skoroszytu zawierający ciąg <workbookProtection ....

Plik XML ze stringiem workbookProtection w VS Code

Usuń cały ciąg od <workbookProtection ... aż do jego zamykającego znacznika /> i zapisz plik.

Przejdź do folderu Book1-protected workbook structure, zaznacz wszystkie pliki i foldery, kliknij prawym przyciskiem myszy na zaznaczenie i wybierz z menu 7-Zip opcję Dodaj do archiwum….

Skompresuj pliki w formacie zip, zmieniając nazwę pliku na Book1-protected workbook structure.xlsx.

Ponownie kompresowanie do pliku XLSX

Teraz możesz otworzyć nowo utworzony plik XLSX w Excelu, a struktura Twojego skoroszytu nie będzie już chroniona.

Usuwanie hasła — Hasło do modyfikacji

Usuwanie haseł z plików, które wymagają hasła do modyfikacji zawartości (ale pozwalają na przeglądanie), można przeprowadzić w podobny sposób, wyszukując frazę password.

Będzie to wyglądało na przykład tak: reservationPassword="E5F2"

Plik XML ze stringiem reservationPassword w VS Code

Wyświetlane hasło nie jest w formie zwykłego tekstu.

Usuwając jedynie tę część reservationPassword="E5F2" i zapisując nasz plik, a następnie kompresując go, jak wcześniej, z powrotem do pliku XLSX, możemy łatwo usunąć tego rodzaju ograniczenie.

Podobnie możemy eksperymentować z innymi ograniczeniami i ochroną w plikach Excel, szczególnie w przypadku plików, które zostały świeżo przekonwertowane z formatu XLS na nowy format XLSX.

Należy jednak pamiętać, że metoda ta nie działa na plikach XLSX zaszyfrowanych i chronionych hasłem.

Pliki XLSX Zaszyfrowane Hasłem

\Book1-encrypted with password.xlsx

Jeśli chcesz zabezpieczyć swój plik w bardziej bezpieczny sposób, zawsze wybieraj opcję Szyfrowania z Hasłem, która wymaga hasła do otwarcia pliku. Tego typu pliku nie można po prostu rozpakować jak pliku ZIP (można próbować, ale dane będą nieczytelne).

Błąd w 7-Zip przy próbie wypakowania zaszyfrowanego pliku XLSX

Struktura pliku zaszyfrowanego XLSX

Do złamania haseł w tego typu plikach możesz potrzebować innego specjalistycznego oprogramowania.


Nawet jeśli nie możemy usunąć wszystkich ograniczeń bez specjalistycznego oprogramowania, za pomocą powyższych metod możemy przynajmniej odzyskać dostęp do części chronionych plików.

Testowałem powyższe rozwiązania na plikach XLSX i XLSM, ale mogą one również działać z innymi typami plików.

Pozdrawiam.

Udostępnij na Threads
Udostępnij na Bluesky
Udostępnij na Linkedin
Udostępnij przez WhatsApp
Udostępnij przez Email

Komentarze i Reakcje

Kategorie