Skip to content

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

@davidCarrion

Description

@davidCarrion

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions