Job / Praca

    Disaster Key Recovery

    Klucze licencyjne, w ogóle licencjonowanie Microsoftu to horror. Jeżeli jeszcze zaginą lub zniszczą się to katastrofa na całego. Pół biedy jak zauważymy, że coś się dzieje złego z nalepką licencyjną czy dyskiem i zrobimy papierową kopie tychże. Można się spierać co do legalności takich działań, EULA stanowi chyba, że licencja jest pełnoprawna kiedy mamy fakturę zakupu, nośnik i nalepkę. Bardziej mi jednak chodzi o ratowanie się w sytuacji kiedy np ostatni człon na nalepce uległ zniszczeniu lub zamazaniu.
    Sytuacja więc wygląda tak. Jest sobie notebook z fabrycznie preinstalowanym Windowsem, dostarczony wraz z recovery partition. W komputerez tam niz tego ni z owego pada nam dysk. Kopia nie była robiona, natomiast szczęśliwie w całym biurze szaleje bacula czyli sieciowy backup. Nalepka jest jak już wspomniałem nieczytelna w skutek przetarcia się tu i ówdzie. Co należy zrobić:

    1. Wsadzamy nowy dysk do notebooka i odpalamy czystą instalację Windowsa (w tym przypadku XP). Ja użyłem recovery CD zrobionego na komputerze tej samej firmy i modelu dość zbliżonym. W praktyce pójdzie każdy OEM, ważne aby się SP zgadzał.

    2. Jeżeli system zainstaluje się bez pytania o klucz, trzeba sprawdzić czy dobrał odpowiedni klucz względem konfiguracji, jeśli nie trzeba go zmienić. Ja użyłem tego skryptu wyszukanego gdzieś na microsoft.com :) Ale najpierw skoro nie wiadomo jaki do końca ten klucz powinien być – przeczytaj punkt 3.

    '
    ' WMI Script - ChangeVLKey.vbs
    '
    ' This script changes the product key on the computer
    '
    '***************************************************************************

    ON ERROR RESUME NEXT

    if Wscript.arguments.count<1 then
    Wscript.echo "Script can't run without VolumeProductKey argument"
    Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"
    Wscript.quit
    end if

    Dim VOL_PROD_KEY
    VOL_PROD_KEY = Wscript.arguments.Item(0)
    VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-","") 'remove hyphens if any

    for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")

    result = Obj.SetProductKey (VOL_PROD_KEY)

    if err <> 0 then
    WScript.Echo Err.Description, "0x" & Hex(Err.Number)
    Err.Clear
    end if

    Next

    3. Teraz zaczyna się prawdziwa zabawa. Klucz ukryty jest gdzieś w rejestrze. Przy pomocy baculi robimy restore na jakiś działający komputer:

    Z konsoli bconsole wydajemy nastepujące polecenia (wytłuszczone):

    Connecting to Director bacula:9101
    1000 OK: 10.1.0.6 Version: 2.4.4 (28 December 2008)
    Enter a period to cancel a command.
    *restore
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"

    First you select one or more JobIds that contain files
    to be restored. You will be presented several methods
    of specifying the JobIds. Then you will be allowed to
    select which files from those JobIds are to be restored.

    To select the JobIds, you have the following choices:
    1: List last 20 Jobs run
    2: List Jobs where a given File is saved
    3: Enter list of comma separated JobIds to select
    4: Enter SQL list command
    5: Select the most recent backup for a client
    6: Select backup for a client before a specified time
    7: Enter a list of files to restore
    8: Enter a list of files to restore before a specified time
    9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Cancel
    Select item: (1-12): 5

    Defined Clients:
    –CIACH–
    26: zr2
    –CIACH–

    Select the Client (1-42): 26
    Automatically selected FileSet: dyskcdefzr2
    +--------+-------+----------+----------------+---------------------+------------+
    | JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |
    +--------+-------+----------+----------------+---------------------+------------+
    | 9,935 | F | 65,561 | 10,117,299,182 | 2009-05-04 15:09:25 | Vol0327 |
    | 10,265 | I | 1,931 | 3,843,394,932 | 2009-05-12 11:06:02 | Vol0327 |
    | 10,305 | I | 270 | 1,199,245,844 | 2009-05-13 10:56:08 | Vol0327 |
    | 10,385 | I | 406 | 1,245,688,126 | 2009-05-15 10:41:57 | Vol0327 |
    +--------+-------+----------+----------------+---------------------+------------+
    You have selected the following JobIds: 9935,10265,10305,10385

    Building directory tree for JobId 9935 ... ++++++++++++++++++++++++++++++++++++++++++++++
    Building directory tree for JobId 10265 ... +
    Building directory tree for JobId 10305 ...
    Building directory tree for JobId 10385 ...
    4 Jobs, 62,838 files inserted into the tree.

    You are now entering file selection mode where you add (mark) and
    remove (unmark) files to be restored. No files are initially added, unless
    you used the "all" keyword on the command line.
    Enter "done" to leave this mode.

    cwd is: /
    $ cd c:/
    cwd is: c:/
    $ mark WINDOWS
    25,359 files marked.
    $ done

    Bootstrap records written to /var/spool/bacula/10.1.0.6.restore.2.bsr

    The job will require the following
    Volume(s) Storage(s) SD Device(s)
    ===========================================================================

    Vol0327 zr2 zr2

    25,359 files selected to be restored.

    Run Restore job
    JobName: RestoreFiles
    Bootstrap: /var/spool/bacula/10.1.0.6.restore.2.bsr
    Where: /tmp/bacula-restores
    Replace: always
    FileSet: Full Set
    Backup Client: zr2
    Restore Client: bacula
    Storage: zr2
    When: 2009-06-02 11:33:27
    Catalog: MyCatalog
    Priority: 10
    OK to run? (yes/mod/no):yes

    Jeśli wszystko poszło OK to na serwerze z baculą mamy w /tmp/bacula-restores cały katalog WINDOWS sprzed awarii. Dzięki funkcji shadowcopy używanej przez baculę pliki systemowe używane przez Windows również są zbackupowane i możliwe do odtworzenia. Rejestr systemu jest przechowywany w %SysemRoot%/System32/config. Można go ręcznie przeglądać regeditem (trzeba ustawić się na kluczu HKEY_USERS i wybrać 'Ładuj gałąź rejestru’ lub 'Load Hive’ zależy w jakiej wersji językowej jest regedit :) ale klucze są zaszyfrowane więc nie zda się to na zawiele akurat (aczkolwiek jest wystarczające żeby wyeksportować np. hosty z putty).

    4. Sciągamy więc odrestorowany katalog Windows na komputer z Windowsem i instalujemy Magical Jelly Bean Keyfinder . Uruchamiamy z prawami administratora, pierwsze co zobaczymy to nasz klucz Windowsa i ewentualnie inne klucze np od Office.

    Magical Jelly Bean po uruchomieniu
    Magical Jelly Bean po uruchomieniu

    Wybieramy opcję Load Hive:

    Opcja do załadowania rejestru "offline"

    Wybieramy katlog który wcześniej udało nam się odrestorować:

    Potrzebny cały katlog `Windows` aby zadziałało
    Potrzebny cały katlog `Windows` aby zadziałało

    Sukces! Mamy upragniony numer! (z oczywistych względów nie mogę pokazać, że jest to innym serial niż poprzednio, ale widać zmianę w pakiecie Office :)

    jelly4

    Teraz jeśli potrzeba wracamy do punktu drugiego i zmieniamy klucz na właściwy. Windows powinien się zdezaktywować. Po ponownej aktywacji z właściwym kluczem wszystko powinno być ok.

    Sukces!
    Sukces!

    Jeszcze raz NetBSD (przy pomocy baculi) zaoszczędza mnóstwa kłopotów :)




    Related Posts with Thumbnails

    © odwiedź stronę http://maciejewski.org po więcej fajnych postów!

    CommentLuv badge

    Add your widget here