Sunteți pe pagina 1din 9

c    


  

 
              .
După cum sugerează şi numele, numere pseudo-aleatoare nu sunt cu adevărat aleatorii. mai
degrabă, ele sunt generate cu o formulă matematică. Numerele pseudo-aleatoare au caracteristica
că acestea sunt complet previzibile dacă ştiţi ³sămânţă´, care a început secvenţa şi algoritmul ,
iar in scopul de a genera parole, predictibilitatea nu este o caracteristică de dorit.  generarea
de numere pseudo-aleatoare trebuie sa fie aleasa o ³sămânţă´ bună. Seminţele trebuie să fie
unele cu adevărat aleatorii şi trebuie alese dintr-un spaţiu destul de mare de posibilităti.

În prezent în logistitica celor mai multe organizaţii se impune folosirea unui anumit
număr de caractere pentru parole ,cu o anumită complexitate şi reguli pentru schimbarea ei.
Pentru administratorii de sistem, generarea unei parole este un element important pentru
menţinerea unui mediu sigur. Administratorul de sistem trebuie să se asigure că fiecare cont are o
parola care este cunoscut doar pentru utilizator şi nu este uşor de ghicit de către alţi utilizatori Se
pleaci de la prezumţia că o parolă mai lungă de 7 caractere alfanumerice este mai greu de spart
decât una mai scurtă.

S-a ajuns la implementarea acestor parole pseudo-aleatoare deoarece s-a constat că in


general, utilizatorul, foloseşte drept parolă caractere logice uşor de reţinut precum:data
naşterii,numele soţului,al animalului preferat,al echipei favorite, iar de regulă pentru a satisface
cerinţele de complexitate adaugă la sfarşit o cifră,de aici rezultând o parolă uşor de ghicit.

Crearea acetor tipuri de parole are la bază alegerea unui număr/vector utilizat pentru
iniţializarea unui generator de numere pseudo-aleatoare, această alegere este crucială pentru
securitate .Acest număr este folosit pentru crearea următoarelor secvenţe de numere aleatoare .
Aşa cum este de asteptat, dacă intotdeauna se va alege acelaşi număr iniţial ,se va obţine aceiaşi
secvenţă de numere aleatoare .Pentru ca numărul iniţial să varieze de fiecare dată se foloseşte un
      !
 " numit # $În majoritatea problemelor se
foloseşte iniţializarea % &'((unde RANDOM conţine la fiecare accesare un număr
aleator între 0 şi 32767 , iar ³((´ reprezintă identificatorul de process (# ).Acest numar poate
fi usor generat si afisat prin comanda  !( % &$

Exista mai multe tipuri de generare a parolelor pseudo-aleatoare de tip intreg .Se poate
stabili ca numărul sa fie cuprins intre 1 si o limită maximă ,de asemenea se poate genera o
valoare aleatoare după o limită inferioara sau se pot stabili numere pseudo ±aleatoare de o
dimensiune fixată prin adaugarea de zero-uri in fata numărului pentru a mentine dimensiunea
stabilită [ 

    

   
    


üeneratoarele de numere pseudo-aleatoare produc numere prin calcul (prin urmare


numerele generate sunt deterministe ),dar algoritmul de generare ³amestecă´ suficient de bine
numerele pentru ca sirul de numere să pară aleator. In fiecare moment generatorul are asociată o
stare internă .Starea internă este o valoare dintr-o multime arbitrară suficient de mare.Acest
număr este obtinut prin aplicarea unui algoritm care modifică starea internă pentru ca următorul
număr sa nu aibă aceiasi valoare.Dace acest algoritm ³amestecă´ destul de bine bitii sirul pseudo
±aleator are proprietatea de a fi un număr cu adevărat aleator,desi multimea stăriilor interne este
finită si la un moment dat numerele se vor repeta datorită periodicitătii.

Este foarte dificil să creezi cu adevarat un număr aleator intr-un sistem computerizat.
Problema este repetabilitatea si predictibilitatea numărului O metodă foarte populară de
generare automată a parolelor pseudo aleaatoare, este utilizand o sursă reală de date aleatoare.
Multe sisteme UNIX oferă un modul de kernel, Œ"Œ  care utilizează sistemele de
evenimente (întrerupe traficul în reţea, etc), ca o sursă de entropie pentru a produce date reale
aleatoare. De asemenea in exemplul de mai jos pentru generarea unui numar pseudo-aleator s-a
folosit Œ"Œ . Intre cele doua dispozitive de generare aleatoare Œ"Œ  si
/"Œ  există o diferentă constand in faptul Œ"Œ  generează numere pseudo-
aleatoare de ³inaltă calitate´ generand biti aleatori pana la o limită stabilită ,si ea aleatoare ,pe
cand Œ"Œ  nu are această limitare .

)*
echo `</dev/urandom tr -dc A-Za-z0-9 | head -c8`

â ! + , alege primele 8 caractere aleatoare pentru formarea unei parole pseudo-
aleatoare
⠌" Director pentru dispozitive speciale

Exemplu 1: c ea ea unei pa le pseudaleata e de tip int eg in funcţie de c ite iile


din meniu (p in utiliza ea funcţiei RANDOM):

' /bin/bash
echo ³Vă rugăm să selectaţi o criterie de generare a parolei pseudo-aleatoare de tip numeric´
echo "1) Un număr pseudo-aleator intre 1 si o limita superioară aleasă"
echo "2) Un număr pseudo-aleator mai mare decat o valoare aleasă"
echo "3) Un număr pseudo-aleator compus din suma a 10 numere pseudo-aleatoare"
echo ³4) Un numar de dimensiune fixa intre 1 si o limita superioara´
read criteriu
case $criteriu in
-     . !
1)RANDOM=$$
echo ³Introduti limita superioară´
read UPPER_LIMIT
RANDOM_PASS=$(($RANDOM % $UPPER_LIMIT + 1))
echo ³Parola dumneavostra este $RANDOM_PASS´;;
-
2)echo "introduceti limita inferioara"
read MIN
number=0
RANDOM=$$
while [ "$number" -le $MIN ]
do
number=$RANDOM
done
echo "Parola pseudo-aleatoare este $number";;
3)MAXCOUNT=10
RANDOM=$$
PASS=0
count=1
while [ "$count" -le $MAXCOUNT ]
do
number=$RANDOM
PASS=`expr $PASS + $number `
count=`expr $count + 1`
done
echo ³parola este $PASS´;;
-     . !
4)UPPER_LIMIT=9999
PASSWORD=$((RANDOM % $UPPER_LIMIT + 1))
RP_LENüTH= ${'PASSWORD}
UL_LENüTH=${'UPPER_LIMIT}
((LENüTH_DIFF= UL_LENüTH ± RP_LENüTH))
case $LENüTH_DIFF in
0) echo ³$PASSWORD´;;
1) echo ³0$PASSWORD´;;
2) echo ³00$PASSWORD´;;
3) echo ³000$PASSWORD´;;
4) echo ³0000$PASSWORD´;;
5) echo ³00000$PASSWORD´;;
*)echo ³$PASSWORD´;;
Esac
'
*) echo ³optiune invalidă´
esac


â&/c% reprezintă valoarea numerelor pseudo-aleatoare
â 0%1 2'(3-4 5retine dimensiunea parolei pseudo-aleatoare numerice
generate
â 0%1 2'(3- 0#&# 5retine dimensiune limitei superioare
â[[%1 20 #66'0%1 2+ 0%1 277
%1 20 #66retine diferenta dintre dimensiunea limitei si dimensiune parolei pentru a putea
sti cate zerouri sa adauge la palora pseudo-aleatoare creata pentru a mentine o dimenisiune fixa a
parolelor la fiecare rulare a programului
â[[77 face operatii aritmetice si atribui variabilei rezultatul obtinut specific Korn Shell

Exemplu 2 Gene a e a unei pa le pseudaleata e de minim 8 ca acte e(cu ajut ul


c eă ii unei mat ici ce cnţine nume e şi lite e ):

' /bin/bash
MATRIX="0123456789ABCDEFüHIJKLMNOPRSTUVWXYZabcdefghijklmnoprstuvwxyz"
echo ³Introduceti numarul de caractere al parolei´
read LENüTH
if [ ³$LENüTH´ -lt 8 ]
then
echo ³parola trebuie sa aiba minim 8 caractere´
echo ³introduceti numar carctere´
read LENüTH
fi
if [ ³$LENüTH´ ±ge 8 ]
then
while [ "${n:=1}" -le "$LENüTH" ]
do
PAROLA="$PAROLA${MATRIX:$(($RANDOM%${'MATRIX})):1}"
let n+=1
done
fi
echo "parola este $PAROLA"

ën acest exemplu:

â *'8iniţializează variabila n cu 1 în caz că nu a fost iniţializată în prealabil


⠚(3-& #/5returnează dimensiunea matricei
â ( % &š(3-& #/5returnează un număr aleator între 1 şi dimensiunea matricei -1
â 9'8 incrementează variabila n pentru pasul următor al ciclării

De asemea o alta metodă de generare a parolelor pseudo_aleatoare este cu ajutorul


 : ;care se instalează prin linia de comandă : ( 
  : ;iar
apoi poate fi apelată în program.Este o metodă uşoară şi eficientă pentru generarea parolei de
dimensiunea dorită.
Exemplu 3 Gene a ea unei pa le pseudaleata e de 10 ca acte e p in makepasswd

' /bin/bash
RPASS=$(makepasswd --char=10)
echo ³parola generata este $RPASS´

â  : ; generează o parolă pseudo-aleatoare


â

! '8< stabileşte numărul de caractere ca fiind =10

Exemplu 4: Gene a ea unei pa le pseudaleata e din fişie ul c eat. (unde fişie ul
cnţine pe fieca e linie în pa te nume e, lite e şi ca acte e ):

âExemplu conţinut fişier : 1 2 3 4 5 6 7 8 9 0 a b c d e f g h I j l m n o p r s ' $ % ^ & * ( ^ ~ | /


âalgoritmul constă în alegerea aleatoare a unei linii din fişier deci implicit al unui caracter, de un
număr de paşi egal cu lungimea parolei dorite de utilizator
âeste de preferat stergerea liniilor nule din fişier inaintea generării parolei

' /bin/bash
'fişierul creat se numeşte tmp.txt şi conţine pe fiecare linie câte un caracter
FILE=tmp.txt
'ştergerea liniilor nule
sed '/^$/d' $FILE > tt
mv tt $FILE
password= '  
  
     

echo ³dimensiunea parolei dorite´
read dim
i=1
while [ ³$i´ ±le $dim ]
do
random_line=$(cat $FILE | sort --random-sort | head -n 1)
password=$password$random_line
i=`expr $i + 1 '

 
 
done
echo ³$password´

â verificarea liniilor nule se face prin expresia !( în care !'  şi (' 
,cu niciun caracter între
â noul fişier este redirecţionat spre un alt fişier ³tt´ prin comanda (6#=iar apoi mutat în
fişierul iniţial prni comanda ! 
â (6#> 


 >! 
8 alege aleator una din liniile din fişier
â !  reprezinta partea de sus a pagini
Exemplu 5: Gene a e pa lă pseudaleata e de 12 ca acte e cu ajut ul elementel unei
multimi:

' /bin/bash
MAXSIZE=12 'reprezintă dimensiunea parolei ,dimensiune ce poate fi oricand modificată
RANDOM=$$
array=(
qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASD
F ü H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 \ \@ \' \$ \% \^ \& \* \( \)
\ \@ \' \$ \% \^ \& \* \( \) \ \@ \' \$ \% \^ \& \* \( \) \ \@ \' \$ \%
)
' MODNUM este folosit pentru a pastra numerele aleatoare in dimensiunea multimii
MODNUM=${'array[*]}
i=0 ' un contor ce pastrează numarul de caractere generat in parola
while [ $i -lt $MAXSIZE ]
do
index=$(($RANDOM%$MODNUM))
password="${password}${array[$index]}"
let i+=1 'incrementare contor
done
echo ³Parola este $password´

â  : !
se foloseste pentru ca acele caractere din array ce indeplinesc anumite functii
să isi piardă semnificatia ,astfel ca ele să devină semne si să nu mai fie comenzi

& : Ubuntu

? 


Advanced Bash ±Scripting üuide (º

 !
 "
)

Mastering Unix Shell Scripting [#    º


SHELLdorado - Shell Scripts










' /bin/bash
nume=$1
sleep 5
until who | grep "^$nume" > /dev/null
do
sleep 10
done
echo "utilizatorul $nume e beat"
echo $?
n=$?
if [ "$n" -eq 0 ]
then
echo "doriti schimbare parola?"
echo "1)yes"
echo "2)n"
read opt
case $opt in
1)echo "generarea unei noi parole aut"
new_pass=$RANDOM
echo $new_pass
passwd andu;;
2) echo "ok";;
esac
fi






' /bin/bash
MAXSIZE=12
array1=(
qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASD
F ü H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 \ \@ \' \$ \% \^ \& \* \( \)
\ \@ \' \$ \% \^ \& \* \( \) \ \@ \' \$ \% \^ \& \* \( \) \ \@ \' \$ \%
)
MODNUM=${'array1[*]}
i=0
while [ $i -lt $MAXSIZE ]
do
index=$(($RANDOM%$MODNUM))
password="${password}${array1[$index]}"
let i+=1
done
echo ³$password´




' /usr/bin/perl

sub randomPassword {
my $password;
my $_rand;

my $password_length = $_[0];
if ( $password_length) {
$password_length = 10;
}

my @chars = split(" ",


"a b c d e f g h i j k l m n o
pqrstuvwxyzABCD
EFüHIJKLMNOPQRS
TUVWXYZ-_%'|012
3 4 5 6 7 8 9 ? $ @");

srand;
for (my $i=0; $i <= $password_length ;$i++) {
$_rand = int(rand 71);
$password .= $chars[$_rand];
}
return $password;
}
print "\n\nRandom Password = ", randomPassword(9);

The [7 function returns a pseudo-random integer between 0 and % 0&/.

The  [7 function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by [7. These
sequences are repeatable by calling  [7 with the same seed value.

If no seed value is provided, the [7 function is automatically seeded with a value of 1.

‘ ‘ 

The [7 function returns a value between 0 and RAND_MAX. The  [7 returns no value.

? ? 

S-ar putea să vă placă și