martes, 4 de marzo de 2014

Combinaciones sin repetición (script en bash)


Son los grupos que podemos hacer de entre m elementos tomados de n en n diferenciándose, un grupo de otro, en tener algún elemento distinto.

Si disponemos de los elementos: {a,b,c,d} y los tomamos de 2 en dos, los grupos que podemos formar de modo que cada grupo se diferencie de los demás en tener un elemento distinto son:

ab,ac,ad,bc,bd,cd  =  6 combinaciones

Lo mismo hace este script que hice para calcular las combinaciones que se realizarán para generar un diccionario de fuerza bruta para crackeo de accesos:

mi prueba inicial fue de letras minúsculas y números que dan un total de 36 dígitos , haciendo la combinación de 1 en 1  y la ejecución del script fué de la siguiente forma:

./script.sh 36 1

se envía el parámetro 36  y el parametro 1  indicando el total de numeros y de cuantos en cuantos va a ser las combinaciones .  de esta ejecución el resultado fue de 9003737871877668864 Combinaciones posibles para intentos de loggeo (Es por eso que entre más segura sea tu contraseña más difícil será el hackeo de la misma  :D )

Este script realiza algunas operaciones con factoriales en bash para calcular las combinaciones:

#!/bin/bash
# By, Oswaldo villa @villatux

# USO  ./script.sh 4 2
# Descripcion:  En este ejemplo queremos sacar cuantas combinaciones tenemos
# con 4 caracteres combinados de dos en dos

factorial=$1
res=1
while [ $factorial -gt 1 ]
 do
 let res=$res*$factorial
 let factorial-=1
done

factorial2=$2
res2=1
while [ $factorial2 -gt 1 ]
 do
 let res2=$res2*$factorial2
 let factorial2-=1
done
echo $1" digitos de "$2 "en "$2

let combinaciones=($res/$res2)/$res2
echo "Resultado : " $combinaciones "Combinaciones"

No hay comentarios: