Dane są kluczowym zasobem w dzisiejszym cyfrowym świecie. Każdego roku ponad osiem milionów ludzi pada ofiarą hakerów, a każdego dnia ma miejsce ponad 2200 cyberataków. Przy tak alarmującym wskaźniku cyberprzestępczości priorytetem staje się stosowanie najlepszych praktyk w celu ochrony przed hakerami. Jednym z najważniejszych aspektów każdego konta jest jego hasło.
Jeśli haker złamie Twoje hasło, może uzyskać dostęp do Twoich danych osobowych, a nawet konta bankowego, w ciągu kilku minut. Chociaż brzmi to przerażająco, możesz dowiedzieć się, jak zabezpieczyć swoje hasła, korzystając z najlepszych praktyk, budując własny program w Pythonie, aby sprawdzić jego siłę.
Różne zasady ustawiania silnych haseł
Niektóre silne zasady dotyczące haseł, które możesz rozważyć, to:
- Hasło powinno mieć co najmniej 12 znaków. Im dłuższe hasło, tym mniejsza szansa na złamanie go przez atak siłowy.
- Hasło powinno zawierać kombinację małych liter, wielkich liter, cyfr i znaków specjalnych.
- Unikaj powtarzających się znaków w haśle.
- Nie powinno zawierać danych osobowych, takich jak imiona i nazwiska, numery telefonów ani niczego, co ktoś może łatwo odgadnąć.
- Nie powinno to być popularne słowo ze słownika, chociaż można używać słów w dłuższych frazach haseł.
- Hasło nie powinno być takie samo dla wielu kont. Możesz skonfigurować menedżera haseł do automatycznego uzupełniania różnych haseł do różnych witryn bez zapamiętywania każdego z nich.
Istnieją różne sposoby stworzyć niezniszczalne hasło, które możesz zapamiętać. Niektóre z nich używają rymowanek, cytatów z filmów, żargonu branżowego i nie tylko.
Jak sprawdzić siłę hasła za pomocą Pythona
Możesz zbudować program do testowania siły hasła, sprawdzając powyższe cechy. Do tej kompilacji potrzebne będą dwa moduły: strunowy I kolekcje.
Możesz także skorzystać z tzw przejść dalej moduł do ukrywania hasła podczas wprowadzania go przez użytkownika. Pomaga to chronić hasło, gdy trzeba je wpisać publicznie. Aby zainstalować getpass w swoim lokalnym środowisku, otwórz terminal i wpisz:
pypeć zainstalować zdobądź przepustkę4
Możesz użyć klasy String, aby sprawdzić, czy znak jest literą, cyfrą lub symbolem. Możesz skorzystać z kolekcji, aby sprawdzić, czy w haśle występują znaki, które się powtarzają.
Użyj słowa kluczowego def, aby zdefiniować funkcję o nazwie check_password_strength() i podaj hasło, które otrzymasz jako parametr do niego.
Zainicjuj sześć zmiennych: niższa_liczba_alfa, górna_liczba_alfa, liczba_liczba, specjalna_liczba_znaków, długość, wspólny do zera. Sprawdzą one obecność małych liter, wielkich liter, cyfr, znaków specjalnych, długości, powtórzeń znaków w haśle.
Przekaż hasło otrzymane od użytkownika do lista() funkcję, aby przekonwertować ją na listę znaków. Używając pętli for, wykonaj iterację po każdym znaku z listy. Użyj instrukcji if-else, aby sprawdzić, czy znak jest małą literą, dużą literą, cyfrą lub znakiem specjalnym i odpowiednio zaktualizuj liczbę.
Możesz założyć, że cokolwiek innego niż alfabet lub liczba jest znakiem specjalnym. Aby uzyskać więcej ograniczeń, możesz przechowywać znaki specjalne jako ciąg i sprawdzać, czy występuje w nim znak hasła. Ponadto niektóre witryny umożliwiają stosowanie białych znaków w haśle. Możesz ustawić inną zmienną i zwiększyć ją lub uwzględnić w samej liczbie znaków specjalnych.
import strunowy
import kolekcjepoksprawdź_siłę_hasła(hasło):
dolna_liczba_alfa = górna_liczba_alfa = liczba_liczba = specjalna_liczba_znaków = długość = wspólna = 0
Do znak w lista(hasło):
Jeślizwęglać w string.ascii_lowercase:
dolna_liczba_alfa += 1
Elif zwęglać w string.ascii_uppercase:
górna_liczba_alfa += 1
Elif zwęglać w ciągu.cyfry:
liczba_liczba += 1
w przeciwnym razie:
specjalna_liczba_znaków += 1
Będziesz potrzebować listy haseł lub bazy danych, aby sprawdzić, czy hasło użytkownika jest wspólne. Możesz pobrać listę miliona najpopularniejszych haseł z Repozytorium Common Credential GitHub firmy SecLists.
Zapisz plik tekstowy jako lista_wspólnych_hasł.txt. Użyj instrukcji with, aby wykonać obsługę wyjątków i otworzyć plik haseł w trybie do odczytu. Użyj Czytać() funkcja, aby pobrać zawartość obecną w pliku i zapisać ją w zmiennej o nazwie content.
Jeśli hasła wprowadzonego przez użytkownika nie ma na liście wspólnych haseł, zwiększ wartość wspólnej zmiennej o jeden.
zotwarty(„lista_wspólnych_hasł.txt”, 'R') Jakplik:
zawartość = plik.odczyt()
jeśli hasła nie ma w treści:
wspólne += 1
Aby sprawdzić długość hasła, po prostu przekaż je do len() funkcję i sprawdź, czy jest większa lub równa dwunastu. Jeśli tak, zwiększ wartość zmiennej długości.
JeśliLen(hasło) >= 12:
długość += 1
Aby sprawdzić powtarzalność znaków w haśle, użyj podklasy Counter z Collections. Licznik to nieuporządkowana kolekcja par klucz-wartość, gdzie kluczem jest sam element, a wartością liczba elementów.
Użyj metody rozumienia listy, aby utworzyć listę powtarzających się znaków ze słownika, który otrzymujesz za pomocą kolekcji. Przejrzyj słownik i sprawdź, czy liczba znaków jest większa niż jeden. Jeśli liczba jest większa, dołącz ją do listy i zapisz w powtórzeniu.
countOfWords = kolekcje. Licznik (hasło)
powtórzone = [i dla i w liczbie słów, jeśli liczba słów [i] > 1]
Teraz, gdy masz już wartości poszczególnych cech, zainicjuj zmienną o nazwie siła na zero. Jak sama nazwa wskazuje, tę zmienną zobaczysz, aby sprawdzić siłę hasła. System punktacji wynosi siedem, jeden punkt za każde włączenie znaku i cechy silnego hasła.
Sprawdź, czy liczba małych liter alfabetu, wielkich liter, cyfr, znaków specjalnych jest większa lub równa jeden i zwiększ siłę o jeden dla każdej obecności. Podobnie sprawdź, czy długość i zmienna wspólna są równe jeden i czy długość powtarzanego znaku jest równa zeru. Jeśli to prawda, zwiększ wartość zmiennej siły.
siła = 0
jeśli dolna_liczba_alfa >= 1:
siła += 1jeśli górna_liczba_alfa >= 1:
siła += 1jeśli liczba_liczba >= 1:
siła += 1jeśli special_char_count >= 1:
siła += 1jeśli długość == 1:
siła += 1jeśli wspólny == 1:
siła += 1
JeśliLen(powtarzający się)== 0:
siła += 1
Użyj ciągu wielowierszowego (trzy cudzysłowy), aby wyświetlić wiele wierszy tekstu w pojedynczej instrukcji print. Użyj dosłownej interpolacji Sing lub f-stringów lub aby wyświetlić liczbę cech. Możesz to osiągnąć pisząc F na początku łańcucha w instrukcji print i umieść zmienne w nawiasach klamrowych. Używasz interpolacji łańcucha, ponieważ treść wewnątrz instrukcji print jest łańcuchem, ale wartością zmiennych jest liczba całkowita.
wydrukować(F""„Twoje hasło ma:-
{lower_alpha_count} małych liter
{upper_alpha_count} wielkich liter
{number_count} cyfr
{special_char_count} znaków specjalnych
{długość} długość
{wspólny} wspólny
{powtórzony} powtórzony
„Wynik hasła: {siła}/7”"")
Na koniec użyj instrukcji input, aby otrzymać hasło od użytkownika i przekazać je do sprawdź_siłę_hasła funkcjonować. Na podstawie siły hasła program wyświetli ocenę wraz z liczbą cech obecnych w haśle.
hasło = wejście ("Podaj hasło: ")
check_password_strength (hasło)
Dane wyjściowe sprawdzania siły hasła
Po wprowadzeniu silnego hasła w oparciu o wymienione cechy, program w Pythonie wyświetla siłę 7/7:
Po wprowadzeniu słabego i popularnego hasła program w Pythonie wyświetla siłę jako 1/7:
Hasła i zabezpieczenia
Chociaż możesz ustawić najsilniejsze hasło, istnieją inne sposoby, w jakie haker może włamać się do Twojego systemu. 95% cyberataków jest wynikiem błędu ludzkiego. Jedną z najczęstszych metod stosowanych przez hakerów jest socjotechnika. Haker może wysyłać Ci fałszywe łącza do serwisów społecznościowych lub witryn handlu elektronicznego, które wyglądają na legalne, ale jeśli z nich skorzystasz, złamie Twoje hasło.
Aby chronić się przed tymi technikami, otwieraj tylko linki z zaufanego źródła i bezpiecznie wprowadzaj lub przechowuj ważne informacje.