Аутентификация прокси-сервера socks в c

У меня есть функция, предназначенная для создания пакета рукопожатия socks; но я не могу найти информацию о том, как заполняются поля авторизации. Как форматируется пакет аутентификации?

void socks_auth(int sd, char *buffer) {
    char *ptrBuff;
    ptrBuff = buffer;
    *(ptrBuff++) = SOCKS_V;
    *(ptrBuff++) = 2;
    *(ptrBuff++) = 0x00;
    *(ptrBuff++) = 0x02;
    send(sd, ptrBuff, ptrBuff - buffer, 0);
    recv(sd, buffer, 2, 0);
    if (buffer[1] == 0xFF) write(STDOUT_FILENO, "not supported\n", 14);
    if (buffer[1] == 0x02) {

    };
}

person motoku    schedule 10.07.2015    source источник
comment
Аутентификация и безопасная передача данных выполняются на уровне приложения, а то, что вы заполняете, — это транспортный уровень. Проверьте SSL/TLS. Должно быть довольно легко реализовать то, что вам нужно, с помощью OpenSSL.   -  person Elalfer    schedule 10.07.2015
comment
@Elalfer Я думаю, что этот вопрос касается аутентификации клиента на прокси-сервере SOCKS, чтобы ему было разрешено использовать прокси-сервер.   -  person user253751    schedule 10.07.2015


Ответы (1)


Я предлагаю вам начать с RFC1928, SOCKS Protocol Version 5 и, возможно, RFC1961 Метод аутентификации GSS-API для SOCKS версии 5.

Если ни один из них не поможет, возможно, посмотрите на источник socat, который может действовать как SOCKS5. прокси, поможет.

person mjturner    schedule 10.07.2015