art1








Hasła





Hasła

Czasami robisz jakieś programy, gdzie trzeba wprowadzić hasło dostępu. Najprościej
jest wtedy nanieść TextBox'a i nadać właściwości PasswordChar znak *
(gwiazdka). Niestety Windows jest na tyle wspaniały, że jest to gówno a nie
zabezpieczenie. W internecie krąży kupę programów, które bez problemu wydobywają
hasło z takiego TextBox'a. W tym artykule mam zamiar pokazać Tobie, jak łatwo można
zlikwidować tą lukę i rzaden program nie będzie w stanie wydobyć hasła z takiego
zagwiastkowanego TextBox'a.

Na początek nieco podstaw: pewnie wydaje się Tobie, że jest to zbyteczne, bo nikt
nie odchodzi od kompa, kiedy wpisał hasło i nie kliknął o pole OK, aby móc szybko
włączyć program do przechwytywania hasła. Być może, ale zrób to co mówię:
1) Uruchom program Outlock Express
2) Z menu Narzędzia wybierz opcję Konta
3) Kliknij na zakładkę Poczta
4) Kliknij dwukrotnie w konto, którego chcesz przechwycić hasło
5) Pojawi się okienko z informacjami o koncie, kliknij na zakładkę Serwery
6) Widzisz zagwiazdkowane pole Hasło teraz przechwycimy z niego
hasło:
7) Uruchom program Revelation.exe (jest dołączony do VBMagazine)
8) Kliknij na pasku zadań na Outlocka a potem na SkandBoy's Revelation (tak, aby na
ekranie były pokazane te 2 programy).
9) W Programie SnadBoy's Revelation jest celowinik, przeciągnij go na pole hasło w
Outlocku.
10) Fajnie, przechwyciliśmy hasło !!!

OK, to nie jest kurs przechwytywania haseł, tylko poradnik, jak zrobić takie pole
hasło, aby ten program nie był w stanie przechwycić hasła. Najpierw Tworzymy nowy
projekt. Potem nanosimy na niego TextBox'a. A potem wpisujemy następujący kod:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
'Blokada na klawisz delete.
'Jeśli byś chciał dodać obsługę tego klawisza
'to by to tylko zagmatwało kod
If KeyCode = 46 Then
KeyCode = 0
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then
If Len(Text1.Tag) > 0 Then Text1.Tag = Left$(Text1.Tag, Len(Text1.Tag) - 1)
If Len(Text1.Text) > 0 Then Text1.Text = Left$(Text1.Text, Len(Text1.Text) - 1)
Text1.SelStart = Len(Text1.Text)
Text1.SelLength = 0
Exit Sub
End If

Text1.Tag = Text1.Tag + Chr$(KeyAscii)
KeyAscii = 0
Text1.Text = Text1.Text + "*"
Text1.SelStart = Len(Text1.Text)
Text1.SelLength = 0
End Sub

Te 2 procedury powodją, że jak się wpisuje jakieś znaki, to są pokazywane
gwiazdki. Prawdziwe hasło jest przechowywane w zmiennej Tag (Text1.Tag). Możemy dodac
sobie przycisk np. Command1 i w kodzie napisać: Msgbox Text1.Tag
Jak widać, program jest dośc inteligentny :-) Teraz spróbuj zhackować takie
zagwiazdkowane pole. I co i nic !!! SnadBoys Revelation nie jest w stanie przechwycić
hasła !!! A teraz w ramach uatrakcyjnienia programu w oknie properties zmieńmy kilka
właściwości TextBox'a na:
PasswordChar=*
Locked=True
Ta druga cecha spowoduje, że nie pojawi się rozwijane menu po kliknięciu prawym
przyciskiem myszy (z opcjami Wytnij, Kopiuj, Wklej) a ta pierwsza cecha jest dla zmyłki.
Uruchommy teraz nasz program. Działa normalnie jak przedtem. A teraz spróbujmy
przechwycić hasło. Dało się to bez problemu, ale zamiast prawdziwego hasła program
SnadBoy's Revelation pokazał gwiazdki !!! Myślę, że jest to dość ciekawe
zabezpieczenie, które spowoduje, że nasze programy będą bezpieczniejsze dla hackerów.
Jak widać, jestem mądrzejszy od tego jełopa, co pisał Outlook Express :-)

Jelcyn






Wyszukiwarka