TorSharp icon indicating copy to clipboard operation
TorSharp copied to clipboard

Error No such file or directory AND the destination equip expressly denied such a connection.

Open davidCarrion opened this issue 7 months ago • 0 comments

Hello, first of all excuse me for my English, I am trying to make a connection but I have 2 problems, first the TorData directory does not take me even creating it directly, and two my pc denies the connection. Could you give me a hand and tell me where the fault may be? Thanks in advance. This is my full code:

using Knapcode.TorSharp; using System; using System.IO; using System.Net; using System.Net.Http; using System.Threading.Tasks;

class Program { private static string logFilePath = "C:\Logs\TorErrorLog.txt"; // Ruta del archivo de registro

static async Task Main(string[] args)
{
    // Configurar directorios
    var zippedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorZipped");
    var extractedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorExtracted");
    var torDataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Temp", "TorData");

    // Verificar y crear directorios si no existen
    EnsureDirectoryExists(zippedToolsDirectory);
    EnsureDirectoryExists(extractedToolsDirectory);
    EnsureDirectoryExists(torDataDirectory);

    // Configurar TorSharpSettings
    var settings = new TorSharpSettings
    {
        ZippedToolsDirectory = zippedToolsDirectory,
        ExtractedToolsDirectory = extractedToolsDirectory,
        TorSettings =
        {
            SocksPort = 1338,
            ControlPort = 1339,
            ControlPassword = "foobar",
            DataDirectory = torDataDirectory
        },
        WriteToConsole = true // Habilitar registro en consola
    };

    // Descargar herramientas de Tor
    await DownloadAndConfigureTorAsync(settings);

    // Ejecutar proxy Tor y hacer una solicitud HTTP a través de Tor
    await UseTorProxyAsync(settings);
}

private static async Task DownloadAndConfigureTorAsync(TorSharpSettings settings)
{
    try
    {
        // Descargar herramientas de Tor si no están presentes
        await new TorSharpToolFetcher(settings, new HttpClient()).FetchAsync();
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error al descargar herramientas de Tor: {ex.Message}");
        throw;
    }
}

private static async Task UseTorProxyAsync(TorSharpSettings settings)
{
    var proxy = new TorSharpProxy(settings);

    try
    {
        // Suscribirse a eventos de registro
        proxy.OutputDataReceived += (sender, e) =>
        {
            Console.WriteLine($"[{e.ExecutablePath}] {e.Data}" + "////OutputData///");
        };
        proxy.ErrorDataReceived += (sender, e) =>
        {
            Console.Error.WriteLine($"[{e.ExecutablePath}] {e.Data}" + "////ErrorData///");
            WriteToLogFile($"[{e.ExecutablePath}] {e.Data} ////ErrorData///");
        };

        // Configurar el cliente HTTP para usar el proxy Tor
        var handler = new HttpClientHandler
        {
            Proxy = new WebProxy(new Uri($"socks5://localhost:{settings.TorSettings.SocksPort}")),
            ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true // Bypass SSL certificate validation
        };

        using (handler)
        using (var httpClient = new HttpClient(handler))
        {
            httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36");

            await proxy.ConfigureAndStartAsync();

            string result = await MakeRequestWithRetry(httpClient, "https://www.youtube.com/");
            Console.WriteLine();
            Console.WriteLine("First request:");
            Console.WriteLine(result);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error: {ex.Message}");
        WriteToLogFile($"Error en la aplicación: {ex.Message}");
    }
    finally
    {
        proxy.Stop();
    }
}

private static async Task<string> MakeRequestWithRetry(HttpClient httpClient, string url, int maxRetries = 5, int initialDelay = 5000)
{
    int retries = 0;
    int delay = initialDelay;

    while (retries < maxRetries)
    {
        try
        {
            HttpResponseMessage response = await httpClient.GetAsync(url);
            response.EnsureSuccessStatusCode();
            return await response.Content.ReadAsStringAsync();
        }
        catch (HttpRequestException ex) when ((int)ex.StatusCode == 429)
        {
            Console.WriteLine($"Too many requests. Retrying in {delay / 1000} seconds...");
            await Task.Delay(delay);
            retries++;
            delay *= 2; // Exponential backoff
        }
        catch (Exception ex)
        {
            throw new Exception($"Request failed: {ex.Message}");
        }
    }

    throw new Exception("Max retries exceeded. Request failed.");
}

private static void EnsureDirectoryExists(string directoryPath)
{
    if (!Directory.Exists(directoryPath))
    {
        try
        {
            Directory.CreateDirectory(directoryPath);
        }
        catch (Exception ex)
        {
            throw new Exception($"Error creating directory '{directoryPath}': {ex.Message}");
        }
    }
}

private static void WriteToLogFile(string message)
{
    try
    {
        // Asegúrate de que el directorio del archivo de registro exista
        string logDirectory = Path.GetDirectoryName(logFilePath);
        if (!Directory.Exists(logDirectory))
        {
            Directory.CreateDirectory(logDirectory);
        }

        // Escribe el mensaje en el archivo de registro
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}");
        }
    }
    catch (Exception ex)
    {
        // Manejo de errores en caso de que falle la escritura del archivo de registro
        Console.WriteLine($"Error al escribir en el archivo de registro: {ex.Message}");
    }
}

} and this is what the cmd is giving me: Jul 01 12:22:41.285 [notice] Tor 0.4.8.12 (git-2beaa7557c3c93ec) running on Windows 8 [or later] with Libevent 2.1.12-stable, OpenSSL 3.0.14, Zlib 1.3.1, Liblzma N/A, Libzstd N/A and Unknown N/A as libc. Jul 01 12:22:41.285 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/ [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.285 [notice] Tor 0.4.8.12 (git-2beaa7557c3c93ec) running on Windows 8 [or later] with Libevent 2.1.12-stable, OpenSSL 3.0.14, Zlib 1.3.1, Liblzma N/A, Libzstd N/A and Unknown N/A as libc.////ErrorData/// [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.285 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/////OutputData/// Jul 01 12:22:41.299 [notice] Read configuration file "C:\Users\David?lvarezCarri?n\AppData\Local\Temp\TorExtracted\tor-win64-13.5\data\tor\torrc". [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.299 [notice] Read configuration file "C:\Users\David?lvarezCarri?n\AppData\Local\Temp\TorExtracted\tor-win64-13.5\data\tor\torrc".////OutputData/// Jul 01 12:22:41.301 [notice] Opening Socks listener on 127.0.0.1:1338 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Opening Socks listener on 127.0.0.1:1338////OutputData/// Jul 01 12:22:41.301 [notice] Opened Socks listener connection (ready) on 127.0.0.1:1338 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Opened Socks listener connection (ready) on 127.0.0.1:1338////OutputData/// Jul 01 12:22:41.301 [notice] Opening Control listener on 127.0.0.1:1339 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Opening Control listener on 127.0.0.1:1339////OutputData/// Jul 01 12:22:41.301 [notice] Opened Control listener connection (ready) on 127.0.0.1:1339 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Opened Control listener connection (ready) on 127.0.0.1:1339////OutputData/// Jul 01 12:22:41.301 [warn] Error creating directory C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorData: No such file or directory [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [warn] Error creating directory C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorData: No such file or directory////OutputData/// Jul 01 12:22:41.301 [notice] Closing partially-constructed Socks listener connection (ready) on 127.0.0.1:1338 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Closing partially-constructed Socks listener connection (ready) on 127.0.0.1:1338////OutputData/// Jul 01 12:22:41.301 [notice] Closing partially-constructed Control listener connection (ready) on 127.0.0.1:1339 [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [notice] Closing partially-constructed Control listener connection (ready) on 127.0.0.1:1339////OutputData/// Jul 01 12:22:41.301 [warn] Failed to parse/validate config: Couldn't create private data directory "C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorData" [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [warn] Failed to parse/validate config: Couldn't create private data directory "C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorData"////OutputData/// Jul 01 12:22:41.301 [err] Reading config failed--see warnings above. [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] Jul 01 12:22:41.301 [err] Reading config failed--see warnings above.////OutputData///

[C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] ////OutputData///

[C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\tor-win64-13.5\tor\tor.exe] ////ErrorData/// Error: Request failed: No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión. (localhost:1338)

[C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\privoxy-win32-3.0.34\privoxy.exe] ////ErrorData/// [C:\Users\DavidÁlvarezCarrión\AppData\Local\Temp\TorExtracted\privoxy-win32-3.0.34\privoxy.exe] ////OutputData///

TorZipped and TorExtractedTools are working perfect. If u need more info ask. Sorry for my English again¡ TorErrorLog.txt

davidCarrion avatar Jul 01 '24 10:07 davidCarrion