| 
| 
 | Вопрос # 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-ки. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |