Гнездо C TOR не отправляет запрос - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать программу на C, которая использует сокет через прокси-сервер TOR для отправки запроса GET на сайт, через который проходит пользователь при запуске программы.Программа отлично компилируется, подключается и нормально взаимодействует, но сервер продолжает выдавать ошибку при попытке отправить запрос в домен.

Я пробовал несколько способов исправить это, но пока что ни один из них не работает,Вот мой код:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>

int main(int argc, char **argv) {
    if(!argv[1]) {
            printf("Usage: %s [HOST]\n",argv[0]);
            exit(1);
    }

    char *host = argv[1];
    struct sockaddr_in server;
    int s = socket(AF_INET, SOCK_STREAM, 0);
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = inet_addr("192.168.1.20"); //TOR server address
    server.sin_port = htons( 9050 );

    connect(s, (struct sockaddr*)&server, sizeof(server));

    char request1[3] = (char []) { 0x05, 0x01, 0x00 };
    send(s, request1, 3, 0);

    char response1[2];
    recv(s, response1, 2, 0);

    short port = htons(80);
    char host_len = (char)strlen(host);
    char* request2[4+1+host_len+2];
    char tempRequestHolder[4] = (char []) { 0x05, 0x01, 0x00, 0x03 };

    memcpy(request2, tempRequestHolder, 4);
    memcpy(request2 + 4, &host_len, 1);
    memcpy(request2 + 5, host, host_len);
    memcpy(request2 + 5 + host_len, &port, 2);

    send(s, (char *)request2, 4 + 1 + host_len + 2, 0);

    char response2[10];
    recv(s, response2, 10, 0);

    char * request = "GET / HTTP/1.0\r\n\r\n";
    char buf[2048];
    unsigned int rec = recv(s, buf, 2048, 0);

    printf("\n%s\n",buf);

    return 0;
}

Когда он работает:

./tor-client some-site.com

Сервер TOR возвращает эту ошибку:

[warn] Your application (using socks5 to port 0) gave Tor a malformed hostname: [scrubbed]. Rejecting the connection.

У меня проблемы с выяснениемотносительно того, почему это происходит, и попытались несколько способов исправить это, но не повезло.Любая помощь / ответ будет высоко ценится!

Спасибо.

...