Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2014, 11:35   #1
Playtowin
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 4
По умолчанию как отправить пакет через socks5

Блин ппц, весь день и пол ночи просидел и так и не решил...
Бес прокси все работает как часы, с прокси могу принять 1-й пакет а отправить ответ не могу, толи не доходит толи вообще не уходит,
Начал тестить, пустил трафик чере проксифайр с этим же прокси и снифал впепро, в итоге мой пакет с IP отличается от того что посылает проксифаер, взял пакет с ip от просифаера и вставил в свой код в итоге даже 1-й пакет от сервера не получаю
на скрине проксифайер слева, cправа мой код, центр - мой код без прокси ( все норм)
вот код как я подключаюсь к прокси серверу:
Код:
struct socks5 {
        BYTE ver;
        BYTE cmd;
        BYTE rsv;
        BYTE type;
        DWORD addr;
        u_short port;
    };
    socks5 temp;
    char buff[150] = { 0 };
    if (WSAStartup(MAKEWORD(2, 0), (WSADATA *)buff)){
        printf("WSAStart error %d\n", WSAGetLastError());
    }
    my_sock = socket(AF_INET, SOCK_STREAM, 0);
    if (my_sock < 0)
    {
        printf("Socket() error %d\n", WSAGetLastError());
    }
 
    sockaddr_in dest_addr;
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
    dest_addr.sin_port = htons(port);
 
 
    if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
        printf("Connect error %d\n", WSAGetLastError());
    else printf("Connect for %s success\n", SERVERADDR);
    //const char *SERVERADDR = "92.222.245.131";
    buff[0] = 0x05;
    buff[1] = 0x01;
    buff[2] = 0x00;
 
    temp.ver = 0x05;  //новый запрос - версия и т.д.
    temp.cmd = 0x01;
    temp.addr = inet_addr("92.222.245.131");
    temp.port = htons(2106);
    temp.rsv = 0x00;
    temp.type = 0x01;
 
    send(my_sock, buff, 3, 0);
    
    int x = recv(my_sock, buff, 50, 0);
    send(my_sock, (char*)&temp,sizeof(temp), 0);//авторизация
    x = recv(my_sock, buff, 10, 0);
}
Вот я считываю 1-й пакет :
Код:
nsize = recv(my_sock, buff, 1024, 0);
    cout << nsize;
    data = new char[nsize - 2];
А вот ответ серверу, который на скрине 34 байта:
Код:
bool AuthL2::auth_gg()
{
 
    try{
        char skeleton[32] = { 0 };
        char auth[34] = { 0 };
        blowfish.SetKey(bf_key, 16);
        bits buf;
        skeleton[0] = 0x7;
 
 
        buf.number = sessionID;
        for (int x = 0; x < 4; x++)
            skeleton[x + 1] = buf.buff[x];
        buf.number = checksum((unsigned char*)skeleton, 26);
        auth[0] = 0x22;
        auth[1] = 0x00;
        for (int x = 0; x < 4; x++)
            skeleton[x + 24] = buf.buff[x];
        blowfish.Encrypt(auth + 2, skeleton, 32);
        send(my_sock, auth,34, 0);
        nsize = recv(my_sock, buff, 3, 0);
        cout << nsize;
        return true;
    }
    catch (...)
    {
        return false;
    }
}
Ну и после висим
п.с. и в проксифаере еще все пакеты дублируются и появился какой то левый пакет на 42 байта...
Изображения
Тип файла: jpg Безымянный.jpg (35.6 Кб, 135 просмотров)

Последний раз редактировалось Stilet; 06.10.2014 в 11:41.
Playtowin вне форума Ответить с цитированием
Старый 06.10.2014, 11:58   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Наверно стоит проверить что ответил сервер на первый запрос и что именно возвращают send/recv.
waleri вне форума Ответить с цитированием
Старый 06.10.2014, 12:09   #3
Playtowin
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Наверно стоит проверить что ответил сервер на первый запрос и что именно возвращают send/recv.
да это не трудно проверить
Цитата:
Connect for 219.222.237.249 success

zapros k socks:
5 1 0

otvet ot proxy #1:
5 0

zapros authorization:
5 1 0 1 5c de f5 83 8 3a

otvet ot proxy #2:
5 0 0 1 db de ed f9 5 9f

otvet targeta:
0 fa d6 7f 4c 21 c6 0 0 4d 8b 64 3d f8 b5 1d c5 9e 33 b7 4b ba 14 b0 8a ff
78 c8 8d f7 15 ee 24 e4 74 11 f 69 8 b0 cd 57 ad 53 16 76 2f c 72 a1 9a
71 f9 a4 f6 86 2d 66 25 aa ab 1 85 e2 27 51 e6 a3 5 9f a0 1 5d 58 fb 67
71 de 84 8a 86 fd a5 a8 d2 c4 89 ff 70 99 a0 f7 40 ce d6 38 ee 49 aa ce 3
d0 62 30 d0 b2 7 74 95 ab 65 d 88 d5 c4 53 61 65 f2 83 70 ca 8b 8c 14 49
f8 62 53 ae 3 f8 91 0 a9 13 d2 4e 95 dd 29 fc 9c c3 77 20 b6 ad 97 f7 e0
bd 7 91 8f a3 8c a5 2a 77 d9 be 48 10 c1 57 94 b9 ed 0 88 7d 7 9d 25 c1
4d a9 1b 52 29 7c 97 9b
Для продолжения нажмите любую клавишу . . .
Вообще на скрине все видно, вот нормальный размер:
http://8pic.ru/?v=BcEY.png
Решено и Понятно, а понято то что я олень, почти сутки просидел за монитором, а ошибка была в том что я отсылал сокету 12 байт вместо 10 положенных, это ппц, у меня на с++ всегда такие косяки

Последний раз редактировалось Playtowin; 06.10.2014 в 12:41.
Playtowin вне форума Ответить с цитированием
Старый 06.10.2014, 12:45   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

У вас на WPEPRO2 по крайней мере две сессии, судя по портам.
waleri вне форума Ответить с цитированием
Старый 06.10.2014, 12:55   #5
Playtowin
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
У вас на WPEPRO2 по крайней мере две сессии, судя по портам.
Ну это сама proxyfier что то "мутит" я то снифал траф что бы посмотреть как авторизуется какой нибудь проксификатор...
а сама ошибка вот :
Цитата:
send(my_sock, (char*)&temp,sizeof(temp), 0);//авторизация
sizeof(temp) == 12, а по стандарту надо 10

Последний раз редактировалось Playtowin; 06.10.2014 в 12:57.
Playtowin вне форума Ответить с цитированием
Старый 06.10.2014, 12:58   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Нет, я к тому, что не вижу дублирование пакетов.
А на средней и правой картинке все похоже на нормальную сессию, в середине явно без СОКСа. Так на какой картинке ваша сессия?
waleri вне форума Ответить с цитированием
Старый 06.10.2014, 13:04   #7
Playtowin
Новичок
Джуниор
 
Регистрация: 06.10.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Нет, я к тому, что не вижу дублирование пакетов.
А на средней и правой картинке все похоже на нормальную сессию, в середине явно без СОКСа. Так на какой картинке ваша сессия?
на скрине проксифайер слева, cправа мой код, центр - мой код без прокси ( все норм) - я же в 1-ом сообщении написал
снифал в разное время, сначало проксификатор, потом код с носком, потом "чистый" коннект.

Последний раз редактировалось Playtowin; 06.10.2014 в 13:06.
Playtowin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправить пакет с существующего соеденения BETEP32 Работа с сетью в Delphi 13 30.05.2012 10:18
Как отправить UDP пакет Larboss Работа с сетью в Delphi 0 20.10.2011 21:30
Не могу отправить пакет? VintProg Работа с сетью в Delphi 3 01.12.2010 07:35
Как отправить файл на сайт через форму? xaknik Работа с сетью в Delphi 0 31.08.2010 21:02
Отправить , а потом принять пакет. casper123 Работа с сетью в Delphi 3 16.08.2008 02:56