Тема: VPN & Delphi
Показать сообщение отдельно

  #3  
Старый 17.10.2007, 19:03
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
С нами: 10370602

Репутация: 472
По умолчанию

Психически неустойчивым дельфи-программистам не смотреть!
/ASM
Код:
.386 
.model flat, stdcall 
option casemap :none 
include \masm32\include\windows.inc 
include \masm32\include\user32.inc 
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib
include \masm32\macros\strings.mac
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
include \masm32\include\rasapi32.inc
includelib \masm32\lib\rasapi32.lib
include \masm32\include\msvcrt.inc
includelib \masm32\lib\msvcrt.lib

_RASENTRYA STRUCT
        dwSize DWORD ?
        dwfOptions DWORD ?
        dwCountryID DWORD ?
        dwCountryCode DWORD ?
        szAreaCode db RAS_MaxAreaCode + 1 dup(?)
        szLocalPhoneNumber db RAS_MaxPhoneNumber + 1 dup(?)
        dwAlternateOffset DWORD ?
        ipaddr RASIPADDR <>
        ipaddrDns RASIPADDR <>
        ipaddrDnsAlt RASIPADDR <>
        ipaddrWins RASIPADDR <>
        ipaddrWinsAlt RASIPADDR <>
        dwFrameSize DWORD ?
        dwfNetProtocols DWORD ?
        dwFramingProtocol DWORD ?
        szScript db MAX_PATH dup(?)
        szAutodialDll db MAX_PATH dup(?)
        szAutodialFunc db MAX_PATH dup(?)
        szDeviceType db RAS_MaxDeviceType + 1 dup(?)
        szDeviceName db RAS_MaxDeviceName + 1 dup(?)
        szX25PadType db RAS_MaxPadType + 1 dup(?)
        szX25Address db RAS_MaxX25Address + 1 dup(?)
        szX25Facilities db RAS_MaxFacilities + 1 dup(?)
        szX25UserData db RAS_MaxUserData + 1 dup(?)
        dwChannels DWORD ?
        dwReserved1 DWORD ?
        dwReserved2 DWORD ?
        dwSubEntries DWORD ?
        dwDialMode DWORD ?
        dwDialExtraPercent DWORD ?
        dwDialExtraSampleSeconds DWORD ?
        dwHangUpExtraPercent DWORD ?
        dwHangUpExtraSampleSeconds DWORD ?
        dwIdleDisconnectSeconds DWORD ?
        dwType DWORD ?
        dwEncryptionType DWORD ?
        dwCustomAuthKey DWORD ?
        guidId GUID <>
        szCustomDialDll db MAX_PATH dup(?)
        dwVpnStrategy DWORD ?
        dwfOptions2 DWORD ?
        dwfOptions3 DWORD ?
        szDnsSuffix db 256 dup(?)
        dwTcpWindowSize DWORD ?
        szPrerequisitePbk db MAX_PATH dup(?)
        szPrerequisiteEntry db RAS_MaxEntryName + 1 dup(?)
        dwRedialCount DWORD ?
        dwRedialPause DWORD ?
_RASENTRYA ENDS
RASCREDENTIALS STRUCT
   dwSize DWORD ?
   dwMask DWORD ?
   szUserName db UNLEN + 1 dup(?)
   szPassword db PWLEN + 1 dup(?)
   szDomain db DNLEN + 1 dup(?)
RASCREDENTIALS ENDS

.code
CreatVPN proc User:dword,Pass:dword
     local re:_RASENTRYA
     local crd:RASCREDENTIALS
      invoke memset,addr re,0,00000B44h
      mov re.dwSize,00000B44h
      mov re.dwfOptions,3c000710h
      mov re.dwCountryID,0
      mov re.dwCountryCode,0
      invoke lstrcpy,addr re.szLocalPhoneNumber,$CTA0("127.0.0.1")
      mov re.dwAlternateOffset,0
      mov re.dwFrameSize,0
      mov re.dwfNetProtocols,4
      mov re.dwFramingProtocol,1
      invoke lstrcpy,addr re.szDeviceType,$CTA0("vpn")
      invoke lstrcpy,addr re.szDeviceName,$CTA0("WAN Miniport (L2TP)")
      mov re.dwIdleDisconnectSeconds,00000000h
      mov re.dwType,00020000h
      mov re.dwEncryptionType,00030000h
      mov re.dwfOptions2,01040000h
      mov re.dwRedialPause,00000300h
      mov re.dwVpnStrategy,00020000h
      invoke RasSetEntryProperties,0,$CTA0("internet"),addr re,00000B44h,0,0
       .if eax == 0
          invoke lstrcpy,addr crd.szUserName,User
          invoke lstrcpy,addr crd.szPassword,Pass
          mov crd.dwMask,3
          mov crd.dwSize,sizeof RASCREDENTIALS + 2
          invoke RasSetCredentials,0,$CTA0("internet"),addr crd,0
           .if eax == 0
           .endif
       .endif
      ret
CreatVPN endp
start:
       invoke CreatVPN,$CTA0("username"),$CTA0("password")
       invoke ExitProcess,0
end start
 
Ответить с цитированием