Excel – zdejmowanie ochrony arkusza i skoroszytu bez znajomości hasła

Czasami otrzymujemy od urzędu arkusz, w którym niektóre komórki są poblokowane i nie możemy ich edytować a czasem nawet nie możemy podglądnąć jaka jest formuła w zablokowanych komórkach.

Włączoną blokadę możemy rozpoznać po tym, że na karcie Recenzja znajduje się przycisk Nie chroń arkusza.

Po kliknięciu w ten przycisk jak mamy odrobinę szczęścia zostanie zdjęta ochrona a przycisk zmieni nazwę na Chroń arkusz. Gorzej, gdy po kliknięciu w przycisk pojawi się komunikat z prośbą o podanie hasła.

Istnieje jednak pewien sposób na zdjęcie ochrony.

Pokazywanie rozszerzeń plików

Domyślnie system Windows nie pokazuje rozszerzeń plików

Aby włączyć pokazywanie rozszerzeń (ułatwi nam to wykonywanie ćwiczeń) należy w oknie programu Komputer kliknąć na kartę Widok a następnie „zaptaszkować” opcję Rozszerzenia nazw plików.

Informacje wstępne:

  • Upewnij się, że system Windows pokazuje rozszerzenia nazw plików
  • Zanim zaczniesz cokolwiek robić zapisz zmiany w pliku i go zamknij (najlepiej zamknij całego Excela).
  • Miej kopię bezpieczeństwa pliku, z którego będziesz zdejmować ochronę (istnieje ryzyko, że plik zostanie uszkodzony)
  • Jeśli plik ma rozszerzenie xls albo xlb zapisz go w formacie xlsx (WAŻNE!) lub ewentualnie jako plik xlsm (skoroszyt z obsługą makr)
  • Jeśli plik ma założone hasło, które pojawia się przy otwieraniu pliku, należy to hasło usunąć (Plik->Informacje, Chroń skoroszyt i usuwamy hasło).
  • Mój poradnik nie mówi, jak zdejmować hasło do otwarcia pliku (jest to zupełnie innego rodzaju zabezpieczenie – może kiedyś napiszę coś więcej w tym temacie)

Przystępujemy do działania

Pliki XLSX to tak naprawdę są to archiwa ZIP zawierające wewnątrz różne pliki (np. obrazy są zapisywane w formacie png lub jpg) a także to co nas interesuje czyli pliki w formacie XML. Cała sztuczka polega na rozpakowaniu pliku zip, usunięciu odpowiedniego wpisu z odpowiedniego pliku XML i ponownym utworzeniu archiwum.

  1. Zmień rozszerzenie pliku z xlsx na zip (czyli u mnie z ochrona arkusza.xlsx na ochrona arkusza.zip)
  1. Jak się pojawi komunikat jak na poniższym rysunku, kliknij w Tak
  1. Rozpakuj plik ZIP (kliknij na pliku prawym przyciskiem myszy i szukaj opcji wypakuj tutaj, 7-zip->wypakuj itp. jeśli masz zainstalowany odpowiedzi program (WinRAR, WinZIP, 7-zip) albo zwykłym windowsowym mechanizmem czyli klikam prawym przyciskiem myszy i wybieram opcję Wyodrębnij wszystkie)
  1. Przejdź do nowo utworzonego folderu (w moim przypadku system Windows sam mnie przeniesie do tego folderu, gdyż miałem zaznaczoną opcję Pokaż wyodrębnione pliki po zakończeniu
  1. Przejdź do podfolderu xl
  2. Będąc w folderze xl przejdź do podfolderu worksheats
  1. W folderze worksheats znajdują się pliki o nazwach sheet1.xml (sheet2.xml itp. jest tam tyle plików, ile arkuszy znajduje się w naszym Excelowym skoroszycie). Każdy z tych plików zawiera dane zapisane w jednym arkuszu. Jeśli ochrona jest włączona dla wszystkich arkuszy to poniższe czynności z punktów 8-12 należy wykonać po kolei dla każdego z tych plików. W moim przypadku jest tylko jeden plik.
  1. Otwórz w notatniku plik sheet1.xml (porada warto mieć zainstalowany jakiś porządny notatnik np. Notepad++ wtedy edycja pliku jest wygodniejsza, gdyż dobry notatnik dodatkowo koloruje składnię).
  1. Jeśli notatnik wyświetla wszystko jako jedną dłuuugą linijkę, wybierz opcję Format -> Zawijanie wierszy
  1. Naciśnij kombinację klawiszy Ctrl+F (lub Edycja -> Znajdź) i wpisz ciąg znaków Protection.
  2. Powinieneś trafić gdzieś prawie pod koniec pliku do miejsca, gdzie jest znacznik <sheetProtection należy skasować cały tekst znajdujący się pomiędzy <sheetProtection a pierwszym wystąpieniem znaków /> które zamykają owy znacznik. W zależności od wybranych ustawień ochrony owy znacznik może mieć więcej „parametrów” (atrybutów) niż u mnie.  Na poniższym rysunku zaznaczyłem fragment, który należy usunąć.

Uwaga: jeśli dokument był zapisany w Excelu 2007 lub 2010, to hasła są kodowane innym słabszym algorytmem, więc ilość znaków do usunięcia może być znacznie mniejsza (zobacz poniższy rysunek)

  1. Zapisz zmiany w pliku XML i go zamknij
  2. Wyjdź dwa poziomy wyżej w strukturze plików (czyli wyjdź z podfolderu worksheatsxl)
  1. Zaznacz wszystkie foldery i pliki (u mnie na rysunku są tylko 3 foldery, bo mój plik był pusty, jeśli w Twoim pliku były np. jakieś obrazy, tabele przestawne itp. to folderów może być więcej niż na rysunku)
  1. Spakuj te pliki do pliku ZIP (albo prawym przyciskiem i szukaj opcji dodaj do archiwum, jako format archiwum upewnij się, że jest wybrana opcja ZIP a nie np. RAR czy 7z). Jeśli nie masz zainstalowanych programów typu WinRAR, WinZip czy 7-zip to kliknij prawym przyciskiem myszy i wybierz opcję Wyślij do->Folder skompresowany
  1. System zaproponuje plikowi jakąś nazwę np. _rels.zip. Zaakceptuj ją enterem.
  2. Skasuj wszystkie pozostałe pliki (są już niepotrzebne) z wyjątkiem naszego pliku zip
  3. Zmień plikowi nazwę na taką z rozszerzeniem xlsx (lub xlsm jeśli oryginalny plik miał rozszerzenie xlsm)np. bez zabezpieczeń.xlsx
  4. Jeśli nic nie zepsułeś/aś to plik powinien się bez problemu otworzyć w Excelu i ochrona arkusza powinna zostać zdjęta.

Dobry edytor tekstowy

Jeśli często będziesz się bawić w hackera to zamiast Windowsowego notatnika polecam jakiś edytor dla programistów. Ja osobiście używam płatnego EditPadPro ale darmowy Notepad++ też daje radę. Pliki XML mają wtedy kolorowaną składnię, więc łatwiej jest rozczytać. Poza tym zwróć uwagę: kliknąłem w środek znacznika <sheetProtection. Edytor mi zaznaczył jaskrawo-niebieskim kolorem gdzie się owy znacznik zaczyna oraz gdzie się kończy (czyli to co miałem usunąć)

Ochrona skoroszytu

W programie Excel oprócz ochrony arkusza możemy również włączyć ochronę struktury skoroszytu (na karcie Recenzja znajduje się polecenie Chroń skoroszyt).

Ochrona skoroszytu powoduje, że użytkownik następujące opcje zostaną zablokowane

  • Dodawanie nowych arkuszy
  • Usuwanie arkuszy
  • Zmiana nazw arkuszy
  • Zmiana koloru tła arkuszy (kart)
  • Ukrywanie/odkrywanie arkuszy
  • Zmiana kolejności arkuszy w skoroszycie
  • Wykonywanie kopii arkusza w obrębie tego samego skoroszytu

Zdjęcie ochrony skoroszytu jest tak samo proste jak zdjęcie ochrony arkusza. Oto czynności jakie musisz wykonać:

  1. Zapisz zmiany w pliku i zamknąć program Excel (pamiętaj, że nie może to być plik w formacie binarnym tj. xls lub xlsb)
  2. Zmień nazwę pliku (zmień rozszerzenie z np. xlsx na zip)
  3. Rozpakuj archiwum
  4. W archiwum należy przejść do folderu xl i otworzyć w notatniku lub dowolnym edytorze tekstowym znajdujący się w nim plik o nazwie workbook.xml
  5. Należy znaleźć ciąg znaków <workbookProtection i usunąć cały znacznik tj. wszystko do momentu aż nie natrafisz na ciąg znaków /> (na rysunku zaznaczyłem co w moim przypadku należy usunąć)
  6. Zapisz zmiany w pliku
  7. Ponownie spakuj wszystkie pliki

Word – ogranicz edytowanie

W przypadku programu Word również mamy opcje ochrony dokumentu przed edycją. Na karcie Recenzja znajduje się przycisk Ogranicz edytowanie.

Tutaj mamy do wyboru następujące opcje:

  • Ogranicz edytowanie do zalecanych stylów – można zablokować użytkownikowi możliwość używania niektórych stylów, aby za bardzo nam nie namieszał w dokumencie.
  • Prześledzone zmiany – nadal możemy edytować dokument, ale na stałe jest włączona opcja śledzenia zmian, więc inni będą widzieli kto zmodyfikował dany fragment dokumentu
  • Komentarze – będziemy mogli tylko dodawać komentarze do dokumentu, ale nie możemy edytować treści dokumentu.
  • Wypełnianie formularzy – jeśli dodaliśmy do dokumentu formanty (np. pola tekstowe – znajdują się one na karcie Deweloper, która domyślnie w Wordzie jest ukryta) to użytkownik może wypełniać tylko te formanty natomiast nie może edytować treści dokumentu. Bardzo fajna opcja – można zaprojektować jakiś formularz w którym użytkownik może uzupełniać tylko pola tekstowe.
  • Bez zmian (tylko do odczytu) – użytkownik nie może edytować treści dokumentu (opcjonalnie można zaznaczyć np. określony fragment bądź z przyciskiem Ctrl fragmenty które użytkownik może edytować).

Tutaj sprawa wygląda podobnie jak w przypadku Excela.

Należy:

  1. Jeśli dokument jest zapisany w formacie Dokument programu Word 97-2003 (czyli ma rozszerzenie doc) należy go zapisać w formacie Dokument programu Word (rozszerzenie docx)
  2. Zapisać zmiany w pliku i zamknąć program Word
  3. Zmienić nazwę pliku (zmienić rozszerzenie z np. docx na zip)
  4. Rozpakować archiwum
  5. W archiwum należy przejść do folderu word i otworzyć w notatniku lub dowolnym edytorze tekstowym znajdujący się w nim plik o nazwie settings.xml
  6. Należy znaleźć ciąg znaków <w:documentProtection i usunąć cały znacznik tj. wszystko do momentu aż nie natrafisz na ciąg znaków /> (na rysunku zaznaczyłem co w moim przypadku należy usunąć)
  7. Zapisać zmiany w pliku
  8. Ponownie spakuj wszystkie pliki

Zdejmowanie hasła ochrony arkusza za pomocą makra

Dawno dawno temu znalazłem w Internecie takie oto makro (nie udało mi się dotrzeć do pierwotnego autora makra, jeśli ktoś zna źródło niech się odezwie to chętnie podlinkuję):

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

I wszystko było fajnie, ale do czasu. Gdy kilka lat później odgrzebałem to makro okazało się, że nie działa. Sprawa wygląda następująco: starsze wersje Excela (2007, 2010) na podstawie naszego hasła obliczają prostą sumę kontrolną i zapisują ją w pliku. Dla wielu różnych haseł może przypadać ta sama suma kontrolna (tutaj mógłbym użyć hakerskiego terminu kolizja). Owe makro próbuje różne 12 znakowe kombinacje aż w końcu natrafi na taką, dla której suma kontrolna będzie taka sama jak suma kontrolna naszego hasła (wtedy zostanie zdjęte zabezpieczenie). Przykładowo dla arkusza, któremu ustawiłem słynne hakerskie hasło dupa.8 już po kilku sekundach zobaczyłem taki komunikat:

Niestety, ale w przypadku Excela 2013 (i nowszych wersji) hasła do ochrony arkusza są haszowane dużo silniejszym algorytmem (mniej podatnym na kolizje) i to makro jest już bezużyteczne.

Na pocieszenie dodam fakt, że jeśli używasz najnowszego Excela, ale ochrona arkusza została założona przez kogoś innego, kto w momencie jej zakładania używał Excela 2007 lub 2010 to to makro jednak zadziała. Nawet jeśli zapiszesz jakieś zmiany w pliku, to i tak w pliku będzie hasło zahaszowane tym kiepskim algorytmem. Hasło będzie łamalne do czasu aż sami nie zdejmiemy ochrony i nie założymy jej ponownie (wtedy hasło już będzie zahaszowane silniejszym algorytmem).

Panie, to jest za trudne dla mnie

Jeśli grzebanie w archiwach i edycja plików XML Ciebie przeraża to mam dobrą wiadomość. Czasami do zdjęcia ochrony wystarczy nam program LibreOffice (darmowy odpowiednik pakietu MS Office). Wszystkie eksperymenty robiłem na wersji 7.1.4.2 (najnowsza dostępna wersja na dzień pisania tekstu, czyli 19.07.2021). Jeszcze lepszy dla nas będzie OpenOffice (używałem wersji 4.1.10)

Niestety, ale prawdopodobnie na służbowym komputerze nie będziesz miał(a) możliwości zainstalowania programu LibreOffice lub OpenOffice a za „wynoszenie pracowych plików do domu” pewnie grozi dyscyplinarka (no chyba, że jesteś ministrem, to możesz takie rzeczy robić bezkarnie).

LibreOffice Calc

Jest to darmowy odpowiednik programu Excel. Radzi on sobie różnie w zależności od tego, czy użytkownik, który założył zabezpieczenie używał starszej wersji Excela (2007 lub 2010) czy nowszych (od 2013 w górę)

Nowsze wersje Excela (od 2013)

Otworzyłem w tym programie plik zapisany w formacie Skoroszyt programu Excel (rozszerzenie XLSX). Następnie z menu Narzędzia wybrałem opcję Chroń arkusz.

Niestety, ale pojawiło się takie oto okienko:

Jeśli hasło by było puste, wystarczyłoby kliknąć w przycisk OK i sprawa załatwiona. Ale hasło na owy arkusz było ustawione. Podanie błędnego hasła nam nie zdejmie ochrony arkusza. Natomiast Ochrona skoroszytu była wyłączona tj. mogę tworzyć nowe arkusze, usuwać stare itp.

Podobnie sprawa wygląda, gdy otworzyłem plik z rozszerzeniem XLSM (Skoroszyt programu Excel z obsługą makr). Tutaj program ignorował ochronę skoroszytu, ale do zdjęcia ochrony arkusza należy znać poprawne hasło.

Jeśli plik miał rozszerzenie XLS (Skoroszyt programu Excel 97-2003) to należało znać hasło do zdjęcia ochrony arkusza jak również musisz znać hasło do zdjęcia ochrony skoroszytu.

Natomiast bardzo fajnie ma się sytuacja, gdy plik ma rozszerzenie XLSB (Binarny skoroszyt programu Excel. Otóż wystarczy wybrać opcję Narzędzia -> Chroń arkusz ochrona zostanie zdjęta bez konieczności wypisywania hasła!

PODSUMOWUJĄC: jeśli plik ma rozszerzenie XLSX, XLSM bądź XLS, otwórz go w Excelu i zapisz go w formacie XLSB a następnie otwórz nowo powstały plik w LibreOffice i wybierz opcję Narzędzia -> Chroń arkusz. Niestety, ale potem taki plik musimy z powrotem zapisać (LO nie obsługuje formatu XLSB więc musisz plik zapisać w formacie XLSX (Excel 2007-365). Nie gwarantuję, że plik zapisany przez LibreOffice będzie w 100% poprawny (pewne rzeczy mogą przestać działać), ale czasami samo przejrzenie zablokowanych formuł może dać nam wiele radości.

Starsze wersje Excela

Jeśli ochrona została założona w starszej wersji Excela (2007 lub 2010) to nie mam dobrych wiadomości:

XLS – Aby zdjąć ochronę arkusza jak również ochronę skoroszytu należy znać hasło.

XLSB, XLSM, XLSX – Aby zdjąć ochronę arkusza (czyli to co pewnie nas najbardziej interesuje) należy znać hasło, ochrona skoroszytu nie działa tj. mogę np. dodać nowy Arkusz.

LibreOffice Writer

To darmowy odpowiednik programu Word. Tutaj sprawa wygląda jeszcze ciekawiej. Utworzyłem prosty plik w którym wymusiłem Śledzenie zmian. I oto efekt:

Jeśli plik był zapisany w formacie Dokument programu Word (rozszerzenie docx) lub Dokument programu Word z włączoną obsługą makr (rozszerzenie docm) to wystarczy tylko wybrać polecenie Edycja -> Śledź zmiany -> Rejestruj. Pojawi się komunikat jak na poniższym rysunku (wybierz opcję Tak).

Jeśli plik był zapisany w formacie Dokument programu Word 97-2003 (rozszerzenie doc) to tutaj sprawa wygląda tak samo, z tym że nie pojawia się komunikat jak powyżej a od razu zostanie wyłączone rejestrowanie wprowadzonych zmian.

Niezależnie, czy pliki były utworzone w Wordzie 2010 czy 365 efekt jest taki sam.

OpenOffice Calc

Miałem nie opisywać tego pakietu biurowego, gdyż w 2010 roku nastąpił rozłam i część deweloperów zaczęła rozwijać pakiet LibreOffice, który bazował na kodzie źródłowym OpenOffice. Z czasem pakiet LibreOffice nabrał wiatru w żagle a OpenOffice od tego czasu ledwo wegetuje. I niby pomyślałem po co mam opisywać jakiś zacofany pakiet. Z drugiej strony myślę sobie, skoro zacofany to ma pewnie mniej wdrożonych funkcji niż LibreOffice. Bingo!

Niezależnie od tego czy otwierałem pliki utworzone w Excelu 2010 czy wersji 365 efekt był zawsze ten sam.

Pliki XLS – tutaj aby zdjąć ochronę arkusza lub ochronę skoroszytu należy podać poprawne hasło

Pliki z rozszerzeniem XLSX, XLSM, XLSB – program ignoruje ochronę skoroszytu (nawet nie wyświetla informacji, że ta opcja była włączona). Natomiast ochronę arkusza bez problemu można zdjąć bez znajomości hasła (Narzędzia->Chroń dokument->Arkusz).

PODSUMOWUJĄC: jeśli plik ma rozszerzenie XLS, zapisz go w Excelu jako XLSX i otwórz w OO. OpenOffice nie potrafi zapisywać plików XLSX więc po zmianach musimy taki plik zapisać jako plik XLS (lub jako plik OpenDocument czyli plik z rozszerzeniem ODS – nowsze wersje Excela potrafią otwierać pliki z tym rozszerzeniem).

OpenOffice Writer

DOCX, DOCM – po otworzeniu dokumentu działamy w trybie śledzenia zmian. Bez problemu można zdjąć śledzenie zmian bez konieczności podawania hasła (odznaczam opcję Edytuj->Zmiany->Rekord)

DOC – plik otworzył się w trybie tylko do odczytu i nic w nim nie mogłem zmieniać (dotyczy się to pliku utworzonego w Wordzie w wersji 365, w przypadku pliku utworzonego w Wordzie 2010 tego efektu nie było). Ale jak wybrałem opcję Plik->Zapisz jako i zapisałem plik pod inną nazwą to nagle mogłem edytować plik, opcja Rekord z menu Edycja->Zmiany niby była zaznaczona, ale nie dodając nowy tekst nie był on wprowadzany w trybie śledzenia zmian.

Starsza wersja pakietu MSOffice

Tutaj pomyślałem sobie: a jeśli założę (w Office 365) ochronę arkusza/skoroszytu/rejestrację zmian to czy otwierając taki plik w starszej (2010) wersji Excela lub Worda pojawi się pytanie o hasło (wszak od wersji 2013 jest użyty inny algorytm haszowania haseł). Efekt jest taki, że we wszystkich przypadkach Word/Excel pytał się o hasło i jeśli podałem błędne to nic się nie działo, podanie poprawnego hasła zdejmowało ochronę.

WPS Office

Na koniec postanowiłem sprawdzić jak z zdejmowaniem zabezpieczeń radzi sobie WPS Office. Nie mam dobrych wiadomości: aby zdjąć ochronę arkusza/skoroszytu/śledzenia zmian należy znać poprawne hasło niezależnie od tego w jakim formacie został zapisany plik.

Pliki ODS

Używasz OpenOffice lub LibreOffice? Dowiedz się, jak zdjąć zabezpieczenie (ochrona dokumentu, ochrona struktury skoroszytu) z plików ODS.

Jeśli artykuł Ci się podobał, będę wdzięczny gdy go udostępnisz w mediach społecznościowych
Ten wpis został opublikowany w kategorii Kącik hakera i oznaczony tagami , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Jedna odpowiedź do Excel – zdejmowanie ochrony arkusza i skoroszytu bez znajomości hasła

  1. Paprodzik pisze:

    Dzięki za wpis !
    Bardzo pomocne rozwiązania.
    To stare makro niegdyś rozwiązywało mi większość problemu ale grzebanie w xml też jest spoko 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.