Se supponiamo che la tua passphrase sia stata generata casualmente (non influenzata da fattori di selezione umani), allora alcuni calcoli matematici di base e un paio di strumenti possono ottenere la maggior parte del modo lì. La tua restrizione n. 3 (ogni carattere può essere utilizzato una sola volta) è la più difficile, ma probabilmente non ridurrebbe molto lo spazio totale delle combinazioni, quindi per ora consiglio di metterlo da parte.
Cattura la complessità
Per prima cosa, dai un'occhiata a lo strumento policygen
da il pacchetto di strumenti PACK . È possibile generare un set di maschere che corrispondono alla lunghezza e ai minimi.
Puoi anche informare la stima del tempo usando il parametro policygen
--pps
.
Questo indica a policygen
quante password al secondo può tentare la tua piattaforma di destinazione.
Ad esempio, se hai una GPU simile alla mia GTX 970 SC (che può fare 185 kH / s per WPA / WPA2 usando hashcat
), otterrai qualcosa di simile al seguente:
$ policygen --pps=185000 --minlength=8 --maxlength=8 \
--mindigit=2 --minlower=2 --minupper=2 --maxspecial=0 -o test.masks
_
PolicyGen 0.0.2 | |
_ __ __ _ ___| | _
| '_ \ / _' |/ __| |/ /
| |_) | (_| | (__| <
| .__/ \__,_|\___|_|\_\
| |
|_| [email protected]
[*] Saving generated masks to [test.masks]
[*] Using 185,000 keys/sec for calculations.
[*] Password policy:
Pass Lengths: min:8 max:8
Min strength: l:2 u:2 d:2 s:None
Max strength: l:None u:None d:None s:0
[*] Generating [compliant] masks.
[*] Generating 8 character password masks.
[*] Total Masks: 65536 Time: >1 year
[*] Policy Masks: 2940 Time: >1 year
$ wc -l test.masks
2940 test.masks
Il set risultante di 2940 maschere copre l'insieme di tutte le possibilità che corrispondono ai tuoi vincoli.
Stima del tempo
Si noti che policygen
stima che il tempo sia superiore a 1 anno. Per una stima più ravvicinata, potresti non essere in grado di prevedere quando la tua passphrase specifica sarebbe spezzata, ma puoi stabilire un limite superiore e una media (metà del limite superiore).
Utilizzando lo strumento per la maschera di% di hashcat
, puoi ottenere il numero totale di combinazioni per un maschera data. Eseguendolo contro ogni maschera e sommando i risultati:
for mask in 'cat test.mask'; do \
mp64 --combinations $mask; done \
| awk '{s+=$1} END {print s}'
... restituisce il seguente numero:
5.84746e+13
o approssimativamente combinazioni 58474600000000 . Supponendo 185.000 hash al secondo, ovvero (5.84746e + 13/1985000) / 60/60/24 = 340,95 giorni o circa un anno per esaurire lo spazio chiavi intero . La passphrase media verrebbe violata entro mezzo anno (metà del tempo necessario per attraversare lo spazio totale della tastiera).
Naturalmente, questa stima temporale è legata direttamente alla potenza di calcolo disponibile. Man mano che aggiungi più GPU al mix, le prestazioni aumenteranno in modo lineare con le loro prestazioni.
Avvio dell'attacco
Per provare a decifrare, devi semplicemente alimentare il tuo handshake WPA2 e il tuo elenco di maschere a hashcat
, in questo modo. Nota che questo rig ha più di una GPU.
$ ./hashcat -w 4 -a 3 -m 2500 [your-wpa2-hccapx-filename] test.masks
hashcat (v3.5.0) starting...
OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080, 2028/8113 MB allocatable, 20MCU
* Device #2: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #3: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #4: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #5: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU
* Device #6: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU
OpenCL Platform #2: Advanced Micro Devices, Inc.
================================================
* Device #7: AMD FX(tm)-8350 Eight-Core Processor, skipped.
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger disabled.
[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit =>
Session..........: hashcat
Status...........: Running
Hash.Type........: WPA/WPA2
Hash.Target......: 8381533406003807685881523 (AP:ae:f5:0f:22:80:1c STA:98:7b:dc:f9:f9:50)
Time.Started.....: Sun Apr 9 07:30:31 2017 (1 sec)
Time.Estimated...: Sun Apr 9 08:08:54 2017 (38 mins, 22 secs)
Guess.Mask.......: ?d?d?d?d?l?l?u?u [8]
Guess.Queue......: 1/2940 (0.03%)
Speed.Dev.#1.....: 401.7 kH/s (403.50ms)
Speed.Dev.#2.....: 402.4 kH/s (405.15ms)
Speed.Dev.#3.....: 405.4 kH/s (402.24ms)
Speed.Dev.#4.....: 403.3 kH/s (400.39ms)
Speed.Dev.#5.....: 187.0 kH/s (283.22ms)
Speed.Dev.#6.....: 185.3 kH/s (285.72ms)
Speed.Dev.#*.....: 1985.0 kH/s
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 0/4569760000 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/456976000 (0.00%)
Candidates.#1....: 1234maMA -> 1618pqAN
Candidates.#2....: 1218pqAN -> 1667yzMA
Candidates.#3....: 1242yzMA -> 1631tgBA
Candidates.#4....: 1771seGO -> 1558paAN
Candidates.#5....: 1784jaAN -> 1816blON
Candidates.#6....: 1261tgBA -> 1523reGO
HWMon.Dev.#1.....: Temp: 63c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:8
HWMon.Dev.#2.....: Temp: 55c Fan: 90% Util:100% Core:1809MHz Mem:4513MHz Bus:4
HWMon.Dev.#3.....: Temp: 56c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:16
HWMon.Dev.#4.....: Temp: 50c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:4
HWMon.Dev.#5.....: Temp: 54c Fan: 60% Util:100% Core:1379MHz Mem:3004MHz Bus:1
HWMon.Dev.#6.....: Temp: 58c Fan: 60% Util:100% Core:1366MHz Mem:3004MHz Bus:1
hashcat
inizierà a lavorare nel tuo elenco di maschere, uno alla volta. Poiché policygen
ordina le maschere in ordine (approssimativamente) di complessità, le maschere più veloci vengono visualizzate per prime nell'elenco. Quindi ogni maschera tenderà a prendere (all'incirca) più tempo di quelli precedenti.
Probabilmente non vorresti aspettare fino a quando non sarà finito. :)