Chrono Mock
JazykČeština

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 hodinyCo se stane, když je posunete
Přihlášení do domény a sdílené složkyKerberos 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 HTTPSPlatnost 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 WindowsPočí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á časSoubory, 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é datumNě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.

Vyzkoušejte