uso de Socks5 en NET

Iniciado por FJDA, 20 Enero 2021, 22:55 PM

0 Miembros y 1 Visitante están viendo este tema.

FJDA

Usé el buscador de elhacker.net y solo encontré un hilo.

He intentado hacer que mi aplicación se conecte via socks5 con proxy de Tor (http://127.0.0.1:9150) pero sin éxito.

Por ejemplo mediante API:

Código (vbnet) [Seleccionar]

Imports System.Runtime.InteropServices
Imports System.Net

Public Class Form1
   <Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)> _
   Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean
   End Function

   Public Structure Struct_INTERNET_PROXY_INFO
       Public dwAccessType As Integer
       Public proxy As IntPtr
       Public proxyBypass As IntPtr
   End Structure

   Private Sub Use_Proxy(ByVal strProxy As String)
       Const INTERNET_OPTION_PROXY As Integer = 38
       'Const INTERNET_OPEN_TYPE_PROXY As Integer = 3
       Const INTERNET_DEFAULT_SOCKS_PORT As Integer = 1080
       Dim struct_IPI As Struct_INTERNET_PROXY_INFO

       struct_IPI.dwAccessType = INTERNET_DEFAULT_SOCKS_PORT
       struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
       struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")

       Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))

       Marshal.StructureToPtr(struct_IPI, intptrStruct, True)

       Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))
   End Sub


   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Use_Proxy("http://127.0.0.1:9150")
   End Sub




Para probarlo he intentado descargar una página WEB, pero antes he configurado IE para que se conecte mediante el proxy 127.0.0.1.  De modo que IE y Chrome no tiene acceso a no ser que TOR esté ejecutándose.    Sin embargo el programa descarga la WEB aunque TOR no se ejecute.                                                          

Código (vbnet) [Seleccionar]

   Public Function ConseguirHTML(ByVal strURL As String) As String
       Dim strCode As String

       Dim Request As Net.HttpWebRequest = Net.HttpWebRequest.Create(strURL)
       Using StrReader As New IO.StreamReader(Request.GetResponse().GetResponseStream, System.Text.Encoding.UTF8)

           strCode = StrReader.ReadToEnd

       End Using





También probé lo siguiente:

Código (vbnet) [Seleccionar]

    Dim wp As WebProxy = New WebProxy("http://127.0.0.1:9150")

       Using myWebClient As New System.Net.WebClient()

           myWebClient.Proxy = wp
           myWebClient.UseDefaultCredentials = False

           Dim resultHTML() As Byte = myWebClient.DownloadData(strURL)
           Dim DefaultEnc As System.Text.Encoding = System.Text.Encoding.Default
           Dim myResultString As String = DefaultEnc.GetString(resultHTML)
           Return myResultString
       End Using


Con esto ocurre dos cosas, si TOR no se ejecuta lanza el siguiente error:

SocketException: No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión 127.0.0.1:9150

Cuando TOR se está ejecutando lanza el siguiente error:


System.Net.WebException: 'Error en el servidor remoto: (501) Sin implementar.'


Sin importar la configuración de la red local que tenga.


No quiero tener que usar librerías de terceros, estaría bien una solución para esto. Se solucionaría si se conectara usando la configuración de IE, algo que obviamente no hace.