Загрузка...

Are there ready -made scripts for Titanium.web.proxy?

Thread in C# created by yupp Diamond SVG Icon Jun 26, 2025. 1,165 views

  1. yupp
    yupp Diamond SVG Icon Topic starter Jun 26, 2025 Проституция запрещена!!! (РФ)
    [C#/WEB] Development of any software for feedback
    1,246 Jan 25, 2022
    нужен скрипт который откроет на пк порт для подключения по socks5 с логином и паролем. Писать лень хочется просто скопировать
     
  2. Gendafol
    Gendafol Jul 31, 2025 3 May 25, 2018
    Вот готовый код :pepeez:

    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Collections.Generic;

    class Socks5Server
    {
    const int Port = 1080;
    const string Username = "myuser";
    const string Password = "mypassword";

    public static void Main()
    {
    Console.WriteLine($"[+] SOCKS5 сервер запущен на порту {Port}");
    TcpListener listener = new TcpListener(IPAddress.Any, Port);
    listener.Start();

    while (true)
    {
    TcpClient client = listener.AcceptTcpClient();
    ThreadPool.QueueUserWorkItem(HandleClient, client);
    }
    }

    static void HandleClient(object obj)
    {
    TcpClient client = (TcpClient)obj;
    NetworkStream stream = client.GetStream();

    try
    {
    byte[] buffer = new byte[1024];

    // Этап 1: Приветствие
    int read = stream.Read(buffer, 0, 2);
    if (read != 2 || buffer[0] != 0x05) return;
    int methodCount = buffer[1];
    stream.Read(buffer, 0, methodCount);
    stream.Write(new byte[] { 0x05, 0x02 }); // Требуем username/password

    // Этап 2: Аутентификация
    read = stream.Read(buffer, 0, 2);
    if (read != 2 || buffer[0] != 0x01) return;
    int ulen = buffer[1];
    stream.Read(buffer, 0, ulen);
    string user = Encoding.ASCII.GetString(buffer, 0, ulen);

    stream.Read(buffer, 0, 1);
    int plen = buffer[0];
    stream.Read(buffer, 0, plen);
    string pass = Encoding.ASCII.GetString(buffer, 0, plen);

    if (user != Username || pass != Password)
    {
    stream.Write(new byte[] { 0x01, 0x01 }); // FAIL
    client.Close();
    return;
    }

    stream.Write(new byte[] { 0x01, 0x00 }); // OK

    // Этап 3: Запрос
    stream.Read(buffer, 0, 4); // VER, CMD, RSV, ATYP
    byte cmd = buffer[1];
    byte atyp = buffer[3];
    string targetHost = "";

    if (atyp == 0x01) // IPv4
    {
    stream.Read(buffer, 0, 4);
    IPAddress ip = new IPAddress(new byte[] { buffer[0], buffer[1], buffer[2], buffer[3] });
    targetHost = ip.ToString();
    }
    else
    {
    client.Close();
    return;
    }

    stream.Read(buffer, 0, 2);
    int targetPort = (buffer[0] << 8) | buffer[1];

    TcpClient remote = new TcpClient();
    try
    {
    remote.Connect(targetHost, targetPort);
    }
    catch
    {
    stream.Write(new byte[] { 0x05, 0x01, 0x00, 0x01, 0, 0, 0, 0, 0, 0 });
    client.Close();
    return;
    }

    // Ответ клиенту — соединение установлено
    byte[] response = new byte[] { 0x05, 0x00, 0x00, 0x01 };
    response = Combine(response, ((IPEndPoint)remote.Client.LocalEndPoint).Address.GetAddressBytes());
    response = Combine(response, BitConverter.GetBytes((ushort)((IPEndPoint)remote.Client.LocalEndPoint).Port));
    stream.Write(response, 0, response.Length);

    // Данные туда-обратно
    NetworkStream remoteStream = remote.GetStream();
    Thread t1 = new Thread(() => PipeStream(stream, remoteStream));
    Thread t2 = new Thread(() => PipeStream(remoteStream, stream));
    t1.Start(); t2.Start();
    t1.Join(); t2.Join();
    }
    catch (Exception ex)
    {
    Console.WriteLine($"[!] Ошибка: {ex.Message}");
    }
    finally
    {
    client.Close();
    }
    }

    static void PipeStream(NetworkStream input, NetworkStream output)
    {
    byte[] buffer = new byte[8192];
    try
    {
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
    output.Write(buffer, 0, read);
    }
    }
    catch { }
    }

    static byte[] Combine(byte[] a, byte[] b)
    {
    byte[] r = new byte[a.Length + b.Length];
    Buffer.BlockCopy(a, 0, r, 0, a.Length);
    Buffer.BlockCopy(b, 0, r, a.Length, b.Length);
    return r;
    }
    }
     
    1. yupp Diamond SVG Icon Topic starter
Loading...