Cómo saber si mi contraseña ha sido comprometida antes

¿Me han engañado? es mi persona a la que recurrir cuando se trata de verificar si una contraseña ha sido expuesta en alguna violación de datos antes. Solo voy allí, introduzco la contraseña que me gustaría comprobar y hago clic en el pwned? botón. Y obtendrá el resultado de inmediato.

O, mejor aún, dado que Have I Been Pwned proporciona una API increíble para que cualquiera pueda crear una aplicación para buscar rápidamente la lista de cuentas pwned a través de un servicio REST, podemos crear un script de PowerShell para agilizar el proceso.

Estos son los pasos para lograr esto:

  1. Ingrese una contraseña y cree un hash.
  2. Envíe los primeros 5 bytes del hash a la API.
  3. Obtenga la lista completa de hashes que comienzan con estos 5 bytes.
  4. Compruebe si alguno de ellos en la lista coincide con su hash de contraseña completo.

Una cosa a tener en cuenta es que, dado que solo envía los primeros 5 bytes del hash a través de Internet, no compromete su hash debido al proceso de verificación.

# input password to hash
Add-Type -AssemblyName Microsoft.VisualBasic
$password = [Microsoft.VisualBasic.Interaction]::InputBox("Password to test" , "Password Checker", "")

# get password hash
$stream = [IO.MemoryStream]::new([Text.Encoding]::UTF8.GetBytes($Password))
$hash = Get-FileHash -InputStream $stream -Algorithm SHA1
$stream.Close()
$stream.Dispose()

# find first five and subsequent hash characters
$prefix, $suffix = $hash.Hash -split '(?<=^.{5})'

# ask for matching passwords with the same first 5 hash digits
$url = "https://api.pwnedpasswords.com/range/$prefix"
$response = Invoke-RestMethod -Uri $url -UseBasicParsing

# find the exact match
$lines = $response -split 'rn'
$seen = foreach ($line in $lines)
{
  if ($line.StartsWith($suffix)) { 
    [int]($line -split ':')[-1]
    break
  }
}
if (!$seen ) {$seen = "0"} 

"The password '$Password' has been seen {0:n0} times." -f $seen 

También puede descargarlo a continuación si lo desea.

Cuando inicie el código, primero aparecerá un cuadro de entrada donde puede escribir la contraseña que desea verificar.

Además, puede convertir el script en una función e incrustarlo en su propio script para comprobar una gran cantidad de hashes que exportó de su propia lista.

Finalmente, tengo que dar el crédito a PowerTips para este increíble consejo, aunque modifiqué un poco el código para una mejor entrada y salida.

Deja un comentario