Změna systémového data kvůli otestování aplikace
Je to nejstarší trik, jaký existuje: nastavit hodiny Windows na datum, které chcete otestovat, spustit program a hodiny vrátit. Funguje to - a dokud jsou hodiny posunuté, posouvají i všechno ostatní na počítači.
Co se s hodinami skutečně posune
Systémové hodiny nepatří jen programu, který testujete. Každý proces, služba i síťová komunikace na počítači čte tytéž hodiny, takže změna udělaná kvůli jednomu testu je změnou pro všechny.
| Co čte hodiny | Co se stane, když je posunete |
|---|---|
| Přihlášení do domény a sdílené složky | Kerberos ve výchozím nastavení toleruje rozdíl hodin pět minut. Nad tuto hodnotu odmítá své tikety a přihlášení nebo otevření sdílené složky selže. |
| Certifikáty a HTTPS | Platnost certifikátu se posuzuje podle hodin. Nastavte je za datum konce certifikátu a každé spojení, které se o něj opírá, je odmítnuto jako propadlé; vraťte je dost zpět a certifikát ještě neplatí. |
| Služba Čas systému Windows | Počítač v doméně přebírá čas z řadiče domény a služba ve výchozím nastavení opravuje hodiny bez ohledu na velikost rozdílu. Datum, které jste nastavili, se může vrátit, zatímco ještě testujete. |
| Všechno, co zaznamenává čas | Soubory, logy, řádky databáze a odeslané e-maily vzniklé při posunutých hodinách nesou datum testu a ponesou ho i poté, co hodiny vrátíte. |
| Software, který si pamatuje nejpozdější viděné datum | Některé programy čtou hodiny jdoucí zpět jako manipulaci - a přesně to se stane, když obnovíte skutečné datum. |
Čím vzdálenější datum, tím víc z toho potkáte. Počítač nastavený na rok 2038 vidí každý dnes vydaný certifikát jako propadlý. Jak testovat rok 2038 bez toho →
Je k tomu zapotřebí i právo, které většina účtů nemá: změna systémového času je oprávnění správce a na spravovaném počítači často nepatří vám.
Kdy je změna hodin správná odpověď
Virtuální počítač, který nepoužívá nikdo jiný, s vypnutou vlastní synchronizací hodin, je naprosto dobrá zkušební stolice. Pak ho zahodíte, takže na ničem, co zaznamenal, nezáleží. Pokud ho máte a test se týká jediného data, je to nejjednodušší věc, která funguje.
Potíže začínají, když je to počítač, na kterém pracujete, ten v doméně, nebo ten, na němž zároveň běží něco, co si ničeho nesmí všimnout.
Posuňte místo toho hodiny jediného programu
Posunutý čas vidí jeden proces a potomci, které spustí. Vaše přihlášení do domény, vaše certifikáty a Windows Update ho nikdy nevidí, takže se nic z tabulky výše neposune - a potom není co vracet.
# Aplikace vidí 31. prosince 2027, 23:59:50. Všechno ostatní má skutečné datum. chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50 # Začít deset minut před půlnocí a běžet rychlostí x60 - přelom roku nastane za deset sekund chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60
Že datum posunuté pro jeden program k němu skutečně dorazilo, není něco, co se má předpokládat. Každé sezení končí verdiktem a seznamem časových kanálů, které program opravdu četl. Jak poznáte, že to zabralo →
Co to nenahrazuje
- Program, který se na čas ptá serveru, je mimo dosah lokální náhrady. Sezení to oznámí, když uvidí, že program otevírá síťové spojení, místo aby vás nechalo předpokládat, že test prošel.
- Testování samotného systému - služby reagující na změnu skutečných hodin, naplánované úlohy, chování Windows kolem změny hodin - nemá náhradu za změnu hodin, na počítači, který si můžete dovolit.