Schimbarea datei sistemului pentru a testa o aplicație
Este cel mai vechi truc care există: pui ceasul Windows pe data pe care vrei s-o testezi, rulezi programul, apoi îl pui la loc. Merge - iar cât timp ceasul e mutat, mută și tot restul mașinii.
Ce se mută de fapt odată cu ceasul
Ceasul sistemului nu aparține doar programului pe care îl testezi. Fiecare proces, serviciu și conversație de rețea de pe mașină îl citește pe același, așa că o schimbare făcută pentru un test este o schimbare făcută pentru toate.
| Ce citește ceasul | Ce se întâmplă când îl muți |
|---|---|
| Autentificarea în domeniu și folderele partajate | Kerberos tolerează implicit o diferență de ceas de cinci minute. Peste aceasta, tichetele sale sunt respinse, iar autentificarea sau accesul la o partajare eșuează. |
| Certificatele și HTTPS | Dacă un certificat este valid se decide după ceas. Pune-l după data de sfârșit a unui certificat și orice conexiune care se bazează pe el este respinsă ca expirată; dă-l destul de mult înapoi și certificatul nu este încă valid. |
| Serviciul Windows Time | O mașină din domeniu preia ora de la un controler de domeniu, iar implicit serviciul corectează ceasul oricât de mare ar fi diferența. Data pe care ai setat-o poate fi anulată cât timp încă testezi. |
| Tot ce înregistrează o oră | Fișierele, jurnalele, rândurile din baze de date și e-mailurile trimise cât timp ceasul este mutat poartă data testului și o păstrează după ce ai pus ceasul la loc. |
| Software care ține minte ultima dată văzută | Unele programe citesc un ceas care merge înapoi drept manipulare - și exact asta se întâmplă când restabilești data reală. |
Cu cât data e mai îndepărtată, cu atât întâlnești mai multe dintre acestea. O mașină setată pe 2038 vede ca expirat orice certificat emis astăzi. Testarea anului 2038 fără asta →
Mai este nevoie și de un drept pe care majoritatea conturilor nu îl au: schimbarea orei sistemului este un privilegiu de administrator, iar pe o mașină administrată adesea nu este al tău.
Când schimbarea ceasului este răspunsul potrivit
O mașină virtuală pe care n-o mai folosește nimeni altcineva, cu propria sincronizare a ceasului oprită, este un banc de test cât se poate de bun. O arunci după aceea, așa că nimic din ce a înregistrat nu contează. Dacă ai una și testul privește o singură dată, este cel mai simplu lucru care funcționează.
Necazurile încep când este mașina pe care lucrezi, cea din domeniu sau una pe care rulează în același timp ceva ce nu are voie să observe nimic.
Mută în schimb ceasul unui singur program
Ora mutată este vizibilă pentru un proces și copiii pe care îi pornește. Autentificarea ta în domeniu, certificatele tale și Windows Update n-o văd niciodată, așa că nimic din tabelul de mai sus nu se mută - și nu e nimic de pus la loc după aceea.
# Aplicația vede 31 decembrie 2027, 23:59:50. Restul păstrează data reală. chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50 # Pornește cu zece minute înainte de miezul nopții și rulează la viteza x60 - anul se schimbă în zece secunde chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60
Dacă o dată mutată pentru un program a ajuns cu adevărat la el nu e ceva de presupus. Fiecare sesiune se termină cu un verdict și cu lista canalelor de timp pe care programul le-a citit de fapt. De unde știi că a funcționat →
Ce nu înlocuiește asta
- Un program care cere ora de la un server este în afara razei unei substituiri locale. Sesiunea spune asta când vede programul deschizând o conexiune de rețea, în loc să te lase să presupui că testul a trecut.
- Testarea sistemului însuși - un serviciu care reacționează la schimbarea ceasului real, o sarcină programată, comportamentul Windows în jurul unei schimbări de ceas - nu are înlocuitor pentru schimbarea ceasului, pe o mașină pe care ți-o poți permite.