Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

24.06.2008, 10:57
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
кто работал с Socks4/5?
всем привет! есть кто работал с носками? нужно написать прогу которая бы использовала сокс-сервера, а опыта по сабжу нет  , язык - c/c++
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 24.06.2008 в 11:11..
|
|
|

24.06.2008, 12:06
|
|
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме: 3886281
Репутация:
929
|
|
Тебе надо тунель через нескольок носков или работа с 1 ?
http://www.cyberguru.ru/cpp-sources/network/csocksifiedsocket-ili-kak-ustanovit-konnekt-tcherez-socks4/5-proksi.html
Может поможет?
http://forum.sources.ru/index.php?showtopic=167593
Там линки на класс
Последний раз редактировалось spider-intruder; 24.06.2008 в 12:11..
|
|
|

24.06.2008, 13:16
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
http://ru.wikipedia.org/wiki/SOCKS - доки, тут все придельно просто
Вечером когда прийду домой скину функции для socks 4/5
|
|
|

24.06.2008, 14:37
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
Сообщение от nc.STRIEM
http://ru.wikipedia.org/wiki/SOCKS - доки, тут все придельно просто
Вечером когда прийду домой скину функции для socks 4/5
только не забудь 
__________________
 
snow white world wide
|
|
|

24.06.2008, 18:17
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
вот, когдато писал
socks4
Код:
SOCKET socks4(char *socks, int sockport, char *server, int srvport)
{
struct hostent *Ip = gethostbyname(socks);
if(Ip == NULL)
return 0;
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(sockport);
sa.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)Ip->h_addr)));
char pack[12];
pack[0] = 0x04;
pack[1] = 0x01;
pack[2] = srvport/256;
pack[3] = srvport%256;
Ip = gethostbyname(server);
if(Ip == NULL)
return 0;
char ip[16];
strcpy(ip, inet_ntoa(*((struct in_addr *)Ip->h_addr)));
char *p = ip;
int i, j = strlen(ip), k=4;
for(i = 0; i<j; i++)
if(ip[i] == '.')
{
ip[i] = 0;
pack[k] = atoi(p);
k++;
p = ip+i+1;
}
pack[k] = atoi(p);
pack[8] = rand()%255;
pack[9] = rand()%255;
pack[10] = rand()%255;
pack[11] = 0x00;
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s == SOCKET_ERROR)
return SOCKET_ERROR;
if(connect(s, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
return SOCKET_ERROR;
if(send(s, pack, 12, 0) == SOCKET_ERROR)
return SOCKET_ERROR;
i = recv(s, pack, 4, 0);
if(i == 0 || i == SOCKET_ERROR)
return SOCKET_ERROR;
if(pack[1] == 0x5a)
return s;
return 0;
}
socks5
Код:
SOCKET socks5(char *socks, int sockport, char *server, int srvport)
{
struct hostent *Ip = gethostbyname(socks);
if(Ip == NULL)
return 0;
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(sockport);
sa.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)Ip->h_addr)));
char pack[12];
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s == SOCKET_ERROR)
return SOCKET_ERROR;
if(connect(s, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
return SOCKET_ERROR;
if(send(s, pack, 3, 0) == SOCKET_ERROR)
return SOCKET_ERROR;
int i = recv(s, pack, 2, 0);
if(i == 0 || i == SOCKET_ERROR)
return SOCKET_ERROR;
if(pack[0] != 0x05 || pack[1] == 0xFF)
return 0;
pack[0] = 0x05;
pack[1] = 0x01;
pack[2] = 0x00;
pack[3] = 0x01;
Ip = gethostbyname(server);
if(Ip == NULL)
return 0;
char ip[16];
strcpy(ip, inet_ntoa(*((struct in_addr *)Ip->h_addr)));
int j = strlen(ip), k=4;
char *p = ip;
for(i = 0; i<j; i++)
if(ip[i] == '.')
{
ip[i] = 0;
pack[k] = atoi(p);
k++;
p = ip+i+1;
}
pack[k] = atoi(p);
pack[8] = srvport/256;
pack[9] = srvport%256;
if(send(s, pack, 10, 0) == SOCKET_ERROR)
return SOCKET_ERROR;
i = recv(s, pack, 10, 0);
if(i == 0 || i == SOCKET_ERROR)
return SOCKET_ERROR;
if(pack[0] == 0x05 && pack[1] == 0x00)
return s;
return 0;
}
|
|
|

24.06.2008, 18:30
|
|
Постоянный
Регистрация: 11.10.2007
Сообщений: 406
Провел на форуме: 7215020
Репутация:
1423
|
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|