1. #1

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard Tor als Socks Proxy Handshake Fetching socks handshake failed

    Hallo,

    ich würde gerne Tor als Proxy benutzen um Requests damit zu senden.


    Ich glaube der ProReg sendet die Anfragen auch mittels Tor.


    Im Moment sieht das bei mir so aus:


    Code:
    Public Function SocksConnect() As Integer
                Dim result As Integer
                Try
                    EClient = SocketNEW.CreateSock(ETimeout)
                    EClient.Connect(ESocksHost, ESocksPort)
                    EConnection = New NetworkStream(EClient)
                    Dim Wr As BinaryWriter = New BinaryWriter(EConnection)
                    Dim Br As BinaryReader = New BinaryReader(EConnection)
                    Wr.Write(5)
                    Wr.Write(1)
                    Wr.Write(0)
    
                    Dim ServerAuth As Byte() = {}
                    EClient.Receive(ServerAuth)
                    Console.WriteLine("Länge : " & ServerAuth.Count)
                    Console.WriteLine(ServerAuth(0) & " | " & ServerAuth(1))
                    If ServerAuth(0) = 5 AndAlso ServerAuth(1) = 0 Then
                        Wr.Write(5)
                        Wr.Write(1)
                        Wr.Write(0)
                        Wr.Write(3)
                        Dim bytes As Byte() = Encoding.ASCII.GetBytes(ESocksTargetHost)
                        Wr.Write(CByte(bytes.Length))
                        Wr.Write(bytes, 0, bytes.Length)
                        Wr.Write(0)
                        Wr.Write(80)
                        EConnection.Read(ServerAuth, 0, 2)
                        result = CInt(ServerAuth(1))
                        Return result
                    End If
                Catch exFE As Exception
                    result = -1
                    Return result
                End Try
                result = -1
                Return result
            End Function
    In der Tor Konsole steht "Fetching socks handshake failed. Closing.

    Die Konsole gibt die Länge 0 aus vom Array.
    Was ist daran falsch? Vllt. kann ja mal jemand was dazu sagen.



    Danke im Vorraus..

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.081
    Thanked 9.119 Times in 2.996 Posts
    Blog Entries
    5

    Standard AW: Tor als Socks Proxy Handshake Fetching socks handshake failed

    Code:
    Dim ServerAuth As Byte() = {}
    Also für gewöhnlich gibt man bei einem statischen Array eine Größe an.
    In dem Fall wären das 2 Bytes, da der Server mit der Socket-Version und der akzeptierten Authentifizierungsmethode antwortet (sofern es dies tut natürlich).
    Kp wie das in VB.NET funktioniert, musst du selbst nachgucken, bei dem Syntax krieg ich Kopfschmerzen. Kann aber eigentlich nicht sein, dass ein statischer Array ohne festgelegte Größe definiert wird. Die Größe muss dann wohl in die geschweiften Klammern oder so.

    Hab dir hier ne C# Klasse von mir die den Verbindungsaufbau zu Socks5 Proxys übernimmt.
    Ist schon ewig alt und hat daher entsprechend Optimierungspotenzial, aber als Lösungsansatz sollte es ausreichen.


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

    namespace TorManager {
    class Socks5 {
    TorInstance _instance;
    Socket client;
    NetworkStream connection;

    public Socks5(TorInstance instance) {
    _instance = instance;
    client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    client.ReceiveTimeout = client.SendTimeout = 10000;
    client.Connect(instance.Host, instance.Port);
    connection = new NetworkStream(client);
    }

    public bool Connected {
    get { return client != null && client.Connected; }
    }

    public bool Authenticate() {
    connection.WriteByte(5);
    connection.WriteByte(1);
    connection.WriteByte(0);
    byte[] resp = SocksResponse();
    return resp[0] == 5 && resp[1] == 0;
    }

    public byte Connect(string targetHost) {
    connection.WriteByte(5);
    connection.WriteByte(1);
    connection.WriteByte(0);
    connection.WriteByte(3);
    byte[] host = Encoding.ASCII.GetBytes(targetHost);
    connection.WriteByte((byte)host.Length);
    connection.Write(host, 0, host.Length);
    connection.WriteByte(0);
    connection.WriteByte(80);
    byte[] resp = SocksResponse();
    return resp[1];
    }

    private byte[] SocksResponse() {
    byte[] resp = new byte[2];
    connection.Read(resp, 0, resp.Length);
    return resp;
    }

    public void Send(string str, Encoding encoding) {
    byte[] data = encoding.GetBytes(str);
    connection.Write(data, 0, data.Length);
    }

    public void Send(string str) {
    Send(str, Encoding.UTF8);
    }

    public void Send(byte[] data) {
    connection.Write(data, 0, data.Length);
    }

    public string GetResponse() {
    int bytes = 0;
    byte[] buffer = new byte[client.ReceiveBufferSize];
    string resp = "";
    do {
    bytes = connection.Read(buffer, 0, buffer.Length);
    resp += Encoding.UTF8.GetString(buffer);
    } while (bytes > 0);

    while (!resp.StartsWith("HTTP") && resp.Contains("HTTP"))
    resp = resp.Substring(1);
    return resp;
    }
    }
    }


Ähnliche Themen

  1. Verschenke VIC-SOCKS
    Von Roxithro im Forum Verschenke
    Antworten: 0
    Letzter Beitrag: 03.11.2012, 16:47
  2. Handshake-Änderung
    Von Mentos im Forum Knuddels Programmierung
    Antworten: 2
    Letzter Beitrag: 07.04.2012, 16:59
  3. Proxy's für Reg-Bot / Socks 5
    Von xPaT im Forum Knuddels Registrationsbots
    Antworten: 7
    Letzter Beitrag: 02.12.2011, 22:39
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.