powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение паролей для Ras соединений
5 сообщений из 5, страница 1 из 1
Получение паролей для Ras соединений
    #34094437
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел прикольный код, который позволяет получить состояние а именно имя и пароль для Ras соединения. Очень удобный и компактный код.
Самое интересное, что про такую API функцию как RasGetCredentials, никто не упомянул на форуме Visual Basic'a, поэтому скидываю пример, авось кому пригодится
Значит подключаем компонет MS Win common control 6 и вешаем на форму Listview
КОд формы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim rdp As VBRasDialParams

Dim b() As Byte
Dim rtn As Long


Dim sArray() As String
Dim iCtr As Integer
DUN_Services sArray
For iCtr =  0  To UBound(sArray)                                  
rtn = VBRasGetEntryDialParams(b, vbNullString, sArray(iCtr))
   Call BytesToVBRasDialParams(b, rdp)
     Set llist = ListView1.ListItems.Add(, , rdp.EntryName)
llist.ListSubItems.Add , , rdp.UserName
llist.ListSubItems.Add , , rdp.Password
Next
End Sub
Ну и модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
Private Declare Function RasGetCredentials Lib "rasapi32.dll" Alias "RasGetCredentialsA" _
 (ByVal lpcstr As String, ByVal lpcstr As String, ByRef TLPRASCREDENTIALSA As RASCREDENTIALS) _
 As Long
Private Type RASCREDENTIALS
    dwSize As Long
    dwMask As Long
    szUserName As String
    szPassword As String
    szDomain As String
End Type
Public Type RASENTRYNAME95
    dwSize As Long
    szEntryname( 256 ) As Byte
End Type

Public Declare Function RasEnumEntriesA Lib "rasapi32.dll" _
    (ByVal reserved As String, ByVal lpszPhonebook As String, _
    lprasentryname As Any, lpcb As Long, lpcEntries As Long) _
    As Long




Public Declare Function RasGetEntryDialParams _
      Lib "rasapi32.dll" Alias "RasGetEntryDialParamsA" _
        (ByVal lpszPhonebook As String, _
        lpRasDialParams As Any, _
        blnPasswordRetrieved As Long) As Long


Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (Destination As Any, Source As Any, ByVal Length As Long)


Public Type VBRasDialParams
    EntryName As String
    PhoneNumber As String
    CallbackNumber As String
    UserName As String
    Password As String
    Domain As String
    SubEntryIndex As Long
    RasDialFunc2CallbackId As Long
End Type



Function VBRasSetEntryDialParams _
              (strPhonebook As String, bytesIn() As Byte, _
               blnRemovePassword As Boolean) As Long
   
End Function
Sub CopyByteToTrimmedString(strToCopyTo As String, _
                              bPos As Byte, lngMaxLen As Long)
   Dim strTemp As String, lngLen As Long
   strTemp = String(lngMaxLen +  1 ,  0 )
   CopyMemory ByVal strTemp, bPos, lngMaxLen
   lngLen = InStr(strTemp, Chr$( 0 )) -  1 
   strToCopyTo = Left$(strTemp, lngLen)
End Sub

Sub CopyStringToByte(bPos As Byte, _
                        strToCopy As String, lngMaxLen As Long)
   Dim lngLen As Long
   lngLen = Len(strToCopy)
   If lngLen =  0  Then
      Exit Sub
   ElseIf lngLen > lngMaxLen Then
      lngLen = lngMaxLen
   End If
   CopyMemory bPos, ByVal strToCopy, lngLen
End Sub
Function BytesToVBRasDialParams(bytesIn() As Byte, _
            udtVBRasDialParamsOUT As VBRasDialParams) As Boolean
   
   Dim iPos As Long, lngLen As Long
   Dim dwSize As Long
   On Error GoTo badBytes
   
   CopyMemory dwSize, bytesIn( 0 ),  4 
   
   If dwSize =  816 & Then
      lngLen =  21 &
   ElseIf dwSize =  1060 & Or dwSize =  1052 & Then
      lngLen =  257 &
   Else
      Exit Function
   End If
   iPos =  4 
   With udtVBRasDialParamsOUT
      CopyByteToTrimmedString .EntryName, bytesIn(iPos), lngLen
      iPos = iPos + lngLen: lngLen =  129 
      CopyByteToTrimmedString .PhoneNumber, bytesIn(iPos), lngLen
      iPos = iPos + lngLen: lngLen =  129 
      CopyByteToTrimmedString .CallbackNumber, bytesIn(iPos), lngLen
      iPos = iPos + lngLen: lngLen =  257 
      CopyByteToTrimmedString .UserName, bytesIn(iPos), lngLen
      iPos = iPos + lngLen: lngLen =  257 
      CopyByteToTrimmedString .Password, bytesIn(iPos), lngLen
      iPos = iPos + lngLen: lngLen =  16 
      CopyByteToTrimmedString .Domain, bytesIn(iPos), lngLen
      
      If dwSize >  1052 & Then
         CopyMemory .SubEntryIndex, bytesIn( 1052 ),  4 &
         CopyMemory .RasDialFunc2CallbackId, bytesIn( 1056 ),  4 &
      End If
   End With
   BytesToVBRasDialParams = True
   Exit Function
badBytes:
   BytesToVBRasDialParams = False
End Function



Public Sub DUN_Services(DUN_Array() As String)
    Dim s As Long, ln As Long, conname As String, i As Long
    Dim r( 255 ) As RASENTRYNAME95
    r( 0 ).dwSize =  264 
    s =  256  * r( 0 ).dwSize
    Call RasEnumEntriesA(vbNullString, vbNullString, r( 0 ), s, ln)
    ln = ln -  1 
    ReDim DUN_Array(ln)
    For i =  0  To ln
        conname = StrConv(r(i).szEntryname(), vbUnicode)
        
        DUN_Array(i) = Left$(conname, InStr(conname, _
          vbNullChar) -  1 )
    Next i
End Sub
Function VBRasGetEntryDialParams _
              (bytesOut() As Byte, _
          strPhonebook As String, strEntryName As String, _
               Optional blnPasswordRetrieved As Boolean) As Long
 
   Dim rtn As Long
     Dim blnPsswrd As Long
   Dim bLens As Variant
   Dim lngLen As Long, i As Long
   bLens = Array( 1060 &,  1052 &,  816 &)
   For i =  0  To  2 
      lngLen = bLens(i)
      ReDim bytesOut(lngLen -  1 )
      CopyMemory bytesOut( 0 ), lngLen,  4 
      If lngLen =  816 & Then
         CopyStringToByte bytesOut( 4 ), strEntryName,  20 
      Else
         CopyStringToByte bytesOut( 4 ), strEntryName,  256 
      End If
      rtn = RasGetEntryDialParams(strPhonebook, bytesOut( 0 ), blnPsswrd)
    
  
      If rtn =  0  Then Exit For
   Next i
   
   blnPasswordRetrieved = blnPsswrd
   VBRasGetEntryDialParams = rtn
End Function
Только имеется небольшая проблема- пароль шифруется звездочками, поэтому кто хочет открыть его, придется уж немнооого переделать данный проект.
...
Рейтинг: 0 / 0
Получение паролей для Ras соединений
    #34094547
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое Ras соединение
...
Рейтинг: 0 / 0
Получение паролей для Ras соединений
    #34094688
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оооо как запущено! я то думал что тема будет актуальна.
Итак Ras это Remote Access Service, что означает - удаленный доступ.
От обычных вариантов с использованием мостов и маршрутизаторов удаленный доступ отличается тем, что одной из взаимодействующих сторон является не локальная сеть, а отдельный компьютер без сетевого адаптера. Кроме того, удаленный доступ обычно использует низкоскоростные соединения по коммутируемым телефонным аналоговым сетям.
Сервис RAS позволяет довольно большому числу удаленных пользователей (до 256) одновременно подключаться к одному серверу Windows NT и по протоколам IPX и TCP/IP получать доступ к ресурсам локальной сети. Клиентская часть программного обеспечения RAS поставляется вместе со всеми операционными системами корпорации Microsoft бесплатно и позволяет клиентским станциям подсоединяться к сети в качестве удаленных узлов.
Проще говоря Ras используется для подключения интернета(к примеру VPN) или DialUp соеденения. Если при введении имени и пароля, поставить галку - сохранять их, то можно спокойно воспользоватся той функцией которую я привел в самом начале данной темы.
...
Рейтинг: 0 / 0
Получение паролей для Ras соединений
    #34094696
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, кто не может поянть что это и как работает вот ссылка

http://www.admin.dpelektro.dp.ua/lan/ras.html
...
Рейтинг: 0 / 0
Получение паролей для Ras соединений
    #34094813
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо сейчас попробую
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение паролей для Ras соединений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]