Jump to content
Guest

[.NET]Cum modific fieldul socks din Internet Options?

Recommended Posts

Salut,

 

Am o intrebare pentru voi astia care sunteti mai capabili... Cum pot modifica fieldul asta?

 

to2ZiT9.png

 

 

Am gasit cod care modifica astea de sus, se foloseste de API-ul WinInet, dar nu ma duce capul cum pot sa modific doar fieldul Socks...

 

 

Codul sursa este asta:

Imports System
Imports System.Runtime.InteropServices


Public Class IEProxy

Public Enum Options

    INTERNET_PER_CONN_FLAGS = 1

    INTERNET_PER_CONN_PROXY_SERVER = 2

    INTERNET_PER_CONN_PROXY_BYPASS = 3

    INTERNET_PER_CONN_AUTOCONFIG_URL = 4

    INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5

    INTERNET_OPTION_REFRESH = 37

    INTERNET_OPTION_PER_CONNECTION_OPTION = 75

    INTERNET_OPTION_SETTINGS_CHANGED = 39

    PROXY_TYPE_PROXY = &H2

    PROXY_TYPE_DIRECT = &H1

End Enum


<StructLayout(LayoutKind.Sequential)> _
Private Class FILETIME

    Public dwLowDateTime As Integer

    Public dwHighDateTime As Integer

End Class


<StructLayout(LayoutKind.Explicit, Size:=12)> _
Private Structure INTERNET_PER_CONN_OPTION

    <FieldOffset(0)> Dim dwOption As Integer

    <FieldOffset(4)> Dim dwValue As Integer

    <FieldOffset(4)> Dim pszValue As IntPtr

    <FieldOffset(4)> Dim ftValue As IntPtr


    Public Function GetBytes() As Byte()

        Dim b(12) As Byte

        BitConverter.GetBytes(dwOption).CopyTo(b, 0)

        Select Case dwOption

            Case (Options.INTERNET_PER_CONN_FLAGS)

                BitConverter.GetBytes(dwValue).CopyTo(b, 4)

            Case (Options.INTERNET_PER_CONN_PROXY_BYPASS)

                BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4)

            Case (Options.INTERNET_PER_CONN_PROXY_SERVER)

                BitConverter.GetBytes(pszValue.ToInt32()).CopyTo(b, 4)

        End Select

        Return (b)

    End Function

End Structure


<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Class INTERNET_PER_CONN_OPTION_LIST

    Public dwSize As Integer

    Public pszConnection As String

    Public dwOptionCount As Integer

    Public dwOptionError As Integer

    Public pOptions As IntPtr

End Class

<StructLayout(LayoutKind.Sequential)> _
Private Class INTERNET_PROXY_INFO

    Public dwAccessType As Integer

    Public lpszProxy As IntPtr

    Public lpszProxyBypass As IntPtr

End Class


Private Const ERROR_INSUFFICIENT_BUFFER = 122

Private Const INTERNET_OPTION_PROXY = 38

Private Const INTERNET_OPEN_TYPE_DIRECT = 1


<DllImport("wininet.dll")> _
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, _
           ByVal dwOption As Integer, _
           ByVal lpBuffer As INTERNET_PER_CONN_OPTION_LIST, _
           ByVal dwBufferLength As Integer) As Boolean

End Function


<DllImport("kernel32.dll")> _
Private Shared Function GetLastError() As Integer

End Function


Public Function SetProxy(ByVal proxy_full_addr As String) As Boolean

    Dim bReturn As Boolean

    Dim list As New INTERNET_PER_CONN_OPTION_LIST

    Dim dwBufSize As Integer = Marshal.SizeOf(list)

    Dim opts(3) As INTERNET_PER_CONN_OPTION

    Dim opt_size As Integer = Marshal.SizeOf(opts(0))


    list.dwSize = dwBufSize

    list.pszConnection = ControlChars.NullChar

    list.dwOptionCount = 3


    'set flags

    opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS

    opts(0).dwValue = Options.PROXY_TYPE_DIRECT Or Options.PROXY_TYPE_PROXY


    'set proxyname

    opts(1).dwOption = Options.INTERNET_PER_CONN_PROXY_SERVER

    opts(1).pszValue = Marshal.StringToHGlobalAnsi(proxy_full_addr)


    'set override

    opts(2).dwOption = Options.INTERNET_PER_CONN_PROXY_BYPASS

    opts(2).pszValue = Marshal.StringToHGlobalAnsi("local")


    Dim b(3 * opt_size) As Byte

    opts(0).GetBytes().CopyTo(b, 0)

    opts(1).GetBytes().CopyTo(b, opt_size)

    opts(2).GetBytes().CopyTo(b, 2 * opt_size)


    Dim ptr As IntPtr = Marshal.AllocCoTaskMem(3 * opt_size)

    Marshal.Copy(b, 0, ptr, 3 * opt_size)


    list.pOptions = ptr

    'Set the options on the connection

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    'Notify existing Internet Explorer instances that the settings have changed

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    'Flush the current IE proxy setting

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    Marshal.FreeHGlobal(opts(1).pszValue)

    Marshal.FreeHGlobal(opts(2).pszValue)

    Marshal.FreeCoTaskMem(ptr)

    Return (bReturn)

End Function


Public Function DisableProxy() As Boolean

    Dim bReturn As Boolean

    Dim list As New INTERNET_PER_CONN_OPTION_LIST

    Dim dwBufSize As Integer = Marshal.SizeOf(list)

    Dim opts(0) As INTERNET_PER_CONN_OPTION

    Dim opt_size As Integer = Marshal.SizeOf(opts(0))


    list.dwSize = dwBufSize

    list.pszConnection = ControlChars.NullChar

    list.dwOptionCount = 1


    opts(0).dwOption = Options.INTERNET_PER_CONN_FLAGS

    opts(0).dwValue = Options.PROXY_TYPE_DIRECT


    Dim b(opt_size) As Byte

    opts(0).GetBytes().CopyTo(b, 0)


    Dim ptr As IntPtr = Marshal.AllocCoTaskMem(opt_size)

    Marshal.Copy(b, 0, ptr, opt_size)


    list.pOptions = ptr

    'Set the options on the connection

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    'Notify existing Internet Explorer instances that the settings have changed

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_SETTINGS_CHANGED, Nothing, 0)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    'Flush the current IE proxy setting

    bReturn = InternetSetOption(IntPtr.Zero, Options.INTERNET_OPTION_REFRESH, Nothing, 0)

    If Not bReturn Then

        Debug.WriteLine(GetLastError)

    End If


    Marshal.FreeCoTaskMem(ptr)

    Return (bReturn)

End Function


End Class


sProxy.SetProxy("proxy:port")    'setezi proxy
sProxy.SetProxy("proxy:port")    'opresti proxy

 

Link to comment
Share on other sites

3 hours ago, gigiRoman said:
In internet Settings am pus la ProxyServer valoarea socks=127.0.0.1:8040 si l-a dezbelit.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr mai si pe aici StaticProxy

 

 

 

Hai ca m-am prins, am sa incerc si eu sa vad care-i treaba. Mersi mult.

Link to comment
Share on other sites

Quote

// To include server for FTP, HTTPS, and so on, use the string

// (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80)

conform https://support.microsoft.com/en-us/help/226473/how-to-programmatically-query-and-set-proxy-settings-under-internet-explorer (ultimul exemplu din pagina).

 

Ca atare incearca

SetProxy("socks=address:port");

sau ceva in genul.

Link to comment
Share on other sites

43 minutes ago, u0m3 said:

conform https://support.microsoft.com/en-us/help/226473/how-to-programmatically-query-and-set-proxy-settings-under-internet-explorer (ultimul exemplu din pagina).

 

Ca atare incearca


SetProxy("socks=address:port");

sau ceva in genul.

 

 

A mers, iti multumesc din suflet. Am dat si eu peste articolul ala dar nu am fost atent sa citesc pana la capat.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...