Markov attacco (probabilistico) — Operazione completa
Documento di riferimento del progetto Time2Crack
Recipienti: sviluppatori, ricercatori di sicurezza, utenti avanzati
Contenuto
1. Panoramica
Markov Attack è un metodo di cracking password probabilità e statistica Invece di testare tutte le combinazioni possibili in ordine alfabetico — come fa la forza grezza — ordina i candidati dal più probabile almeno, concentrando lo sforzo di calcolo in cui le password umane sono effettivamente situati.
In termini semplici : un aggressore che ha abbastanza GPU e un modello ben addestrato Markov testerà "letmein", "p@ssword" e "sun2024" prima di testare "aaaaaaa", "aaaab" o "xqzfkw" — perché gli esseri umani creano password che sembrano parole, non rumore bianco. Efficienza misurata : Dürmuth et al. (2015) la ricerca sul corpus RockYou (14 milioni di password) mostra che un modello Markov 5 riduce lo spazio effettivo di ricerca per 0,6% dello spazio lordo per le password con una tipica struttura umana — una riduzione del 99,4 %.2. Sfondo storico e accademico
2.1 Origini
L'applicazione dei canali di Markov al cracking password è prima delle pubblicazioni accademiche formali. I professionisti della sicurezza offensivi hanno usato modelli simili dal 2000, ma la formalizzazione rigorosa risale principalmente al 2010.
Cronologia delle pietre miliari : AnnoEvento ---------------- 2005Nakashima & Oyama: prima applicazione formale di n-grams a password 2009Weir et al. (IEEE S&P): PCFG — concorrente diretto, posizioni probabilità strutturali 2012Ma et al. (USENIX Security): Studio comparativo dei modelli probabilistici sulle password 70M 2013Durmuth: prime analisi OMEN su diversi corpus 2015Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge: OM (ESORICS 2015) — importante riferimento accademico 2016Wheeler (zxcvbn) conferma l'efficacia di n-grams nel stimare l'entropia reale 2018OMEN+: versione migliorata con levigatura e interpolazione 2019–2022Markov lavoro ibrido + reti neurali (PassGAN, FuzzyPSM)2.2 Ente di riferimento
La formazione del modello Markov si basa su database di password da perdite di dati note:
- RockYou (2009) : 14,3 milioni di password semplici — corpo di riferimento universale
Questi corpus rivelano l'effettiva distribuzione statistica delle password umane, che differisce radicalmente da una distribuzione uniforme.
3. Fondazioni matematiche: Catena di Markov
3.1 Definizione formale
Markov catena di ordine # su un alfabeto # Personaggi precedenti:
P(cₙ | c₁c₂...cₙ₋₁) = P(cₙ | cₙ₋ₖ...cₙ₋₁)
Per le password, di solito include 95 caratteri ASCII stampabili (26 caso inferiore + 26 caso superiore + 10 cifre + 33 simboli).
Ordine 1 (bigram) :P("password") = P("p") × P("a"|"p") × P("s"|"a") × P("s"|"s") × ...
Ordine 5 (ottimo secondo Dürmuth 2015) :
P("password") = P("p") × P("a"|"p") × P("s"|"pa") × P("s"|"pas")
× P("w"|"pass") × P("o"|"passw") × P("r"|"passwo")
× P("d"|"passwor")
Ordine 5 cattura contesti come "dopo "passw", il follow-up più probabile è "o" — informazioni inaccessibili a un modello di ordine 1.
3.2 La matrice di transizione
Per un ordine di 1 su 95 caratteri, la matrice di transizione è dimensione 95 × 95 = 9,025 ingressi. Per ordine 5, va a 955 × 95 = ~7.7 × 1010 input teorici — ma la maggior parte dell'ordine n-grams 5 non appare mai nei dati reali.
3.3 probabilità di log e selezione
Per evitare sovraccarichi galleggianti su 8+-carattere password (probabilità dell'ordine di 10−20), gli strumenti funzionano probabilità di log :
log P("password") = log P("p") + log P("a"|"p") + log P("s"|"a") + ...
Questo valore è punteggio Markov I candidati sono generati in ordine descrescente di punteggio, cioè il più probabile almeno probabile.
3.4 Perché ordinare 5?
La ricerca empirica (Dürmuth 2015, confermata da Ma et al. 2012) mostra che:
4. Architettura di un cracktool di Markov
4.1 Componenti principali
┌─────────────────────────────────────────────────────────────┐
│ OUTIL DE CRACKING MARKOV │
├─────────────────┬───────────────────┬───────────────────────┤
│ Phase │ Composant │ Rôle │
├─────────────────┼───────────────────┼───────────────────────┤
│ Entraînement │ Corpus Parser │ Lit les mots de passe │
│ │ N-gram Counter │ Compte les transitions│
│ │ Probability Table │ Normalise en probas │
│ │ Model Serializer │ Sauvegarde le modèle │
├─────────────────┼───────────────────┼───────────────────────┤
│ Génération │ Candidate Gen │ Énumère par score │
│ │ Length Controller │ Filtre par longueur │
│ │ Threshold Filter │ Coupe les improbables │
├─────────────────┼───────────────────┼───────────────────────┤
│ Attaque │ Hash Engine │ Compare aux cibles │
│ │ GPU Interface │ Hashcat backend │
└─────────────────┴───────────────────┴───────────────────────┘
4.2 Integrazione con Hashcat
L'attuazione più diffusa in pratica è tramite Modalità Hashcat stdin (-a 0 con un generatore esterno) o tramite moduli Python come statsgen (dal toolkit PACK):
# Exemple d'attaque Markov pratique
python statsgen.py rockyou.txt --output markovmodello.stats
python maskgen.py markovmodel.stats | hashcat -a 0 -m 1000 targethashes.txt
Strumenti dedicati come OM (Apri Markov Estimator di Next password) genera direttamente liste di candidati ordinati.
5. Fase 1 — Corpo di formazione vera password
5.1. Estrazione di n-grammi
Per ogni password nel corpus, tutti i n-grammi vengono estratti (con un marcatore di avvio). ^ e la fine $)
Esempio con "ciao" (ordine 2):
^h, he, el, ll, lo, o$
Esempio con "P@ss1!" (ordine 2):
^P, P@, @s, ss, s1, 1!, !$
5.2 Contabilità e standardizzazione
Per ogni contesto (n-1 caratteri precedenti), vengono conteggiati e normalizzati gli eventi di ciascun personaggio seguente:
Contexte "pa" → {s: 847, r: 12, t: 8, l: 3, ...}
→ P(s|pa) = 847/870 = 0.973
→ P(r|pa) = 12/870 = 0.014
Queste distribuzioni rivelano le abitudini del linguaggio umano: dopo "pa", la gente scrive massicciamente "s" (password, pass, pablo...).
Smoothing
Il problema dei n-grammi non osservati: se "xq" non appare mai nel corpus, P(c)xq) = 0 per qualsiasi c — che blocca la generazione.
Smoothing permette anche al modello di generare candidati fuori dal corpo di formazione — cruciale per coprire le password leggermente nuove.
5.4 Cosa impara il modello
Dopo l'allenamento su RockYou, un modello di 5 ordini Markov interiorizza modelli come:
6. Fase 2 — Generazione ordinata dei candidati
6.1 Il problema dell'enumerazione del punteggio
Generando candidati in ordine decrescente di probabilità Markov è un problema non banale. Non possiamo semplicemente calcolare le probabilità di tutti i candidati possibili (948 x 6 × 1015 per 8 serbatoi) e poi ordinare fuori.
La soluzione: Ricerca euristica con coda prioritaria L'algoritmo è simile a Dijkstra:
^a♪ ^p♪ ^1...Questo approccio garantisce una selezione approssimativamente decrescente senza memorizzare l'intero spazio.
6.2. Soglia di soglia
Per evitare di generare miliardi di candidati improbabili, un Punteggio minimo sotto il quale viene eliminato un candidato parziale (sladding).
Si log P(candidatpartiel) < THRESHOLD → abandon de cette branche
Threshold è un parametro critico: troppo alto → si perde password al limite; troppo basso → si genera troppi candidati e rallentare l'attacco.
6.3 Gestione della lunghezza
I modelli Markov sono formati e generalmente funzionano per lunghezza fissaUn attacco tipico:
Distribuzione di lunghezza in RockYou: 8 serbatoi = 24%, 7 serbatoi = 21%, 9 serbatoi = 12%, 6 serbatoi = 10%...
7. Ridurre lo spazio di ricerca: La chiave per l'efficacia
7.1 Quantificazione empirica (Dürmuth 2015)
Per una password di 8 caratteri con l'alfabeto completo (94 serbatoi):
MetodoSpazio di ricercaFattore di riduzione -------------------------------------- Forza lorda948 6 × 10151× (riferimento) Markov Ordine 1~3 × 1015♪ Markov Ordine 3~6 × 1013- 100? Markov Ordine 5Voce principale:~ 166 000 × Markov Ordine 5 (tipo umano)~4 × 107~ 150 milioni ×La differenza tra "spazio ridotto" e "spazio umano fisico" può essere spiegata dal fatto che le password umane reali sono concentrate in top-k% molto probabilmente A seconda del modello.
7.2 Perché gli esseri umani sono prevedibili
I fattori di prevedibilità utilizzati da Markov:
Limiti linguistici "letmein", "sunshine", "iloveyou" seguire le regole fonotiche dell'inglese — le transizioni di lettere sono altamente probabili. Limiti cognitivi Una password casuale come "xqzfw9@" raramente viene scelta spontaneamente. Modelli culturali Questi modelli creano cluster ad alta densità nello spazio password. Sostituzioni prevedibili Questi cambiamenti sono così comuni che fanno parte del modello. Posizione dei numeri e dei simboli : i numeri alla fine della password (passwd123) sono 10× più frequenti dei numeri all'inizio. I simboli suffissi (passwd!) sono 5× più frequenti che nella posizione centrale.7.3 Il caso dei modelli di tastiera
Le sequenze di tastiera (qwerty, asdf, zxcv, 1234, azerty...) sono particolarmente vulnerabili.
In Time2Crack (versione corrente), questa distinzione non è più un cuscinetto fisso. kbPat come segnale in un estimatore di rango (markovExpectedGuesses) poi interpolare continuamente tra regimi "umano-come" e "a forma di casualità".
8. Notevoli variazioni e implementazioni
8.1 OMEN (Aperto Markov Estimatore delle prossime password)
Sviluppato da : Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge (ESORICS 2015) Disponibilità : Open source (GitHub) Innovazione principale : programmazione ottimizzata per punteggio di livello (supplemento per gradi di probabilità)OMEN utilizza una discretizzazione delle probabilità in livelli interi per accelerare la generazione:
Questo approccio risolve elegantemente il problema dell'enumerazione ordinata senza coda di priorità costosa.
8.2 OMEN+
Estensione di OMEN con:
Prestazioni segnalate: +15 - +20% password screpolate vs OMEN originale con pari budget.
8.3 Statsgen / PACK (Password Analysis and Cracking Kit)
Sviluppato da : Peter Kacherginsky (iphelix) Approccio : più leggero di OMEN, genera maschere e statistiche compatibili Hashcat Uso tipico : analisi di una serie di password incrinate per adattare gli attacchi futuri8.4 JohnTheRipper — Modalità Markov
John TheRipper integra un modalità nativo Markov (sviluppato da Samuele Giovanni Tonon):
john --markov --min-length=6 --max-length=8 hashes.txt
Parametro --markov-threshold (0-400): controlla la soglia di taglio. 150 = parametro standard raccomandato.
La modalità JtR Markov utilizza statistiche precalcolate memorizzate nei file .mkv (file di statistiche di Markov) generato da calcStare.
8.5 Modelli ibridi Markov
Markov + regole : generare candidati Markov, quindi applicare regole di trasformazione Hashcat Markov + dizionario : utilizzare le password di Markov come base per attacchi ibridi Markov + PCFG : combinare l'ordine probabilistico Markov con lo stress strutturale PCFGQueste ibridazioni sono utilizzate nelle configurazioni professionali di cracking per massimizzare la copertura di budget CPU/GPU.
8.6 Modelli linguistici moderni (LLM/LSTM) — successori di Markov
Le reti LSTM e Transformer possono essere viste come generalizzazioni dei canali Markov:
PassGAN (2017), FLA (2019), PassBERT (2022) ha superato i classici modelli Markov del 20-30% in tassi di crepa sul corpus moderno.
9. Comportamento contro diversi tipi di password
9.1 Password da parole naturali
Esempi : sole, letmein, dragon, iloveyou vulnerabilità : estrema Meccanismo : il modello assegna una probabilità molto elevata alle sequenze dell'inglese attuale. superiore 0.001 % candidati generati. Tempo : millisecondi su MD5/SHA-19.2 Parole con leetspeak sostituzioni
Esempi : p@ssw0rd, L3tm3In, $unsh1ne vulnerabilità : Meccanismo Il modello ha imparato che "@" segue spesso "p" (perché "p@ss..." è molto comune nel corpus), che "0" segue spesso "w" (w0rd...), ecc Le sostituzioni più comuni sono integrate nella probabilità di transizione. Tempo : secondi a minuti9.3 Parole con suffisso digitale
Esempi : password123, sole2024, dragon1! vulnerabilità : Meccanismo I suffissi numerici sono così comuni che il modello ha un'alta probabilità per la lettera→ transizioni alla fine della sequenza. "123", "1", "2024", "12" sono i suffissi più probabili. Tempo : secondi a pochi minuti9.4 Nomi e nomi appropriati
Esempi : Thomas92, AnneM@rie, NICOLAS vulnerabilità da moderato a alto Meccanismo : I nomi comuni (in inglese) sono ben rappresentati nel corpo di riferimento. Tempo : minuti a ore a seconda della popolarità del nome9.5 Passare parole di apparente struttura casuale ma mnemotechnic
Esempi : Tr0ub4dor&3 (dell'articolo XKCD), Il0v3myC@t! vulnerabilità moderato Meccanismo Queste password hanno una struttura umana (baseword + sottostituzioni + suffisso), ma la base e le trasformazioni specifiche non sono nella parte superiore di candidati Markov. Il modello alla fine li raggiunge, ma cadono nel 10-30% dello spazio. Tempo : ore a giorni secondo la lunghezza e l'algoritmo di hash9.6 Modelli di tastiera
Esempi : qwerty, 1234567, azerty, qweasdzxc vulnerabilità : estrema (parola che parole naturali) Meccanismo : le transizioni della tastiera sono così rappresentate nel corpus che il modello li classifica tra le prime migliaia di candidati — a volte le prime dieci. Tempo : microsecondi a millisecondi9.7 password davvero casuali
Esempi : xQz7@mK9, 4#pL$2nR, kRf9!Ws3 vulnerabilità : basso a zero Meccanismo : Le transizioni di carattere in queste password hanno probabilità molto basse in un modello addestrato sulle password umane. Comportamento Il vero "costo" della sicurezza è l'entropia lorda. Tempo : paragonabile o superiore alla forza lorda9.8 Passphras
Esempi : equitazione-staple-corretto, monchieneestlouisXIV vulnerabilità : variabile Meccanismo complesso :10. Integrazione in Time2Crack: Modellazione e parametri
logica generale del calcolo (v2)
Time2Crack ora modelli Markov in atteso rango (basato in franchigia) piuttosto che con fattori di riduzione fissi.
Linea di calcolo:
L/D/S♪kbPat♪ seq♪ dt♪ rep♪ hybridVuln),charset e lunghezza,budgetTime(rangestime, vitesseHah).10.2 Tokenizzazione Unicode e profilo calibrato per lingua
Il modello Markov v2 utilizza le classi Unicode (\p{L}♪ \p{N}, altrimenti simbolo) e un profilo calibrato per lingua (caricato da data/markov-calibration.json, con ricaduta interna).
Il profilo contiene:
skeletonRanks (L8D2♪ L8D2S1...shapeRanks (LD♪ LDS...tokenRanks per classe/lunghezza,shapeMultipliers),signalMultipliers).10.3. Interpolazione continua (fine delle soglie ripide)
Il vecchio modello utilizzato cuscinetti (0.003 / 0.006 / 0.25 / 0.9). Il modello v2 sostituisce questa logica con interpolazione continua tra:
humanRank (area strutturale probabile),randomRank (area vicino al grezzo, delimitata).Il peso casuale è una funzione continua della lunghezza, del serbatoio e della forza dei segnali umani, evitando così le discontinuità artificiali.
10.4 Punteggio di fiducia e applicabilità
Time2Crack modello di punteggio (funzione annotateScenarioApplicability()) assegna a Markov:
case "markov":
return context.looksHuman ? 0.76 : 0.34;
looksHuman = true → punteggio 0.76: attacco Markov è molto applicabile, il modello sfrutta le regolarità umanelooksHuman = false → punteggio 0.34: applicabile ma senza grande vantaggio sulla forza brutacase "markov":
return Number(!!context.looksHuman) + Number(!!context.kbPat)
+ Number(!!context.seq) + Number(!!context.rep);
Ogni segnale di "carattere umano" della password aumenta il punteggio evidente di Markov.
10.5 Regolazione HF
Con Markov v2, i segnali strutturali sono già integrati nel rango stimato. La regolazione HF è quindi neutrale per Markov al fine di evitare doppio conteggio.
10.6 Priorità al tiebreak
Quando più attacchi danno tempi simili (± 1ms di differenza), Time2Crack sceglie il più rilevante secondo una priorità semantica:
const tieBreakPriority = {
// ...
markov: 8, // Statistical n-gram — broad coverage
// ...
};
Markov è un utile attacco di complemento che sfrutta le regolarità statistiche. Ha la precedenza sulla forza lorda per le password con la struttura umana, ma dà la precedenza a attacchi dizionario e ibridi che sono più diretti.
10.7 Ultra-weak caso
Per le password ultra-basse (detected by isWeakPassword()), Markov utilizza un tempo basato su un grado minimo (weakGuessTime) piuttosto che una costante fissa:
if (weak) {
rows.push({ ..., sec: weakGuessTime(a.rate), note: t("nWeakPassword"), cat: "markov" });
}
Ragione: una password ultra-bassa (password, 123456, qwerty...) è nella top-100 assoluto Markov spazio — sarà testato prima, l'accuratezza del calcolo è irrilevante.
11. Confronto con altri attacchi probabilistici
11.1 Markov vs PCFG
DimensioneMarkovPCF ------------------------ Unità di analisiTransizioni individuali di carattereStrutture di segmento (L/D/S) Informazioni acquisiteRegolarità locali (n-gram)Globale (grammatica) Forza suParole naturali, schemi continuiParole + numeri, strutture composte LimiteNon cattura le strutture globaliNon catturare transizioni locali ComplementariIdeale per parole pureIdeale per Password123 Esempio ottimale"sunshine"Sole #93 Ordine in Time2CrackMarkov = 8, PCFG = 6PCFG più accurato se la struttura rilevata11.2 Markov vs. Attacco basato sulla regola
DimensioneMarkovA base di regole --------------------- ApproccioGenerazione ad initio probabilisticoTrasformazione di un dizionario esistente CoperturaTutte le password probabiliTraduzioni di parole dizionario Forza suParole rare o leggermente non dizionarieTradizionali trasformazioni di parole conosciute LimiteMeno efficace del dittatore+regole per le mutazioni attualiDipende interamente dalla qualità del dizionario11.3 Markov vs Neural Networks (PassGAN, LSTM)
DimensioneMarkov (Ordine 5)Rete neuronale -------------------------------- ComplessitàO(k ×) per previsioneO(n2 × d) (Transformer) Dati richiesti1-10M esempi sufficienti10M-1B per buoni risultati InterpretazioneTotale (tavole di probabilità)Scatola nera GeneralizzazioneLimitato al contesto locale kPotenziale complessivo Tassi di prelievoRiferimento+20-30% su password moderne Velocità di generazioneMolto veloceLentamente11.4 Posizionamento globale
In un flusso di lavoro professionale di cracking, l'ordine tipico è:
Markov è spesso sfondo linea forza bruta anteriore: copre efficacemente le password umane che sono sfuggiti più attacchi mirati.
12. Limiti dell'attacco di Markov
12.1 Dipendenza dal corpo della formazione
Un corpus dominato dalle password inglesi (RockYou, LinkedIn) interpreta le regolarità:
12.2 indipendenza interposizionale a lungo raggio
Un modello Markov 5 non vede più di 5 caratteri. Per una password di 12 caratteri, non può correlare il 12 ° carattere con il 1 °. Un passphrase come "stargate2004!" ha una struttura globale ("parola + anno +!") che Markov percepisce localmente ma non globalmente — PCFG è migliore qui.
12.3 Insensibilità alle strutture compositive
"HorseStapleBattery" (majusculum iniziale + 3 parole concatenate) è difficile per Markov perché transizioni inter-parole (e→S, e→B) sono inaspettate. L'attacco combinatore o PCFG è più adatto.
12.4 Inefficacia della password casuale
Una password generata da /dev/urandom con 12+ caratteri alfanumerici non ha struttura sfruttabile da Markov. Il tempo di attacco Markov converge alla forza cruda.
12.5 Sensibilità alla politica di password aggiornata
Se un'organizzazione ha imposto regole severe (lunghezza ≥ 16, obbligatoria 1 capitale + 1 cifra + 1 simbolo), le password risultanti possono avere una distribuzione diversa del corpo di formazione — riducendo l'efficacia del modello.
13. Efficace difesa
13.1 Ciò che neutralizza completamente Markov
Generatori di password casuali : qualsiasi password manager (Bitwarden, 1Password, KeePass) con un generatore crittografico sicuro produce sequenze senza struttura sfruttabile da Markov. Abbastanza lunghezza con casuale : anche con un serbatoio ridotto (solo a-z), 16 caratteri casuali rappresentano 26^1613.2 Che riduce notevolmente l'efficacia di Markov
Passfraghe lunghe di parole rare : 4+ parole non comuni separate sono dei migliori candidati Markov, soprattutto se le parole provengono da lingue diverse o vocabularie specializzate. Evitare i sostituti di leetspeak comuni : Le sottostituzioni a→@, e→3, ecc. sono integrate nel modello, ma trasformazioni non standard (a→ Evitare modelli di tastiera e parole naturali : La massima vulnerabilità di Markov.13.3 Che cosa non difende contro Markov
Requisiti di complessità (majuscule + cifra + simbolo) : se questi elementi sono aggiunti a una parola naturale (P@ssw0rd!), il modello cattura questi modelli. falsa sicurezza percepita. Sostituzioni di base delle leetspeak : completamente catturato dal modello (transizioni "@"→"s", "3"→"y"...). Suffissi digitali/prefissi : "parola + 123" o "parola + 2024" modelli sono tra i primi testati.13.4 Raccomandazione finale
La difesa più efficace contro Markov (e qualsiasi attacco probabile) è quella dieliminare qualsiasi struttura umana prevedibile, che equivale a delegare la creazione di password a un generatore casuale sicuro.
14. Riferimenti
Academics (peer-reviewed)
Dürmuth, M., Angelstorf, F., Horsch, J., Nürnberger, S., & Rüegge, A. (2015). OMEN: Password più veloce indovinando utilizzando un Enumeratore di Markov ordinato. Software e sistemi sicuri di ingegneria (ESSoS 2015), LNCS 8978, pp. 119–132. → Riferimento principale per la calibrazione probabilistica di Markov utilizzata in Time2Crack (RockYou 14M, Ordine 5) Ma, J., Yang, W., Luo, M., & Li, N. (2014). Uno studio di modelli di password probabilistic. IEEE Symposium on Security and Privacy (S&P 2014). → Confronto empirico Markov, PCFG, n-grammi su password 70M Weir, M., Aggarwal, S., de Medeiros, B., & Glodek, B. (2009). Tracciamento di password utilizzando Grammatica Probabilistica Senza Contesto. IEEE Symposium on Security and Privacy (S&P 2009). → Lavoro di fondazione sui metodi probabilistici strutturali (concorso di Markov) Wheeler, D.L. (2016). zxcvbn: stima della forza della password a basso costo. 25 ° Simposio di sicurezza USENIX. → Conferma l'efficacia di n-grams per una stima realistica della forza password Pasquini, D., Cianfriglia, M., Ateniese, G., & Bernaschi, M. (2021). Ridurre Bias nella modellazione della forza di password reale-mondo attraverso l'apprendimento profondo e i dizionari dinamici. 30 ° Simposio di sicurezza USENIX. → Confronto quantitativo Markov vs deep learning su moderno corpus Hitaj, B., Gasti, P., Ateniese, G., & Perez-Cruz, F. (2019). PassGAN: Un Approccio Deep Learning per l'Indovinazione della Password. ACNS 2019. → Markov Neural Successor, punto di confronto per Time2CrackdescNeural
Esecuzioni open source
OM https://github.com/RUB-SysSec/OMEN John TheRipper (modalità Markov) https://www.openwall.com/john/doc/MARKOV.shtml PACK (statsgen/maskgen) https://github.com/iphelix/pack Hashcat https://hashcat.net/hashcat/Fonti di corpus
RockYou (2009) : 14,3M password dal difetto del social network RockYou # I Been Pwned # https://haveibeenpwned.com — ~14 miliardi di credenziali aggregate (Troy Hunt) SecLismo : https://github.com/danielmiessler/SecLists — dizionari di riferimento e liste di paroleFonti web citate nell'applicazione Time2Crack
Springer (chapter Markov / cracking probabilistico). http://link.springer.com/chapter/10.1007/978-319-24174-67 → Correlato fonte indescMarkov (app.js) per la riduzione efficace dello spazio di ricerca per priorità statistica.
Documento generato per il progetto Time2Crack — ultimo aggiornamento: 2026-04-01 Sulla base dell'implementazione in app.js (Markov v2 base di rango) e pubblicazioni accademiche citate