Odstranění hesla Administrátora ve Windows (chntpw)

Z Milan Kerslager
Verze z 23. 9. 2022, 19:13, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Průzkumník: obrázek)
Přejít na: navigace, hledání

Hesla jsou ve Windows NT (a tedy i Windows 7, 8, 10 nebo Windows 11) uložena v databázi SAM (Security Accounts Manager). Pokud zapomenete heslo správce systému, je možné pomocí přímé změny této databáze heslo odstranit. Je možné též účet odemknout po hodně pokusech o přihlášení špatným heslem nebo udělat obyčejného uživatele správce (zařadit ho do skupiny Administrators). K tomu je možné použít nástroj chntpw, který je zdarma a funguje v Linuxu. Podstatou metody je tedy nastartovat systém s USB flash paměti nebo CD/DVD média, na kterém je zapsána malá linuxová distribuce, která obsahuje zmíněný nástroj chntpw.

Bootovací médium

Nejprve vytvoříme médium, ze kterého počítač nastartujeme. Jednou z možností je použít SystemRescueCD z adresy https://www.system-rescue.org, odkud stáhněte 64bitový ISO soubor (amd64). Varianta pro 32bitový systém je vhodná jen pro úplně nejstarší počítače.

Vytvoření CD/DVD

Ve Windows je možné vypálit ISO přímo na CD/DVD tak, že na něj kliknete pravým tlačítkem myši a vyberete Vypálit bitovou kopii disku.

Vytvoření USB média

Bootovací USB médium je možné vytvořit pomocí nástroje Rufus, který stáhnete z adresy https://rufus.ie (použijte portable variantu, kterou není potřeba instalovat).

Spusťte program RUFUS, zasuňte USB flash disk (POZOR!!! VŠECHNA DATA BUDOU SMAZÁNA!!!) a stisknutím tlačítka VYBRAT vyberte stažené ISO s distribucí SystemRescueCD. Podle typu (resp. stáří) vašeho počítače nastavte buď:

  • Oddíl typu: MBR a Cílový systém: BIOS pro starší počítače
  • Oddíl typu: GPT a Cílový systém: UEFI pro novější počítače (podporují UEFI a Secure boot)

Boot počítače z média

Aby bylo možné nastartovat z CD/DVD nebo USB flash, je potřeba v nastavení Setupu (tzv. BIOS) počítače nastavit, aby systém byl zaveden prioritně z vašeho média (tj. CD/DVD nebo USB flash paměť). Buď je možné použít stisk klávesy při startu, která umožní vybrat bootovací médium (např. u notebooků Lenovo je to klávesa F12, ale může to být klávesa F9 nebo F10 nebo úplně jiná). Nebo je nutné v Setupu nastavit, že prvním médiem bude právě CD/DVD (nebo USB).

Každý počítač (resp. jeho základní deska) se chová jinak a jinak se nastavuje, takže nelze dát univerzální návod. Použijte Google (hledejte například: Jak nastartovat notebook Lenovo z USB nebo How to boot Lenovo notebook from USB).

Secure boot

V novějších počítačích s UEFI je nutné v Setupu vypnout Secure boot, jinak se SystemRescueCD nezavede. Nastavení je opět velmi variabilní a záleží na konkrétní základní desce (resp. typu notebooku).

Start SystemRescueCD

Zavaděč SystemRescueCD se nejprve ohlásí na modré obrazovce s menu. Ponechte první položku a buď uplynutím času nebo stisknutím klávesy Enter spusťte zavádění (start) linuxového systému SystemRescueCD.

Odlišnost Linux od Windows

Adresáře a soubory jsou ve Windows oddělovány znakem zpětné lomítko (\), zatímco v Linuxu se pro stejný účepo používá dopředné lomítko (/).

Použití chntpw

Nástroj chntpw umí pracovat se SAM databází uživatelů a hesel, která je obvykle umístěna v souboru C:\Windows\system32\config\SAM.

Připojení oddílu s Windows

V Linux je nejprve nutné zjistit, jaký oddíl na pevném disku obsahuje instalaci Windows a tedy i výše zmíněný soubor SAM. Kvůli tomu si nejprve vypíšeme všechny oddíly na pevném disku. Pevné disky jsou v Linuxu reprezentovány speciálními blokovými zařízeními. První pevný disk v počítači se jmenuje /dev/sda, druhý /dev/sdb atd. Jednotlivé oddíly jsou označeny čísly, takže první oddíl na prvním disku se jmenuje /dev/sda1 a čtvrtý oddíl na druhém disku bude /dev/sdb4.

Všechny oddíly na všech discích lze vypsat příkazem: fdisk -l

Vypsat jen řádky s textem Disk lze příkazem (svislá čára je tzv. trubka, která se na anglické klávesnici píše pomocí SHIFT a klávesy obvykle umístěné v blízkosti klávesy Enter, na české klávesnici je to pravý Alt+q):

# fdisk -l | grep Disk
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 870 
Disklabel type: gpt
Disk identifier: 41DD3463-2DD2-4266-B7FD-D8C3E98F1CAC
Disk /dev/sdb: 14.32 GiB, 15376000000 bytes, 30031250 sectors
Disk model: Ultra USB 3.0   
Disklabel type: dos
Disk identifier: 0x8b88e996
Disk /dev/loop0: 645 MiB, 676331520 bytes, 1320960 sectors

Z výše uvedeného výpisu vyplývá, že v počítači jsou přítomny dva disky: sda, sdb: První je 500 GB SSD Samsung (resp. 465.76 GiB), druhý je USB flash disk o kapacitě 16 GB (resp. 14,32 GiB) ze kterého nastartoval systém SystemRescueCD. Podíváme se na rozdělení prvního disk (sda). Pokud je disk rozdělen na oddíly pomocí MBR tabulky, mohli bychom vidět něco podobného, jako je následující příklad výpisu:

# fdisk -l
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500LM000-SSHD-
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xd9fa2484

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048   1026047   1024000   500M  7 HPFS/NTFS/exFAT
/dev/sda2         1026048 407967033 406940986   194G  7 HPFS/NTFS/exFAT
/dev/sda3       407967744 409602047   1634304   798M 27 Hidden NTFS WinRE
/dev/sda4       409602048 976769023 567166976 270.4G  7 HPFS/NTFS/exFAT

Pokud by šlo o disk s GPT tabulkou, pak bychom mohli vidět tento výstup:

# fdisk -l /dev/sda
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 870 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 41DD3463-2DD2-4266-B7FD-D8C3E98F1CAC

Device         Start       End   Sectors   Size Type
/dev/sda1       2048    206847    204800   100M EFI System
/dev/sda2     206848    239615     32768    16M Microsoft reserved
/dev/sda3     239616 975725128 975485513 465.1G Microsoft basic data
/dev/sda4  975726592 976771071   1044480   510M Windows recovery environment

V prvním z výše uvedených výpisů je systémový disk (ve Windows je to obvykle disk C:) na druhém oddílu (partition) s označením sda2, protože je dostatečně velký a je typu NTFS. V druhém výpisu je systémovým diskem třetí oddíl (Microsoft basic data) s označením sda2. Abychom mohli se zamýšleným oddílem pracovat, vytvoříme si adresář disk a do něj oddíl sda2 (nebo sda3) připojíme a zkontrolujeme jeho obsah. Měli bychom (kromě jiného) vidět systémový adresář Windows

# mkdir disk
# ntfs-3g /dev/sda3 disk
# ls disk
'$Recycle.Bin'  'Documents and Settings'   hiberfil.sys   pagefile.sys   ProgramData     'Program Files (x86)'   swapfile.sys                 Users
'$WinREAgent'    DumpStack.log.tmp         Intel          PerfLogs      'Program Files'   Recovery              'System Volume Information'   Windows

Odblokování účtu

Použijeme nástroj chntpw, otevřeme s ním SAM databázi a objeví se následující nabídka:

# chntpw -i win/Windows/System32/config/SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive <disk/Windows/System32/config/SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 65536 [10000] bytes, containing 6 pages (+ 1 headerpage)
Used for data: 315/29928 blocks/bytes, unused: 18/6744 blocks/bytes.

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <disk/Windows/System32/config/SAM>

 1 - Edit user data and passwords
 2 - List groups
     - - -
 9 - Registry editor, now with full write support!
 q - Quit (you will be asked if there is something to save)

What to do? [1] -> 1

Zvolíme nabídku 1 (napíšeme jedničku a zmáčkneme klávesu Enter, přičemž na anglické klávesnici nepoužijeme klávesu SHIFT):

===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator                  | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |
Cannot find value <\SAM\Domains\Account\Users\FFFFFFFF\V>

Please enter user number (RID) or 0 to exit: [1] 01f4

Zapíšeme číslo 01f4, což je RID označení uživatele Administrator (můžeme zapsat i jiné číslo podle toho, který účet chceme odemknout).

================= USER EDIT ====================

RID     : 0500 [01f4]
Username: Administrator
fullname: 
homedir : 

00000220 = Administrators (which has 2 members)

Account bits: 0x0211 =
[X] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 0

- - - - User Edit Menu:
1 - Clear (blank) user password
2 - Unlock and enable user account [probably locked now]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] > 1

Zvolíme číslo 1, čímž dojde k nastavení prázdného hesla.

Password cleared!
================= USER EDIT ====================

RID     : 0500 [01f4]
Username: Administrator
fullname: 
homedir : 

00000220 = Administrators (which has 2 members)

Account bits: 0x0211 =
[X] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 0
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Try login with no password!

- - - - User Edit Menu:
1 - Clear (blank) user password
2 - Unlock and enable user account [probably locked now]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] > 2

Zvolíme číslo 2, čímž dojde k odemčení účtu:

Unlocked!
================= USER EDIT ====================

RID     : 0500 [01f4]
Username: Administrator
fullname: 
homedir : 

00000220 = Administrators (which has 2 members)

Account bits: 0x0210 =
[ ] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 0
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Try login with no password!

- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > q

Zvolíme volbu q pro opuštění menu:

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <disk/Windows/System32/config/SAM>

 1 - Edit user data and passwords
 2 - List groups
     - - -
 9 - Registry editor, now with full write support!
 q - Quit (you will be asked if there is something to save)

What to do? [1] -> q

Zvolíme opět volbu q pro opuštění programu:

Hives that have changed:
#  Name
0  <disk/Windows/System32/config/SAM>
Write hive files? (y/n) [n] : y

Potvrdíme záměr zapsat databázi účtů na disk (y a Enter):

0  <disk/Windows/System32/config/SAM> - OK

Nyní můžeme systém restartovat do Windows zadáním příkazu reboot a zavedením systému Windows z pevného disku.

Řešení problémů

Windows jsou hibernovány

Při pokusu o připojení oddílu s Windows se objeví hlášení Windows is hibernated, refused to mount. a systém souborů je připojen jen pro čtení (nelze zapsat změny do souboru SAM):

# ntfs-3g /dev/sda3 disk
Windows is hibernated, refused to mount.
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.)
Could not mount read-write, trying read-only

V takovém případě je potřeba restartovat počítač do Windows a v nich korektně systém vypnout, tj. zadat příkaz k ukončení systému a následnému vypnutí počítače, což lze provést v menu Start (vlevo dole) → NapájeníVypnout. Tento postup vede obvykle k částečné hibernaci (pro rychlejší následné spuštění systému), proto je lepší vynutit úplné ukončení systému Windows tím, že před kliknutím na Vypnout podržíme klávesu SHIFT (tj. SHIFT + klik na Vypnout).

Windows nebyly řádně ukončeny

Při pokusu o připojení oddílu s Windows se objeví hlášení The disk contains an unclean file system a a systém souborů je připojen jen pro čtení (nelze zapsat změny do souboru SAM):

# ntfs-3g /dev/sda3 disk
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.)
Could not mount read-write, trying read-only

V takovém případě je potřeba stejně jako v předchozím případě restartovat počítač do Windows a provést korektní vypnutí systému.

Chci vidět všechny oddíly v systému

Všechny oddíly lze zobrazit výpisem informací od jádra systému:

# cat /proc/partitions 
major minor  #blocks  name

  8        0  488386584 sda
  8        1     102400 sda1
  8        2      16384 sda2
  8        3  487742756 sda3
  8        4     522240 sda4
 11        0    1048575 sr0
  8       16   15015625 sdb
  8       17   15014601 sdb1
  7        0     660480 loop0
  8       32    3818400 sdc
  8       33    3817376 sdc1

Ve výše uvedeném výstupu jsou v systému přítomny tři disky (sda, sdb, sdc). První disk sda je základní disk, na kterém jsou v počítači i Windows o kapacitě 500 GB (počet bloků je 488386584) a má čtyři oddíly (sda1 až sda4). Druhý disk sdb je USB flash paměť se systémem SystemRescueCD o kapacitě 16 GB (počet bloků je 15015625) s jediným oddílem přes celou kapacitu disk (sdb1). Třetí disk je druhá USB flash paměť o velikosti 4 GB, která byla připojena až po spuštění systému.

Druhou možností je použití příkazu fdisk -l, jehož výstup by vypadal například takto:

# fdisk -l
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 870 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 41DD3463-2DD2-4266-B7FD-D8C3E98F1CAC

Device         Start       End   Sectors   Size Type
/dev/sda1       2048    206847    204800   100M EFI System
/dev/sda2     206848    239615     32768    16M Microsoft reserved
/dev/sda3     239616 975725128 975485513 465.1G Microsoft basic data
/dev/sda4  975726592 976771071   1044480   510M Windows recovery environment


Disk /dev/sdb: 14.32 GiB, 15376000000 bytes, 30031250 sectors
Disk model: Ultra USB 3.0   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x27cc76e3

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 30031249 30029202 14.3G  c W95 FAT32 (LBA)


Disk /dev/loop0: 645 MiB, 676331520 bytes, 1320960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 3.64 GiB, 3910041600 bytes, 7636800 sectors
Disk model: STORE N GO      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x13d3fb99

Device     Boot Start     End Sectors  Size Id Type
/dev/sdc1  *     2048 7636799 7634752  3.6G  c W95 FAT32 (LBA)

Ve výše uvedeném výstupu je opět vidět první systémový disk sda (Samsung SSD o kapacitě 500 GB, resp. 465.76 GiB), a pak druhý disk sdb je USB flash paměť s názvem Ultra USB 3.0 (16 GB, resp. 14.32 GiB). Následuje loop0 zařízení, což je připojený ISO obraz distribuce SystemRescueCD, který je umístěn na zmíněné 16 GB USB flash paměti (Ultra USB 3.0), tedy na disku sdb. Jako poslední disk je vidět dodatečně připojená USB flash paměť o velikosti 4 GB (s názvem STORE N GO), která je v systému známa jako sdc.

Poslední možností, jak vidět všechny připojené disky, je použití grafického nástroje gparted, který najdete v menu grafického prostředí spuštěné distribuce SystemRescueCD (viz snímek obrazovky vpravo).

Připojení dodatečného USB flash disku

TODO

Průzkumník

Linux - Průzkumník.png

TODO