Sunteți pe pagina 1din 13

Generator de parole

in Python folosind algoritmul LFSR

Corabu Ionut-Claudiu
Anul 2,Grupa 224
15 mai 2023
Universitatea din Craiova
Facultatea de Stiinte, sectia Informatica
Cuprins:

1. Problematica utilizarii generatoarelor de parole.

2. Python in rezolvarea problemelor de securitate a sistemelor informatice.

3. Vulnerabilitati generale ale sistemului de operare Windows sub care


ruleaza softul de generare a parolelor.

4. Ghid de utilizare a solutiei software de generare a parolelor.

5. Codul aplicatiei care foloseste algoritmul LFSR.


1. Problematica generatoarelor de parole în domeniul
securității sistemelor informatice:

Generatoarele de parole reprezintă o componentă esențială în domeniul


securității sistemelor informatice. Acestea sunt instrumente software utilizate
pentru a genera parole aleatorii și puternice, având ca scop principal protejarea
datelor și a resurselor prin prevenirea accesului neautorizat.

Una dintre principalele probleme în domeniul securității sistemelor


informatice este slăbiciunea parolelor utilizate de către utilizatori. Mulți utilizatori
aleg parole slabe sau ușor de ghicit, cum ar fi cuvinte comune, date personale sau
secvențe simple de caractere. Aceasta deschide ușa atacatorilor să efectueze
atacuri de forță brută sau să utilizeze tehnici de ghicit parole pentru a obține acces
neautorizat la conturile și datele utilizatorilor. Generatoarele de parole sunt
concepute pentru a contracara această problemă prin generarea de parole
complexe, greu de ghicit și greu de spart.

Utilizarea unui generator de parole oferă avantaje semnificative în ceea ce


privește securitatea sistemelor informatice. Acestea pot genera parole care
combină caractere alfabetice (majuscule și minuscule), caractere numerice și
caractere speciale, ceea ce crește complexitatea parolelor și dificultatea de a fi
ghicite sau sparte prin metode brute sau bazate pe dicționare. De asemenea,
generatoarele de parole pot genera parole de lungime variabilă, ceea ce adaugă o
altă dimensiune de securitate.

Un alt aspect important în securitatea sistemelor informatice este ciclul de


viață al parolelor. Parolele trebuie să fie actualizate în mod regulat pentru a
preveni utilizarea prelungită și pentru a se asigura că accesul neautorizat nu este
posibil în cazul în care parolele sunt compromise. Generatoarele de parole pot fi
utilizate pentru a genera parole noi la intervale regulate, înlocuind parolele
existente și asigurând astfel o protecție continuă.

Cu toate acestea, este important să se conștientizeze că generatoarele de


parole sunt doar un instrument și nu garantează în mod automat securitatea
absolută. Utilizatorii trebuie să fie educați în privința alegerii unor parole
puternice, să păstreze parolele în siguranță și să respecte practicile recomandate în
gestionarea parolelor. De asemenea, vulnerabilitățile la nivel de sistem de operare
sau aplicații pot afecta securitatea parolelor, de aceea este crucial să se asigure că
sistemul de operare și aplicațiile sunt actualizate și se beneficiază de cele mai
recente măsuri de securitate.

În concluzie, generatoarele de parole reprezintă o componentă esențială în


asigurarea securității sistemelor informatice. Prin generarea de parole puternice și
implementarea unui ghid de utilizare adecvat, acestea contribuie la protejarea
datelor și la prevenirea accesului neautorizat.
Cu toate că nu reprezintă o soluție perfectă, generatoarele de parole sunt un
instrument valoros în arsenalul de securitate cibernetică și ar trebui utilizate în
paralel cu alte măsuri și practici de securitate pentru a asigura un nivel
optim de protecție.
Acestea pot ajuta la prevenirea accesului neautorizat și la protejarea datelor
și resurselor importante. Prin generarea de parole complexe și greu de ghicit,
generatoarele de parole reduc semnificativ riscul atacurilor cibernetice și
compromiterii informațiilor sensibile.

2. Python in rezolvarea problemelor de securitate a


sistemelor informatice.

Alegerea limbajului de programare Python în raport cu problemele de securitate


a sistemelor informatice este susținută de mai mulți factori cheie. Python oferă o serie
de caracteristici și avantaje care îl fac un instrument puternic și eficient în domeniul
securității sistemelor informatice.

Iată câteva motive pentru care Python este un limbaj de programare popular și
preferat în acest context:

2.1. Simplitate și claritate: Python se remarcă prin sintaxa sa simplă și clară,


ceea ce îl face ușor de înțeles și de utilizat. Acest lucru contribuie la
dezvoltarea unui cod mai curat și mai ușor de întreținut, reducând astfel
riscul erorilor și vulnerabilităților. Simplitatea limbajului facilitează și
dezvoltarea rapidă a soluțiilor de securitate și permite programatorilor să
se concentreze mai mult asupra logicii de securitate decât pe aspectele
tehnice complexe.
2.2. Biblioteci și framework-uri bogate: Python beneficiază de o gamă largă
de biblioteci și framework-uri care facilitează implementarea soluțiilor de
securitate. De exemplu, biblioteca "cryptography" oferă funcții
criptografice puternice și suport pentru algoritmi de criptare, hashing și
autentificare. Există, de asemenea, framework-uri precum Django și
Flask, care furnizează funcționalități avansate pentru construirea și
gestionarea aplicațiilor web securizate.

2.3. Comunitate puternică și suport extins: Python are o comunitate activă și


implicată, ceea ce înseamnă că există o mulțime de resurse, tutoriale și
exemple disponibile pentru a învăța și a rezolva probleme de securitate.
De asemenea, suportul extins pentru Python se traduce prin actualizări
și îmbunătățiri continue ale limbajului, inclusiv patch-uri de securitate
pentru a aborda vulnerabilități cunoscute.

2.4. Portabilitate și interoperabilitate: Python este un limbaj portabil, ceea ce


înseamnă că codul scris în Python poate fi rulat pe diferite platforme și
sisteme de operare fără a necesita modificări semnificative. Aceasta
facilitează integrarea soluțiilor de securitate într-o varietate de medii și
infrastructuri. Python este și interoperabil, permițând integrarea cu alte
limbaje și tehnologii utilizate în domeniul securității, cum ar fi C/C++,
Java sau .NET.

2.5. Testare și debbuging facil: Python oferă suport puternic pentru testare și
debbuging, permițând programatorilor să identifice și să rezolve rapid
problemele de securitate. Există biblioteci și instrumente specializate,
cum ar fi Pytest și PDB (Python Debugger), care facilitează procesul de
testare și depanare a aplicațiilor de securitate.

Toate aceste caracteristici și avantaje fac din Python un limbaj puternic pentru
dezvoltarea soluțiilor de securitate în domeniul sistemelor informatice. Cu toate
acestea, este important să subliniem că alegerea limbajului de programare depinde și
de contextul specific al proiectului și de cerințele tehnice și de securitate.

Este necesar să se ia în considerare și alte aspecte importante în alegerea


limbajului de programare pentru securitatea sistemelor informatice, cum ar fi
performanța, scalabilitatea, suportul pentru dezvoltarea aplicațiilor critice și
comunitatea de utilizatori. De asemenea, este esențial ca programatorii să aibă o bună
înțelegere a principiilor de securitate și a celor mai bune practici în dezvoltarea
aplicațiilor sigure, independent de limbajul de programare utilizat.

În concluzie, motivarea pentru alegerea limbajului de programare Python în


raport cu problemele de securitate a sistemelor informatice este susținută de
simplitatea, claritatea și flexibilitatea limbajului, de bibliotecile și framework-urile
bogate disponibile, de comunitatea activă și suportul extins, precum și de portabilitatea
și interoperabilitatea limbajului.
3. Vulnerabilitati generale ale sistemului de operare
Windows sub care ruleaza softul de generare a parolelor.

Sistemul de operare Windows este una dintre cele mai utilizate platforme în
domeniul sistemelor informatice, oferind o gamă largă de funcționalități și
servicii. Cu toate acestea, niciun sistem de operare nu este imun la vulnerabilități
și riscuri de securitate. În acest referat, ne vom concentra asupra vulnerabilităților
generale ale sistemului de operare Windows, sub care rulează soluția software de
generare a parolelor cu algoritmul LFSR dezvoltată în limbajul Python.

Windows este un sistem de operare complex, care necesită gestionarea unui


număr mare de componente și funcționalități. Această complexitate poate duce la
apariția unor vulnerabilități care pot fi exploatate de atacatori. Unele dintre
vulnerabilitățile comune ale sistemului de operare Windows includ:

3.1. Vulnerabilități de securitate ale nucleului (Kernel): Nucleul


sistemului de operare este o componentă critică pentru funcționarea
sistemului. Vulnerabilitățile din nucleu pot permite atacatorilor să
obțină privilegii ridicate și control total asupra sistemului. Aceste
vulnerabilități pot fi exploatate prin intermediul driverelor
necorespunzătoare, a erorilor de implementare sau a deficiențelor în
politica de securitate.

3.2. Exploatarea serviciilor de rețea: Windows oferă o serie de servicii


de rețea, cum ar fi servicii de partajare a fișierelor, servicii de
imprimare și servicii de autentificare. Vulnerabilitățile în aceste
servicii pot duce la expunerea sistemului la atacuri de rețea, cum ar
fi atacurile de tipul buffer overflow sau atacurile de autentificare.

3.3. Vulnerabilități legate de software-ul de terțe părți: Sistemul de


operare Windows permite instalarea și utilizarea unei game largi de
aplicații de terțe părți. Aceste aplicații pot avea propriile lor
vulnerabilități și probleme de securitate, care pot afecta securitatea
sistemului de operare. Atacatorii pot exploata aceste vulnerabilități
pentru a obține acces neautorizat la sistem sau pentru a compromite
confidențialitatea și integritatea datelor.
3.4. Vulnerabilități ale serviciilor web: Windows suportă rularea și
gestionarea serviciilor web, cum ar fi Internet Information Services
(IIS). Vulnerabilitățile în aceste servicii pot expune aplicațiile web
la atacuri, cum ar fi injecții SQL, cross-site scripting (XSS) sau
atacuri de tipul denial-of-service (DoS).

3.5. Neglijența utilizatorilor și atacurile de social engineering: O


vulnerabilitate importantă în sistemul de operare Windows este
reprezentată de utilizatorii lor. Atacatorii pot exploata erorile
umane, cum ar fi faptul că utilizatorii folosesc parole slabe sau că
dau clic pe link-uri sau deschid fișiere infectate prin intermediul
atacurilor de social engineering.

3.6. Neactualizarea sistemului de operare: Un aspect esențial al


securității sistemului de operare Windows este menținerea acestuia
actualizat cu cele mai recente patch-uri și actualizări de securitate.
Neactualizarea sistemului expune utilizatorii la riscul de a fi
vulnerabili la atacurile cunoscute și exploatarea de către atacatori.
Este important ca utilizatorii să fie conștienți de importanța
actualizărilor și să le implementeze în mod regulat.

3.7. Phishing și malware: Utilizatorii Windows sunt frecvent expuși la


atacurile de phishing și malware. Atacatorii pot trimite e-mailuri sau
mesaje false care par legitime, dar care conțin link-uri sau fișiere
malware. Prin intermediul acestor metode, atacatorii pot accesa
sistemul, colecta informații confidențiale sau compromite
securitatea sistemului.

3.8. Vulnerabilități în interfețele de rețea: Sistemul de operare Windows


oferă suport pentru diverse interfețe de rețea, cum ar fi Ethernet,
Wi-Fi, Bluetooth etc. Aceste interfețe pot avea propriile lor
vulnerabilități, cum ar fi erori de implementare, autentificare slabă
sau criptare insuficientă. Atacatorii pot exploata aceste
vulnerabilități pentru a obține acces neautorizat la rețea sau pentru a
intercepta și compromite datele transmise.
Este important să subliniem că acestea sunt doar câteva exemple de
vulnerabilități generale ale sistemului de operare Windows și că acestea pot varia
în funcție de versiunea de Windows și de configurația sistemului.

Pentru a proteja sistemul de astfel de vulnerabilități, este crucial să se ia


măsuri adecvate de securitate, cum ar fi instalarea actualizărilor de securitate,
utilizarea soluțiilor antivirus și firewall, gestionarea atentă a accesului
utilizatorilor și promovarea educației și conștientizării în domeniul securității
cibernetice.

4. Ghid de utilizare a soluției software de generare a


parolelor cu algoritmul LFSR, dezvoltată în limbajul
Python.

4.1. Configurarea mediului de lucru:

• Asigurați-vă că aveți instalat Python pe sistemul de operare.


• Descărcați și salvați fișierul sursă al soluției software pe computer.

4.2. Instalarea dependențelor:

• Deschideți o fereastră de terminal sau un prompt de comandă.


• Navigați la directorul în care ați salvat fișierul sursă al soluției software.
• Utilizați comanda pip install tkinter pentru a instala biblioteca tkinter,
dacă nu este deja instalată.

4.3. Lansarea aplicației:

• În fereastra de terminal sau prompt de comandă, navigati in directorul


unde se afla fisierul „generator_parole” si executați comanda python
generator_parole.py sau .\generator_parole, unde "generator_parole.py"
este numele fișierului sursă al soluției software (exact ca in figura 4.3)
Fig 4.3

4.4. Interfața utilizatorului:

• Odată ce aplicația a fost lansată, veți vedea o fereastră cu opțiuni și


câmpuri de introducere a cerințelor pentru generarea parolelor.
• Completați valorile dorite în câmpurile de introducere, cum ar fi
numărul minim și maxim de caractere alfanumerice, numărul minim și
maxim de caractere numerice, etc (detalii mai jos in fig 4.4).

Fig 4.4.
4.5. Generarea parolelor:

• Apăsați butonul "Generate Passwords" pentru a genera parolele în


conformitate cu cerințele specificate.
• Parolele generate vor apărea într-un câmp dedicat din interfața
utilizatorului (detalii in fig 4.5).

Fig 4.5.

4.6. Utilizarea parolelor generate:

• Copiați parolele generate într-un loc sigur și utilizați-le conform


necesităților dvs.
• Recomandăm să nu salvați parolele generate pe computer sau într-un loc
accesibil altora.

4.7. Închiderea aplicației:

• Pentru a închide aplicația, apăsați butonul "X" din colțul din dreapta sus
al ferestrei sau utilizați opțiunea "Exit" disponibilă în meniu, dacă
există.
Aceștia sunt pașii principali pentru utilizarea soluției software de generare a
parolelor cu algoritmul LFSR dezvoltată în limbajul Python.
Asigurați-vă că respectați cerințele de securitate și utilizați parolele generate
într-un mod responsabil.

5. Codul aplicatiei.

import tkinter as tk
import random

def lfsr(seed, taps):


sr, xor = seed, 0
while True:
for t in taps:
xor += int(sr[t-1])
if xor % 2 == 0.0:
xor = 0
else:
xor = 1
sr, xor = str(xor) + sr[:-1], 0
yield sr

def generate_passwords():
min_alpha = int(min_alpha_entry.get())
max_alpha = int(max_alpha_entry.get())
min_num = int(min_num_entry.get())
max_num = int(max_num_entry.get())
min_spec = int(min_spec_entry.get())
max_spec = int(max_spec_entry.get())
total_chars = int(total_chars_entry.get())

alpha =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
nums = "0123456789"
spec = "!@#$%^&*()_+{}[]|:;<>,.?/~`"

passwords = []

# Folosim algoritmul LFSR pentru a genera parolele


taps = [1,2,4,8,16]
seed = "1010101010101010"
lfsr_gen = lfsr(seed, taps)

for i in range(50):
# Generam parola
password = ""
for j in range(total_chars):
if j < min_alpha + min_num + min_spec:
# Dacă avem cerințe minime pentru fiecare tip
de caracter,
# generăm un caracter aleatoriu pentru fiecare
tip.
if j < min_alpha:
password += random.choice(alpha)
elif j < min_alpha + min_num:
password += random.choice(nums)
else:
password += random.choice(spec)
else:
# Dacă nu am atins cerințele minime, adăugăm un
caracter aleatoriu
# dintr-un tip de caracter în funcție de o
probabilitate calculată.
prob_alpha = (max_alpha - min_alpha) /
(total_chars - j)
prob_num = (max_num - min_num) / (total_chars -
j)
prob_spec = (max_spec - min_spec) /
(total_chars - j)
r = next(lfsr_gen) # Generăm un număr aleatoriu
cu LFSR
if r < prob_alpha:
password += random.choice(alpha)
elif r < prob_alpha + prob_num:
password += random
elif r < prob_alpha + prob_num + prob_spec:
password += random.choice(spec)
else:
password += random.choice(alpha + nums +
spec)

passwords.append(password)

return passwords

# Funcția pentru afișarea parolelor


def show_passwords():
passwords = generate_passwords()
passwords_str = "\n".join(passwords)
passwords_label.config(text=passwords_str)

# Crearea interfeței grafice


root = tk.Tk()
root.title("Password Generator")

# Label-uri și Entry-uri pentru cerințele de generare a


parolelor
tk.Label(root, text="Number of alphabetical
characters:").grid(row=0, column=0)
min_alpha_entry = tk.Entry(root, width=5)
min_alpha_entry.insert(0, "4")
min_alpha_entry.grid(row=0, column=1)
max_alpha_entry = tk.Entry(root, width=5)
max_alpha_entry.insert(0, "8")
max_alpha_entry.grid(row=0, column=2)

tk.Label(root, text="Number of numeric


characters:").grid(row=1, column=0)
min_num_entry = tk.Entry(root, width=5)
min_num_entry.insert(0, "2")
min_num_entry.grid(row=1, column=1)
max_num_entry = tk.Entry(root, width=5)
max_num_entry.insert(0, "4")
max_num_entry.grid(row=1, column=2)

tk.Label(root, text="Number of special


characters:").grid(row=2, column=0)
min_spec_entry = tk.Entry(root, width=5)
min_spec_entry.insert(0, "6")
min_spec_entry.grid(row=2, column=1)
max_spec_entry = tk.Entry(root, width=5)
max_spec_entry.insert(0, "8")
max_spec_entry.grid(row=2, column=2)

tk.Label(root, text="Total number of characters:").grid(row=3,


column=0)
total_chars_entry = tk.Entry(root, width=5)
total_chars_entry.insert(0, "12")
total_chars_entry.grid(row=3, column=1)

# Butonul de generare a parolelor și label-ul pentru afișarea


lor
generate_button = tk.Button(root, text="Generate Passwords",
command=show_passwords)
generate_button.grid(row=4, column=1)
passwords_label = tk.Label(root, text="")
passwords_label.grid(row=5, column=0, columnspan=3)

root.mainloop()

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