|
Вопрос # 349/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты! Пишу программу просмотра статистики использования Интернета с сайта провайдера. Для доступа к статистике необходимо ввести логин и пароль, они совпадают с логином и паролем соединения с Интернетом.
Есть функция RasEnumEntries благодаря которой я получаю список всех соединений, с помощью RasGetEntryDialParams имя пользователя и пароль. С именем пользователя все нормально, а вот пароль получаеться как строчка состоящая из звездочек. Как можно получить нормальный пароль? Я понимаю, что это все похоже на "добывание" паролей, но бывают же случаи когда действительно такая информация испольльзуеться только для положительных целей, т.е. для уменешения количества настраиваемых опций программы и "легкости интерефеса".
Приложение: Переключить в обычный режим- function GetStatUserNamePassword(var Pass, User: String): Boolean;
- const
- MaxEntries = 100;
- var
- Fp: LongBool;
- R: Integer;
- DialParams: TRasDialParams;
- AEntryDial: string;
- BuffSize: Integer;
- Entries: Integer;
- Entry: array[1..MaxEntries] of TRasEntryName;
- X, Result_: Integer;
- AllEntries: TStrings;
- begin
- Result:= False;
- AllEntries:= TStringList.Create;
- Entry[1].dwSize:= SizeOf(TRasEntryName);
- BuffSize:= SizeOf(TRasEntryName) * MaxEntries;
- Result_:= RasEnumEntries(nil, nil, @Entry[1], BuffSize, Entries);
- if (Result_ = 0) and (Entries > 0) then
- begin
- for X:= 1 to Entries do
- begin
- AllEntries.Add(Entry[x].szEntryName);
- end;
- end;
- AEntryDial:= AllEntries.Strings[0];
- FillChar(DialParams, SizeOf(TRasDialParams), 0);
- with DialParams do
- begin
- dwSize:= Sizeof(TRasDialParams);
- StrPCopy(szEntryName, AEntryDial);
- end;
- R:= RasGetEntryDialParams(nil, DialParams, Fp);
- Pass:= DialParams.szPassword;
- User:= DialParams.szUserName;
- if R = 0 then
- Result:= True;
- AllEntries.Free;
- end;
-
- procedure TfmMain.bbGetStatClick(Sender: TObject);
- var
- Pass, User: String;
- begin
- if GetStatUserNamePassword(Pass, User) then
-
-
- ShowMessage(User + ' ; ' + Pass);
- end;
 |
Вопрос задал: Spawn (статус: 1-ый класс)
Вопрос отправлен: 25 февраля 2007, 07:58
Состояние вопроса: открыт, ответов: 4.
|
Ответ #1. Отвечает эксперт: Роман
Здравствуйте, Spawn!Тут наверно проблема в том что сама винда скрывает таким образом всё что связано с паролями.Поетому надо сделать DLL'ку с хуком (SetWindowsHookEx) и в ней перехватывать мессаги (если есть нужная мессага, то смотрим пароль).
 |
Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 25 февраля 2007, 08:45
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Вадим К
Microsoft делает всё возможное, что бы "злосные хакеры" не могли так просто получить пароли. В ХР добыть их сложно, а в Vista - с включеным UAC - практически нельзя (нельзя обычными методами.)
Поэтому, наиболее корректным решением будет ввод пароля вручную.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 25 февраля 2007, 18:33
Оценка за ответ: 4
Комментарий к оценке: Спасибо за внимание к вопросу. Но решение уже найдено, и исправно работает, выдает пароли DialUp'а, как семочки.
|
Ответ #3. Отвечает эксперт: Шарайчук Сергей Олександрович
На етом сайте в розделе Исходники есть програма UnPass, она даёот возможность видеть символы под *, Там есть иходник етой програмы, он тебе поможет!!!!
 |
Ответ отправил: Шарайчук Сергей Олександрович (статус: 2-ой класс)
Время отправки: 26 февраля 2007, 20:57
Оценка за ответ: 3
Комментарий к оценке: Это абсолютно не то!
|
Ответ #4. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Spawn!
Там никакой пароль и не должен возвращаться - если бы там возвращался пароль в чистом виде, это была бы такая дыра в защите системы - просто дырища..
Вместо пароля там передается ручка (handle) на пароль, эту ручку можно использовать в функциях RasSetEntryDialParams и RasDial.
И не надо нападать на Микрософт - это объективно правильная реализация.
 |
Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 27 февраля 2007, 10:35
Оценка за ответ: 4
Комментарий к оценке: Спасибо! Но Microsoft Windows все равно потвердила свою "дырявость". Решение на свой вопрос я уже нашел, и оно исправно работает. Немного доработаные функции из модуля RAS API выдают нормальный пароль... ;)
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 25 февраля 2007, 11:30; участников в обсуждении: 2.
|
Роман (статус: 5-ый класс), 25 февраля 2007, 08:51 [#1]:
PS:если будет надо напиши roman_si@list.ru и я вышлю статейку с исходником dll-ки.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|