Ejemplo de generación de contraseñas “casi random” | Powershell

En esta oportunidad, les traigo un script con el cual podrán generar contraseñas aleatorias en forma automática, pero a diferencia de otros artículos que he escrito sobre scripts de Powershell, veremos paso a paso como generarlo y utilizarlo.

 

Objetivo del script

El objetivo, es poder generar una contraseña aleatoria en forma automática, la cual contenga 6 letras minúsculas, 1 número y 1 letra mayúscula.

Todo esto generado mediante algunas líneas de código utilizando Powershell.

Si bien será un ejercicio simple, nos permitirá observar las bondades del lenguaje para realizar esta tarea.

 

¿Qué utilizaremos para realizar el script?

Los que necesitamos es el Powershell ISE, el cual nos brinda un ambiente de programación propio de Powershell.

En caso de no tenerlo instalado en el equipo, podemos utilizar un block de notas.

 

Paso 1

Lo primero que haremos es generar un función, con el objetivo de poder reutilizar el bloque de código en caso de ser necesario.

Para generar una función en Powershell utilizaremos la palabra reservada function y la llamaremos Get-SimplePassword.

Function Get-SimplePassword {

return
}


Paso 2

Definiremos dentro de nuestra función 3 variables, una para almacenar las letras del abecedario, otra para almacenar números y la última para la contraseña resultante, la cual apuntaremos a null.

Function Get-SimplePassword {

# Variable para letras

$alphabet = "q","w","e","r","t","y","u","p","a","s","d","f","g","h","j","k","z","x","c","v","b","n","m"

# Variable para números

$number = "2","3","4","5","6","7","8","9"

# Variable para contraseña resultante

$pass = $null

return
}


Paso 3

En este paso definiremos 3 variables, a las cuales le asignaremos mediante el CmdLet Get-Random, valores de las variables definidas en el paso 2.

¿Qué hace el CmdLet Get-Random?

Este comando, selecciona en forma aleatoria valores números u objetos que contenga una lista.

Como se puede observar, mediante el parámetro -Count, le indicamos la cantidad de objetos o números debe seleccionar.

Más información sobre Get-Random:

https://technet.microsoft.com/en-us/library/hh849905.aspx

Function Get-SimplePassword {

# Variable para letras

$alphabet = "q","w","e","r","t","y","u","p","a","s","d","f","g","h","j","k","z","x","c","v","b","n","m"

# Variable para números

$number = "2","3","4","5","6","7","8","9"

# Variable para contraseña resultante

$pass1 = $null

# Variables aleatorias

$1 = Get-Random -InputObject $alphabet -Count 6
$2 = Get-Random -InputObject $number -Count 1
$3 = Get-Random -InputObject $alphabet.ToUpper() -Count 1

return
}

Nota: Como pueden ver en la variable $3, estamos utilizando el método ToUpper() de modo que las letras definidas en minúscula en la variable $alphabet, pasen a mayúscula.

 

Paso 4

Llego el momento de realizar iteraciones, las mismas son tres iteraciones del tipo foreach mediante las cuales, recorreremos las variables aleatorias definidas en el paso 3 y las agregamos a la variable $pass.

Por último, retornamos $pass, la cual contiene la contraseña que generamos en forma aleatoria y llamamos a la función al final de nuestro script.

Function Get-SimplePassword {

# Variable para letras

$alphabet = "q","w","e","r","t","y","u","p","a","s","d","f","g","h","j","k","z","x","c","v","b","n","m"

# Variable para números

$number = "2","3","4","5","6","7","8","9"

# Variable para contraseña resultante

$pass = $null

# Variables aleatorias

$1 = Get-Random -InputObject $alphabet -Count 6
$2 = Get-Random -InputObject $number -Count 1
$3 = Get-Random -InputObject $alphabet.ToUpper() -Count 1

# Iteraciones

# Iteración 1 -----
foreach($n in $1) {

$pass += $n

}

# Iteración 2 -----
foreach ($n2 in $2) {

$pass += $n2

}

# Iteración 3 -----
foreach ($n3 in $3) {

$pass += $n3

}

return $pass
}
Get-SimplePassword

Paso 5

 

Es hora de probar el script!

Para ello, lo guardamos con algún nombre y le indicamos el tipo de extensión (en el caso de Powershell .ps1)

Abrimos una ventana de Powershell y ejecutamos el script.

En mi caso lo guarde con el nombre RandomSimplePassword.ps1, por lo que lo ejecutare de la siguiente manera:

1

Listo, como podemos observar nos devuelve una contraseña aleatoria y si volvemos a ejecutar el script nos debe devolver otra:

2

Conclusión

 

Esto es una forma simple de generar nuestro propio sistema de generador de contraseñas aleatorias, si bien quizás no cumple con todos los requerimientos que una organización pueda tener con respecto a complejidad de contraseñas, la idea es que puedan probar e inventar sus propios script a partir de este ejemplo.

¡Espero que les sea útil!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: