Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   VPN & Delphi (https://forum.antichat.xyz/showthread.php?t=51380)

SiDChik 17.10.2007 18:38

VPN & Delphi
 
Нужно написать программку которая бы создавала\удаляла\активиро вала\дизактивировала или использовала VPN соединение в Windows. Когда искал инфу, большенство сайтов ссылалось на RAS с которым особо не смог разобраться, т.к. не было нормальных примеров.
Помимо всего нужно иметь возможность знать трафик текущего соединения. Хелп? ;)

P.S. Среда Delphi 7

Krey 17.10.2007 18:50

+1
также интересует сабж.

Ni0x 17.10.2007 19:03

Психически неустойчивым дельфи-программистам не смотреть!
/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


GoreMaster 18.10.2007 18:05

Цитата:

Психически неустойчивым дельфи-программистам не смотреть!
/ASM
никогда не понимал тех,кто такую хренотень пишет на асме...
на СИ не можете что ли структуру заполнить или это вы*бон такой?

slesh 18.10.2007 23:35

я вообще видел давольно тупой но в тоже время понятный способ коннекта:
юзать консольную виндовую прогу rasdial через winexec или можно через пайпы чтобы вывод виден был.

Но этот способ больше подходит под PHP

Nightmarе 19.10.2007 05:30

+2 кто поможет по САБЖу, тому 10 в репу!!!!!!!!!!!!!


Время: 08:41