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
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 :-)