Si asumimos que su frase de contraseña fue generada aleatoriamente (no influenciada por factores de selección humanos), entonces algunas matemáticas básicas y un par de herramientas pueden ayudarlo a llegar hasta allí. Su restricción # 3 (cada carácter solo se puede usar una vez) es la más difícil, pero probablemente no reduciría mucho el espacio total de las combinaciones, por lo que recomiendo dejarlo de lado por ahora.
Capturando la complejidad
Primero, eche un vistazo a la herramienta policygen
en el kit de herramientas PACK . Puede generar un conjunto de máscaras que coincidan con su longitud y sus mínimos.
También puede informar la estimación de tiempo usando el parámetro policygen
' --pps
.
Esto le dice a policygen
cuántas contraseñas por segundo puede intentar su plataforma objetivo.
Por ejemplo, si tiene una GPU similar a mi GTX 970 SC (que puede hacer 185 kH / s para WPA / WPA2 usando hashcat
), obtendrá algo como lo siguiente:
$ 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
El conjunto resultante de 2940 máscaras cubre el conjunto de todas las posibilidades que coinciden con tus restricciones.
Estimando el tiempo
Tenga en cuenta que policygen
estima que el tiempo será de más de 1 año. Para una estimación más cercana, es posible que no pueda predecir cuándo se descifra su frase de contraseña específica, pero puede establecer un límite superior y un promedio (la mitad de ese límite superior).
Al utilizar la herramienta de procesador de máscara de hashcat
, puede obtener el número total de combinaciones para un Máscara dada. Ejecutando eso contra cada máscara, y sumando los resultados:
for mask in 'cat test.mask'; do \
mp64 --combinations $mask; done \
| awk '{s+=$1} END {print s}'
... produce el siguiente número:
5.84746e+13
o aproximadamente 58474600000000 combinaciones . Suponiendo 185,000 hashes por segundo, eso es (5.84746e + 13/1985000) / 60/60/24 = 340,95 días, o aproximadamente un año para agotar todo el espacio de teclas . La frase de contraseña promedio se eliminaría dentro de medio año (la mitad del tiempo necesario para recorrer el espacio total de teclas).
Por supuesto, esta estimación de tiempo está vinculada directamente a la potencia de cómputo disponible. A medida que agregue más GPU a la mezcla, el rendimiento aumentará linealmente con su rendimiento.
Iniciando el ataque
Para intentar descifrarlo, simplemente alimentarías tu protocolo de enlace WPA2 y tu lista de máscaras a hashcat
, así. Tenga en cuenta que esta plataforma tiene más de 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
comenzará a trabajar a través de su lista de máscaras, una a la vez. Dado que policygen
ordena las máscaras en orden de complejidad (aproximadamente), las más rápidas aparecen primero en la lista. Por lo tanto, cada máscara tenderá a tomar (aproximadamente) más tiempo que las anteriores.
Probablemente no querrás esperar hasta que esté listo. :)