ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

socks 4 получение IP
  #1  
Старый 23.01.2009, 15:42
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию socks 4 получение IP

Возникла необходимость написать програмку которая будет работать протоколом сокс 4.
Программа работает как сокс сервер, ток проблемма в том что когда она по протаколу сокс получает IP адрес, некоторые актеты в нем оказываться отрицательными. Не могу понять в чем причина. Вот кусок программы в котором проблемма
Код:
#include <winsock2.h>
#include <stdio.h>
#include <math.h>


#pragma comment(lib,"ws2_32")

#define SLISTEN_PORT         8080 //порт
#define LISTEN_BACKLOG       5   


//////***************************************************************************************************/////

DWORD  WINAPI SocketListen(LPVOID AS)
{
		SOCKET AcceptSocket = (SOCKET)AS;
		char auth[8];
			
		recv(AcceptSocket, auth, 8, 0);
		
		char c;
		do
		{
			recv(AcceptSocket, &c, 1, 0);
		}while(c);
			
	
		if(auth[0] != 0x04 || auth[1] != 0x01)
		{
	printf("#%d Auntification error\n", AcceptSocket);
			send(AcceptSocket, "\x00\x05b\xd3\xd1", 4, 0);
			closesocket(AcceptSocket);
			return false;
		}
			
		unsigned port = (auth[2] * 256) + auth[3];

		char ip[16];
		sprintf(ip, "%d.%d.%d.%d", auth[4], auth[5], auth[6], auth[7]);
	
		printf("#%d Connect %s:%d \n", AcceptSocket, ip, port);

		return true;
}


int main(int argc, char *argv[])
{

	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR)
		return printf("Error at WSAStartup()\n");


	SOCKET ListenSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
	if (ListenSocket == INVALID_SOCKET) 
	{
		printf("Error at socket(): %ld\n", WSAGetLastError());
		WSACleanup();
		return 0;
	}


	SOCKADDR_IN sa = {0};
	int len = sizeof(sa);

	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = INADDR_ANY;
	sa.sin_port = htons( SLISTEN_PORT );


	if( bind( ListenSocket, (sockaddr*)&sa, len ) == SOCKET_ERROR )
	{
		printf("bind() failed.\n");
		closesocket(ListenSocket);
		return 0;
	}

	if( listen( ListenSocket, LISTEN_BACKLOG ) == SOCKET_ERROR )
	{
		printf("Error listening on socket.\n");
		closesocket(ListenSocket);
		return 0;
	}

	printf("Server start at port: %d \nWaiting...\n",SLISTEN_PORT );
	SOCKET AcceptSocket;
	DWORD thID;

	while( (AcceptSocket = accept( ListenSocket, (sockaddr*)&sa, &len )) != -1 )
	{
printf("#%d Connection from %s:%d\n", AcceptSocket, inet_ntoa(sa.sin_addr), htons(sa.sin_port));
		CreateThread(0, 0, SocketListen, (LPVOID)AcceptSocket, 0, &thID); 
	}

	return 1;
}
Запускаю этот код, в браузере происую socks4 на 127.0.0.1:8080 , ввожу в браузере адрес наример ya.ru, в консоли должен высыититья IP яндекса тоесть 213.180.204.8 вместо этго выводиться -44.118.48.97
тоесть IP не верно получаться. В чем ошибка, вроде все соотвтствует протоколу socks4/

Вроде понятно обяснил)
 
Ответить с цитированием

  #2  
Старый 23.01.2009, 18:50
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме:
548128

Репутация: 104
По умолчанию

если всё соответствует протоколу, то проблема с типами
-44 как раз соответствует 213
char auth[8]; замени на unsigned char auth[8];
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Socks Service angel07 VPN, Proxy, Socks - Покупка, продажа 1 09.09.2006 19:20
Протокол Socks 5 Nova Чужие Статьи 3 13.07.2006 16:19
Socks mexcrack Болталка 3 31.07.2004 07:21
Java-чат и socks сервера Болталка 0 14.04.2004 20:10
Heplp with socks plzzz Guru.by Болталка 0 02.06.2003 05:47



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ