Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ВВОД ПАРОЛЯ СКРЫТ ЗВЕЗДОЧКАМИ 
:(
    Опции темы
Guest
Дата 16.7.2005, 13:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











При запуске программы появляется окно для ввода пароля. При его вводе в этом окошке набираемый текст закрывается звездочками. Как сделать?
  Вверх
Spawn™Production®
Дата 16.7.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: нет
Всего: 12




Ну думаю текстовый бокс ты в состоянии расположить на форме... У тектового бокса в свойстве PasswordChar поставь *.
Короче говоря, символ, который стоит в этом свойстве будет отображаться, как маска, скрывающая то, что вводит пользователь.


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Guest
Дата 16.7.2005, 18:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а в inputbox можно сделать звездочки?
или только в textbox ?

Если только в textbox то как сделать, что бы загрузилась form1 ввел пароль если паоль праильный form1 закрывается и открывается form2 (сама программа). Если пароль не верный в form1 то в программу не пускает. Выход.
  Вверх
korob2001
Дата 16.7.2005, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Ну так алгоритм ты сам только что рассказал, что мешает его реализовать? Воспользуйся условиями If(...) Then .... Else..., ну и соответственно либо выгружай форму, либо выгружай и загружай вторую форму.
Код

Dim strPass As String
strPass = "d1fg25"
If txtPass.Text <> strPass Then
   ' Пароль не совпал, выгружаем форму
Else
   ' Пароль совпал, выгружаем форму с запросом пароля
   ' и подгружаем вторую форму.
End If

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Spawn™Production®
Дата 16.7.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: нет
Всего: 12



Так, для Login формы есть соответствующий шаблон...
Для inputbox'а нельзя, разве только ты сам его сделаешь, т.е. будет не inputbox, а твоя форма его заменяющая.


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Guest
Дата 16.7.2005, 19:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











загрузить, выгрузить форму как?
Login форма где?
  Вверх
Spawn™Production®
Дата 16.7.2005, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: нет
Всего: 12



Цитата(Guest @ 16.7.2005, 20:13)
загрузить, выгрузить форму как?

блин, почитай книжку какую-нибудь...
Код

Load Form1
Unload Form1


Цитата(Guest @ 16.7.2005, 20:13)
Login форма где?

правой кнопкой на окне проектов, Добавить - Форма - в появившемся окне выбираем Log in Dialog


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
bom
Дата 16.7.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Spawn™Production®
Цитата
Для inputbox'а нельзя

Если очень хочется, то можно:
Код

'Modul1.bas
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetTimer& Lib "user32" (ByVal hwnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal lpTimerFunc&)
Private Declare Function KillTimer& Lib "user32" (ByVal hwnd&, ByVal nIDEvent&)

Private Sub TimerProc(ByVal hwnd&, ByVal uMsg&, ByVal idEvent&, ByVal dwTime&)
    Dim myHwnd As Long
    myHwnd = FindWindowEx(FindWindow("#32770", App.Title), 0, "Edit", "")
    Call SendMessage(myHwnd, &HCC, 42, 0)
    KillTimer hwnd, idEvent
End Sub

Sub main()
SetTimer 0, &H5000&, 10, AddressOf TimerProc
Dim strPass As String, strInpt As String
strPass = "d1fg25"
strInpt = InputBox("Введите пароль доступа")
If StrPtr(strInpt) <> 0 Then
    If strInpt <> strPass Then
           MsgBox "Пароль не совпал, выгружаем форму"
        Else
           MsgBox "Пароль совпал, выгружаем форму с запросом пароля " & _
           "и подгружаем вторую форму."
    End If
End If
End Sub

PM MAIL   Вверх
Spawn™Production®
Дата 16.7.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: нет
Всего: 12



bom, хех, уж лучше я под енто дело форму забадяжу, имхо сразу возможностей больше.


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
bom
Дата 16.7.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Инпутбокс и вправду выглядит не очень smile

Кстати, Spawn™Production®, спасибо за линк на API-Guide, только что скачал, классная весчь.

Это сообщение отредактировал(а) bom - 16.7.2005, 22:12
PM MAIL   Вверх
ArtNeoX
Дата 17.7.2005, 11:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Самое простое решение:

в свойствах Text1 - PasswordChar поставить *

Для формы 1

Private Sub Command1_Click()
If Text1 = "пароль" Then Form2.Show Else End
End Sub

----------------------------------------------------
Для формы 2

Private Sub Form_Load()
Unload Form1
End Sub

  Вверх
xkodex
Дата 17.7.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 30.4.2005

Репутация: нет
Всего: нет



Да форма проще и удобнее. И возможнностей побольше будет...
PM MAIL WWW   Вверх
assassin
Дата 24.7.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.7.2005

Репутация: нет
Всего: нет



А это надежная "система защиты", если ее так можно назвать ? Можно будет как-то узнать пасс в if-условии ? Кроме как из отладчика ? smile
PM MAIL   Вверх
Voldemar2004
Дата 24.7.2005, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(assassin @ 24.7.2005, 11:17)
А это надежная "система защиты", если ее так можно назвать ?
Весьма сомневаюсь.

Цитата(ArtNeoX @ 17.7.2005, 11:28)
Самое простое решение: в свойствах Text1 - PasswordChar поставить *


Код

Private Sub Command1_Click()
If Text1 = "пароль" Then Form2.Show Else End
End Sub


Даже более сложные способы защиты взламываются очень быстро, про это вообще промолчу. В общем кто знаком с реверс-инжинирингом для того это не проблема.

Надо применять алгоритмы шифрования (симметричные/несимметричные), впрочем открыть справочник по криптографии и на основе какого-нибудь алгоритма (табличный алгоритм с открытым ключом например, как самый простой) написать подпрограмму на VB, шифрующую по такому принципу: например ввел слово "пароль" получил "63&Da830)~e", предположим, взломщик вычислил "63&Da830)~e", но без второго ключа, зная даже "63&Da830)~e" и формулу он сделать ничего не сможет. Если пишешь для своей организации, где все свои, но в она все-таки просочилась в Сеть вряд ли крэкеры будут для нее что-то писать, уж очень специфичный задачи на VB.

А то, что вводится в TextBox.Passwordchar = "*" это ИМХО самый последний шаг, интерфейс. И защищать программу стоимостью > 100$ никто по такому принципу (да еще в VB) не будет. Я вот мучался с Фотошопом 8 в результате сделал дедовским способом - удалением/установкой заново с помощью Total Uninstaller (вот такие программы нужны, как воздух smile ).


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
bom
Дата 24.7.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Хранить незащищенный ключ в теле программы - неправильно, это все понимают, но и другие способы имхо не особо надежны - в частности предлагаемый Voldemar2004 с шифрованием. Главная уязвимость это условие If Text1 = "пароль" Then Form2.Show Else End. Дизассемблировав программу, его можно увидеть как на ладони в виде Asm кода наподобие:
Код

push 004011EB
Call 0040115A
xor byte ptr [eax], a1
add byte ptr [eax], a1

Извините в Асме не разбираюсь smile
После несложных манипуляций c Asm кодом более опытным чем я кодером, наше условие будет иметь вид:
If Text1 = "пароль" Then Form2.Show Else Form2.Show, т.е. после сохранения изменений, наша программа будет считать правильным паролем любую строку и даже пустую.

Как с этим бороться - не знаю, возможно надо шифровать сам последующий после проверки код программы, но как это реализовать практически?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.